使用Chi2和Quanteda进行特征提取

时间:2017-06-01 15:05:25

标签: r matrix quanteda

我有一个具有这种结构的数据帧df:

Rank Review
5    good film
8    very good film
..

然后我尝试使用quanteda包创建DocumentTermMatris:

mydfm <- dfm(df$Review, remove = stopwords("english"), stem = TRUE)

我想如何计算CHi2值与文档的每个特征(术语),以便根据Chi2值提取最佳特征

你能帮我解决这个问题吗?

编辑:

head(mydfm[, 5:10])
Document-feature matrix of: 63,023 documents, 6 features (92.3% sparse).
(showing first 6 documents and first 6 features)


> head(mydfm[, 5:10])
Document-feature matrix of: 63,023 documents, 6 features (92.3% sparse).
(showing first 6 documents and first 6 features)
       features
docs    bon accueil conseillèr efficac écout répond
  text1   0       0          0       0     0      0
  text2   1       1          1       1     1      1
  text3   0       0          0       0     0      0
  text4   0       0          0       0     0      0
  text5   0       0          1       0     0      0
  text6   0       0          0       0     1      0
  ...
  text60300 0     0          1       1     1      1

这里我有我的dfm矩阵,然后我创建了我的tf-idf矩阵:

tfidf <- tfidf(mydfm)[, 5:10]

我想确定这些功能和文档之间的chi2值(这里我有60300个文档):

textstat_keyness(mydfm, target = 2)

但是,由于我有60300目标,我不知道如何自动执行此操作。 我在Quanteda手册中看到dfm函数中的group选项可以解决这个问题,但我不知道如何去做。 :(

编辑2:

等级评论     10总是好的     一部好电影     像往常一样罚款

在这里,我尝试使用dfm:

对文档进行分组
 mydfm <- dfm(Review, remove = stopwords("english"), stem = TRUE, groups = Rank)

但它未能将文件分组

请帮我解决这个问题

谢谢

1 个答案:

答案 0 :(得分:1)

请参阅?textstat_keyness。默认度量是卡方。您可以更改target参数,以针对所有其他频率设置特定文档的频率。 e.g。

textstat_keyness(mydfm, target = 1)

针对所有其他人的频率的第一份文件,或

textstat_keyness(mydfm, target = 2)

第二次对抗所有其他人等等。

如果要比较分组文档的频率类别,则需要在groups =中使用dfm()选项作为提供的变量或在docvars中使用。请参阅?textstat_keyness中的示例。