为何NLTK的Text.dispersion_plot()显示文本中不存在的词的出现情况?
NLTK dispersion_plot显示不存在词汇的问题解决
问题根源
你碰到的是NLTK旧版本的已知bug:当给dispersion_plot传入文本里没有的词汇时,方法内部的位置查找逻辑出了问题,会错误地在整个文本范围内铺满标记,而不是完全不显示该词汇的点。
先确认词汇是否真的不存在
可以用这段代码验证:
# 检查词汇是否在text4中 print("asfasfasaf" in text4) # 统计词汇出现次数 print(text4.count("asfasfasaf"))
如果输出是False和0,就说明词汇确实不在文本里,问题就是版本bug导致的。
解决办法
- 升级NLTK到最新版:这个bug在后续版本已经被修复,执行命令升级:
pip install --upgrade nltk
- 手动过滤无效词汇:如果暂时没法升级,先筛出文本里存在的词汇再绘图:
# 筛选出text4中存在的词汇 valid_words = [word for word in ["citizens", 'democracy', "freedom", "duties", "America", "war","asfasfasaf"] if word in text4] # 只绘制有效词汇的分布 text4.dispersion_plot(valid_words)
内容的提问来源于stack exchange,提问作者Diego Garzon
相关产品推荐
相关产品推荐

