本文仅为作者自学之用,系统为macOS,不保证信息准确。
使用gensim对一系列文章做处理,从分词结果制作词典。但是文章由于不是随机抓取,可能有聚类,导致某些词语以不恰当的频率出现过多次。又不敢直接过滤掉频率超过50%的词,那该怎么做呢?
经过一番查找并没有发现gensim的corpora库中有直接显示词频最高词的功能,于是只能自己利用它提供的方法来做了,代码如下:
from gensim import corpora
dictionary = corpora.Dictionary.load('/dir/to/your.dict')
# print(dictionary.dfs)
# print(type(dictionary.dfs))
result = sorted(dictionary.dfs.items(), key=lambda d: d[1])
result.reverse()
# print(dictionary)
biao = dictionary.token2id
biao_new = {v : k for k, v in biao.items()}
for x in range(20):
print(biao_new[result[x][0]] + ": " + str(result[x][1]))
其中,使用
biao = dictionary.token2id
biao_new = {v : k for k, v in biao.items()}
方法的原因是,不知为何,id2token
在我这里返回的是一个空dict格式的文件。所以只有使用token2id
后翻转词典了。
这样的话,显示的结果就大致如图所示
从图中可以看书,前几个词明显属于对文章内容造成污染的词汇,应该加以限制或去除。去除的方式就是加进jieba分词的停用词文件,那么分词的结果中便不会再有该词汇出现了。