У меня есть два текстовых файла, первый содержит одно предложение в каждой строке, а второй содержит одно ключевое слово в каждой строке, например:
Firstword
Secondword
Thirdword
...
Я хочу использовать PMI, чтобы рассчитать, насколько более или менее вероятно, что некоторые ключевые слова будут встречаться в моем текстовом файле.
Вот что я сделал:
from nltk.collocations import BigramCollocationFinder, BigramAssocMeasures
from nltk.corpus import stopwords
import string
from collections import Counter
import re
with open("./keywords.txt", encoding='utf8') as thebook:
keywords = set(word.lower().strip(string.punctuation) for word in thebook.read().split())
words = re.findall(r'\w+', open('sentence_file.txt').read().lower())
if words in keywords :
finder = BigramCollocationFinder.from_words(words)
bgm = BigramAssocMeasures()
score = bgm.pmi
collocations = {'_'.join(bigram): pmi for bigram, pmi in finder.score_ngrams(score)}
collocations
Это дает мне следующую ошибку:
---> 12 if words in keywords :
13 finder = BigramCollocationFinder.from_words(words)
14 bgm = BigramAssocMeasures()
TypeError: unhashable type: 'list''
Обратите внимание, что программа работала нормально, когда я тестировал ее на одном предложении и pmi между ее собственными словами. У меня больше проблем с добавлением двух файлов. Любая помощь?