在Quanteda中应用字典时,提取正面和负面的主要特征

时间:2019-06-24 08:55:04

标签: r dictionary sentiment-analysis quanteda

我有一个包含大约100k行的数据框,其中包含文本数据。使用Quanteda程序包,我应用了情感分析(Lexicoder词典)来最终计算情感分数。 对于附加的(更具定性的)分析步骤,我想提取一些主要特征(即字典中出现频率最高的否定词/阳性词),以检查话语是否受特定词驱动。

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 documentation,我不知道该如何实现-有办法吗? 我知道topfeatures,并且确实读过this question,但没有帮助。

1 个答案:

答案 0 :(得分:1)

在所有使用pattern参数的 quanteda 函数中,有效的模式类型是字符向量,列表和字典。因此,评估每种词典类别(我们也称为词典 key )中每个重要特征的最佳方法是在该词典上进行选择,然后使用topfeatures()

下面是使用内置data_corpus_irishbudget2010对象和Lexicoder情感词典的方法。

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 ,但默认情况下不区分大小写,因此也匹配 Ireland < / em>(此示例语料库中经常使用的术语)。这是“假阳性”匹配的一个示例,当使用通配符或使用诸如多义素和同形异义词的比率很高的英语(如英语)时,词典中总是存在风险。