我正在使用Quanteda,并试图计算语料库中特定单词的相对频率,该语料库是按日期和当事方组织的。但是,在将语料库转换为dfm并使用dfm_weight(dfmat,than =“textstat_frequency”)之后,我得到了大于1的分数。
下面是我的代码(我还拦截并清理了标记,而不是代码中的标记):
corp <- corpus(title_df, text_field = "text", meta = list(title_df[,-4]))
toks <- tokens(corp)
dfmat <- dfm(toks, verbose=TRUE)
dfm_rel_freq <- dfm_weight(dfmat, scheme = "prop")
rel_freq_all <- quanteda.textstats::textstat_frequency(dfm_rel_freq, groups = year)
# arrange by max frequency:
rel_freq_all %>% arrange(frequency) %>% tail()
feature
<chr>
frequency
<dbl>
rank
<dbl>
docfreq
<dbl>
group
<chr>
81093 pension 5.802529 1 117 2004
40971 pension 6.117154 1 97 1998
148372 peopl 6.430454 1 220 2014
65747 pension 6.721089 1 138 2002
53303 pension 7.871011 1 153 2000
74391 pension 8.153381 1 156 2003
6 rows发布于 2022-04-11 03:06:17
这是预期的行为:quanteda.textstats::textstat_frequency(x, groups = year)将在年度组内对dfm进行求和。因此,您来自dfm的比例正在被加总,它们可以超过1.0。
例如,如果您希望对组进行不同的操作,则不应该使用groups参数,然后使用一些dplyr操作,例如
library(dplyr)
quanteda.textstats::textstat_frequency(dfm_rel_freq) %>%
group_by(year) %>%
summarize(mean_rel_freq = mean(frequency))https://stackoverflow.com/questions/71821325
复制相似问题