Извлекайте лучшие положительные и отрицательные черты при применении словаря в Quanteda - PullRequest
2 голосов
/ 24 июня 2019

У меня есть фрейм данных с около 100k строк, которые содержат текстовые данные. Используя пакет quanteda, я применяю анализ настроения (словарь лексикодера), чтобы в конечном итоге вычислить оценку настроения. Для дополнительного - более качественного - этапа анализа я хотел бы извлечь главные характеристики (то есть отрицательные / положительные слова из словаря, которые встречаются в моих данных чаще всего), чтобы проверить, определяется ли дискурс определенными словами.

my_corpus <- corpus(my_df, docid_field = "ID", text_field = "my_text", metacorpus = NULL, compress = FALSE)
sentiment_corp <- dfm(my_corpus, dictionary = data_dictionary_LSD2015)

Однако, просматривая документацию quanteda , я не мог понять, как этого добиться - есть ли способ? Мне известно о topfeatures, и я прочитал этот вопрос , но это не помогло.

1 Ответ

1 голос
/ 24 июня 2019

Во всех quanteda функциях, которые принимают аргумент pattern, допустимыми типами шаблонов являются векторы символов, списки и словари.Таким образом, лучший способ оценить каждую из главных функций в каждой категории словаря (то, что мы также называем словарем ключ ) - это выбрать в этом словаре и затем использовать topfeatures().

.как это сделать с помощью встроенного объекта data_corpus_irishbudget2010, например, с помощью словаря настроений лексикодера.

library("quanteda")
## Package version: 1.4.3

# tokenize and select just the dictionary value matches
toks <- tokens(data_corpus_irishbudget2010) %>%
  tokens_select(pattern = data_dictionary_LSD2015)
lapply(toks[1:5], head)
## $`Lenihan, Brian (FF)`
## [1] "severe"        "distress"      "difficulties"  "recovery"     
## [5] "benefit"       "understanding"
## 
## $`Bruton, Richard (FG)`
## [1] "failed"   "warnings" "sucking"  "losses"   "debt"     "hurt"    
## 
## $`Burton, Joan (LAB)`
## [1] "remarkable" "consensus"  "Ireland"    "opposition" "knife"     
## [6] "dispute"   
## 
## $`Morgan, Arthur (SF)`
## [1] "worst"     "worst"     "well"      "corrupt"   "golden"    "protected"
## 
## $`Cowen, Brian (FF)`
## [1] "challenge"      "succeeding"     "challenge"      "oppose"        
## [5] "responsibility" "support"

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

# top positive matches
tokens_select(toks, pattern = data_dictionary_LSD2015["positive"]) %>%
  dfm() %>%
  topfeatures()
##    benefit    support   recovery       fair     create confidence 
##         68         52         44         41         39         37 
##    provide       well     credit       help 
##         36         33         31         29

А для отрицательного:

# top negative matches
tokens_select(toks, pattern = data_dictionary_LSD2015[["neagative"]]) %>%
  dfm() %>%
  topfeatures()
##    ireland    benefit        not    support     crisis   recovery 
##         79         68         52         52         47         44 
##       fair     create    deficit confidence 
##         41         39         38         37

Почему «Ирландия» является отрицательным совпадением?Поскольку LSD2015 включает в себя ir* в качестве отрицательного слова, которое должно соответствовать ire и ireful , но с сопоставлением по умолчанию без учета регистра, также соответствует Ирландия (aтермин, часто используемый в этом примере корпус).Это пример «ложноположительного» совпадения, что всегда представляет риск в словарях при использовании подстановочных знаков или при использовании языка, такого как английский, с очень высокой частотой многозначностей и гомографий.

...