gpt4 book ai didi

python - 使用 Gensim 中的 filter_extremes 按频率过滤 token

转载 作者:行者123 更新时间:2023-12-05 00:40:00 25 4
gpt4 key购买 nike

我正在尝试使用 Gensim (https://radimrehurek.com/gensim/corpora/dictionary.html) 中的 filter_extremes 函数按频率过滤掉 token 。具体来说,我有兴趣过滤掉出现在“比 no_below 文档频繁”和“比 no_above 文档更频繁”中出现的单词。

id2word_ = corpora.Dictionary(texts)
print(len(id2word_))
id2word_.filter_extremes(no_above = 0.600)
print(len(id2word_))

第一个打印语句给出 11918,第二个打印语句给出 3567。但是,如果我执行以下操作:

id2word_ = corpora.Dictionary(texts)
print(len(id2word_))
id2word_.filter_extremes(no_below = 0.599)
print(len(id2word_))

第一个打印语句给出 11918(如预期),第二个给出 11406。不应该 id2word_.filter_extremes(no_below = 0.599)id2word_.filter_extremes(no_above = 0.600) 总字数加起来是多少?但是,11406 + 3567 > 11918,那么这个和怎么会超过语料库中的词数呢?这是没有意义的,因为根据文档中的解释,过滤器应该涵盖不重叠的单词。

如果您有任何想法,我将非常感谢您的意见!谢谢!

最佳答案

根据定义:

no_below (int, optional) – Keep tokens which are contained in at least no_below 
documents.

no_above (float, optional) – Keep tokens which are contained in no more than
no_above documents (fraction of total corpus size, not an absolute number).

no_below 是一个 int 值,它表示一个阈值,用于过滤掉文档中高于特定数量的标记的出现次数。例如使用 no_below 过滤掉出现次数少于 10 次的单词。

相反,no_above 不是一个 int 而是一个 float ,表示总语料库大小的派系。例如使用 no_above 过滤掉出现在所有文档中超过 10% 的单词。

有点奇怪,no_below 和 no_above 不代表同一个单位,因此会造成混淆。

希望这能回答你的问题。

关于python - 使用 Gensim 中的 filter_extremes 按频率过滤 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51634656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com