如何正确统计Quanteda整个语料库中的Types?结果差异求解
Quanteda语料库全局types统计问题解答
哪种方法正确?
取决于你是否需要区分单词的大小写:
- 若要统计区分大小写的唯一词形,使用
length(types(corp_uk_tokens)) - 若要统计不区分大小写的唯一词形,使用
nfeat(dfm(corp_uk_tokens)),或者先对tokens做大小写转换再统计:length(types(tokens_tolower(corp_uk_tokens)))
结果不同的原因
两者的核心差异来自quanteda的默认参数设置:
tokens()函数默认不做大小写转换(tolower=FALSE),因此types(corp_uk_tokens)会把大小写不同的词视为不同类型(比如"UK"和"uk"算两个独立types)。dfm()函数默认会自动将所有词转为小写(tolower=TRUE),因此生成的文档特征矩阵会把大小写不同的词合并为同一个特征,最终统计的唯一特征数更少。
你可以运行以下代码验证这个差异:
# 查看大小写不同的词差异 setdiff(types(corp_uk_tokens), featnames(dfm(corp_uk_tokens, tolower=FALSE))) # 此时tolower=FALSE的dfm特征数和types数完全一致 nfeat(dfm(corp_uk_tokens, tolower=FALSE)) == length(types(corp_uk_tokens))
内容的提问来源于stack exchange,提问作者Gabriel
相关产品推荐
相关产品推荐

