使用quanteda计算语料库前n个特征稀疏占比的问题咨询
问题解决方法
错误原因
topfeatures() 函数返回的是按词频排序的特征词与对应词频的命名数值向量,并非dfm对象,因此直接传入sparsity()会触发类型不支持的报错。如果你在去停用词步骤后直接调用sparsity(),计算的是整个dfm所有特征的稀疏占比,自然没法匹配你要统计top n特征稀疏度的需求。
解决思路
先拿到去停用词后的全量dfm,提取top n特征的名称,再对原dfm做特征筛选,仅保留这部分top n特征后再计算稀疏度即可。
修正后代码
# 第一步:预处理得到去停用词后的全量dfm dfm_cleaned <- text %>% tokens(remove_numbers = TRUE, remove_punct = TRUE, remove_symbols = TRUE) %>% tokens_ngrams(n = 1:3) %>% dfm() %>% dfm_remove(stopwords("en")) # 第二步:提取top 3000特征的名称 top_3000_names <- names(topfeatures(dfm_cleaned, n = 3000)) # 第三步:仅保留dfm中的top 3000特征,再计算稀疏度 top_n_sparsity <- dfm_keep(dfm_cleaned, pattern = top_3000_names) %>% sparsity()
内容的提问来源于stack exchange,提问作者NHH
相关产品推荐
相关产品推荐

