首页 > 解决方案 > 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”

知道这里应该纠正什么,或者在使用搭配时是否有另一种获得频率的方法?

标签: pythonattributesnltkattributeerror

解决方案


找到了替代方案。而不是使用

a = finder.ngram_fd.viewitems()

我用过:

a = finder.ngram_fd.items()

由于我也想按频率排序,所以我使用了

排序(finder.ngram_fd.items(),key=lambda x: x[1],reverse=True)。

这会给我一个按频率排序的列表。元组中的第二个元素用于比较,reverse=True 是按降序对列表进行排序。


推荐阅读