Как составить таблицу условного распределения частот для коллокаций в текстах - PullRequest
1 голос
/ 30 октября 2019

У меня есть несколько текстов, для которых я нашел словосочетания, и теперь я хотел бы создать таблицу, показывающую, сколько раз каждое словосочетание появляется в каждом тексте корпуса.

Когда я генерирую таблицу илиграфик из ConditionalFreqDist, он показывает только 1 совпадение для каждого словосочетания в каждом тексте.

Я новичок в Python и, по-видимому, что-то не так ... Пожалуйста, помогите.

Вот как я получаю словосочетания:

>>> import nltk
>>> from nltk.corpus import PlaintextCorpusReader
>>> eng_corpus_root = 'D:\Corpus\EN'
>>> eng_corpus = PlaintextCorpusReader(eng_corpus_root, '.*')
>>> # Below: this is the script that imports corpora for 4 languages from a local folder
>>> from Import4Corpuses3 import *
>>> import nltk
>>> # Below: tengc_low is the variable for English corpus (60 texts) as text objects, all letters changed to lowercase
>>> tengc_low.collocation_list()
['hong kong', 'united states', 'getty images', 'european union', 'prime minister', 'northern ireland', 'boris johnson', 'cape dorset', 'extinction rebellion', 'extradition bill', 'cease fire', 'islamic state', 'recep tayyip', 'turkish backed', 'vice president', 'mike pence', 'tayyip erdogan', 'twitter com', 'pic twitter', 'anthony kwan']

Вот как я пытаюсь получить свой ConditionalFreqDist для словосочетаний и текстовых имен:

>>> cfd = nltk.ConditionalFreqDist(
    (textname, collocation)
    for textname in eng_corpus.fileids()
    for collocation in Text(eng_corpus.words()).collocation_list(num=100))

Затем я получаю, как сказано, «1«для каждого словосочетания в каждом тексте.

Как получить правильное распределение?

Буду благодарен за любые советы.

...