Анализ тональности для аккуратного текста в R

Я пытаюсь выполнить анализ настроений в R. Я хочу использовать лексику afinn или bing, но проблема в том, что я не могу токенизировать слова.

Вот слова, для которых мне нужны сантименты:

sentiment_words

Итак, есть 6 слов, для которых я хочу выразить мнение: Pass Fail Not Ready Out of Business Pass w / conditions No entry

Как использовать любой из лексиконов, чтобы определить тональность этих слов

Вот мой код:

d<- as.data.frame(data$Results)
d<- as.data.frame(d[1:2000,])

colnames(d) <- "text"



#Making preprocessed file for raw data
preprocess<-data.frame(text=sapply(tweet_corpus_clean, identity), 
                       stringsAsFactors=F)

# tokenize
tokens <- data_frame(text = preprocess$text) %>% unnest_tokens(word, text)

При запуске я получаю:

senti_new

Потому что для лексиконов, чтобы определять настроения, в каждой строке должен быть один токен.

Так что мне пришлось объединить эти слова вместе. Теперь, когда я использую afinn, он не может понять, что такое внебизнес

tokens <- data_frame(text = preprocess$text) %>% unnest_tokens(word, text)


contributions = tokens %>%ungroup()%>%
  inner_join(get_sentiments("afinn"), by = "word") %>%
  group_by(word) %>%
  summarize(score = as.numeric(sum(score * n) / sum(n))) %>%
  arrange(desc(sentiment))

как мне провести анализ тональности этих 6 типов слов?


person gaurav v    schedule 03.12.2017    source источник


Ответы (1)


Хммм, мне это не кажется проблемой анализа настроений. У вас есть шесть слов / фраз, о которых вы точно знаете, и вы знаете, что они означают в вашем контексте. Похоже, вы просто хотите присвоить этим словам / фразам баллы или даже просто уровни фактора.

Вы можете сделать что-то вроде того, что я показываю здесь, где вы как аналитик решаете, какой балл должна иметь каждая из ваших фраз. Здесь scores - это фрейм данных, который вы, как аналитик, конструируете с разумно выбранными оценками для каждого варианта текста, а df - это данные, которые вы анализируете.

library(dplyr)

scores <- data_frame(text = c("pass",
                              "fail",
                              "not ready",
                              "out of business",
                              "pass w/conditions",
                              "no entry"),
                     score = c(3, -1, 0, 0, 2, 1))

scores
#> # A tibble: 6 x 2
#>   text              score
#>   <chr>             <dbl>
#> 1 pass               3.00
#> 2 fail              -1.00
#> 3 not ready          0   
#> 4 out of business    0   
#> 5 pass w/conditions  2.00
#> 6 no entry           1.00

df <- data_frame(text = c("pass",
                          "pass",
                          "fail",
                          "not ready",
                          "out of business",
                          "no entry",
                          "fail",
                          "pass w/conditions",
                          "fail",
                          "no entry",
                          "pass w/conditions"))

df %>%
  left_join(scores)
#> Joining, by = "text"
#> # A tibble: 11 x 2
#>    text              score
#>    <chr>             <dbl>
#>  1 pass               3.00
#>  2 pass               3.00
#>  3 fail              -1.00
#>  4 not ready          0   
#>  5 out of business    0   
#>  6 no entry           1.00
#>  7 fail              -1.00
#>  8 pass w/conditions  2.00
#>  9 fail              -1.00
#> 10 no entry           1.00
#> 11 pass w/conditions  2.00

Анализ тональности лучше всего подходит там, где у вас есть большой объем неструктурированного текста, из которого вам нужно извлечь информацию. Здесь у вас всего шесть текстовых элементов, и вы можете использовать то, что вы знаете о своей предметной области и контексте, для выставления оценок.

person Julia Silge    schedule 05.12.2017