AttributeError: у объекта 'FreqDist' нет атрибута 'viewitems' - PullRequest
0 голосов
/ 06 декабря 2018

Я довольно новичок в 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'

Любая идея, что следует исправить здесь или если естьальтернативный способ получения частоты при использовании коллокаций?

1 Ответ

0 голосов
/ 06 декабря 2018

Нашли альтернативу.Вместо использования

a = finder.ngram_fd.viewitems ()

я использовал:

a = finder.ngram_fd.items()

Так как я также хотел отсортировать по частоте, я использовал сортировку

(finder.ngram_fd.items (), ключ = лямбда x: x [1], reverse = True).

Это даст мне список, отсортированный по частоте.2-й элемент в кортеже используется для сравнения, а reverse = True - для сортировки списка в порядке убывания.

...