python - AttributeError:“FreqDist”对象没有属性“viewitems”
问题描述
我对 python 和 NLTK 还很陌生。根据此处的教程,我正在生成在 PMI 上测量的二元组。我想获得文本中生成的二元组的频率。这里的这个问题建议使用
finder.ngram_fd.viewitems()
我尝试使用搭配:
import string
import codecs
import nltk
from nltk.collocations import *
bigram_measures = nltk.collocations.BigramAssocMeasures()
data = ''
filename = input("Enter file name\n")
with open (filename, "r", encoding="utf8") as myfile:
for line in myfile:
data += line
tokens = nltk.wordpunct_tokenize(data)
finder = BigramCollocationFinder.from_words(tokens)
finder.apply_freq_filter(5)
scored = finder.score_ngrams(bigram_measures.pmi)
a = finder.ngram_fd.viewitems()
最后一行给出了一个错误:
AttributeError:“FreqDist”对象没有属性“viewitems”
知道这里应该纠正什么,或者在使用搭配时是否有另一种获得频率的方法?
解决方案
找到了替代方案。而不是使用
a = finder.ngram_fd.viewitems()
我用过:
a = finder.ngram_fd.items()
由于我也想按频率排序,所以我使用了
排序(finder.ngram_fd.items(),key=lambda x: x[1],reverse=True)。
这会给我一个按频率排序的列表。元组中的第二个元素用于比较,reverse=True 是按降序对列表进行排序。
推荐阅读
- openlayers - openlayers 5.3 和 heatmap-layer 的问题(瓷砖看起来有缺陷)
- javascript - 在 ASP.Net Core 2.x 中使用 ES6 模块导入运行 javascript 文件
- user-interface - 有没有办法创建一个带有固定在右上角的 domino-ui 组件的聊天框?
- android-layout - 微调器被衬垫布局的背景隐藏
- performance - 为什么返回 Springboot ResponseEntitty 这么慢?
- sharepoint - 使用 Sharepoint Flow 从 Office 文档中提取关键字
- javascript - 将元素与另一个数组匹配的数组过滤对象(具有键“id”)
- testing - 如何从 testcafe 框架自定义 testRunner?
- java - 即使发送方使用修改后的公钥加密数据,接收方也能够使用私钥解密数据。这怎么可能?
- node.js - 暴露在 docker 上运行的节点服务器不起作用