我有一个具有这种结构的数据帧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)
但它未能将文件分组
请帮我解决这个问题
谢谢
答案 0 :(得分:1)
请参阅?textstat_keyness
。默认度量是卡方。您可以更改target
参数,以针对所有其他频率设置特定文档的频率。 e.g。
textstat_keyness(mydfm, target = 1)
针对所有其他人的频率的第一份文件,或
textstat_keyness(mydfm, target = 2)
第二次对抗所有其他人等等。
如果要比较分组文档的频率类别,则需要在groups =
中使用dfm()
选项作为提供的变量或在docvars中使用。请参阅?textstat_keyness
中的示例。