AttributeError:“ FreqDist”对象没有属性“ viewitems”

时间:2018-12-06 08:46:21

标签: python attributes nltk attributeerror

我是python和NLTK的新手。我正在根据教程here在PMI上生成衡量标准。我想在文本中获取生成的二元组的频率。 This question在这里建议使用

  

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”

您知道在这里应该更正什么吗?或者使用并置时是否还有其他方法来获得频率?

1 个答案:

答案 0 :(得分:0)

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

  

a = finder.ngram_fd.viewitems()

我用过:

  

a = finder.ngram_fd.items()

由于我也想按频率排序,因此我使用了

  

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

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