Я изучаю обработку естественного языка по теме Bigram. На этом этапе у меня возникают трудности с вычислениями на Python, но я стараюсь.
Я буду использовать этот корпус, который не был подвергнут токенизации, в качестве основного набора необработанных данных. Я могу генерировать результаты биграмм, используя модуль nltk. Тем не менее, мой вопрос заключается в том, как вычислить в Python, чтобы генерировать биграммы, содержащие более двух конкретных слов. Более конкретно, я хочу найти все биграммы, доступные в corpus_A, которые содержат слова из word_of_interest.
corpus = ["он не так легко сдается, но чувствует себя одиноким все время, когда у него сильный ум, и он всегда встречает новых друзей, чтобы получить мотивацию и вдохновение к успеху, он твердо стоит за академическую честность, когда он был молодым, он надеется, что Санта подарит ему больше друзей после того, как он станет взрослым, и он перестанет желать, чтобы Санта-Клаус приехал сюда. Он и его друг всегда едят вне дома, но перед едой они чистят руку, чтобы удалить песок "]
word_of_interest = ['santa', 'and', 'hand', 'stand', 'handy', 'sand']
Я хочу получить биграмму для каждого отдельного слова из списка word_of_interest. Далее я хочу получить частоту для каждой доступной биграммы в зависимости от их появления в corpus_A. С доступной частотой, я хочу отсортировать и распечатать биграммы, основываясь на их вероятности от наивысшей к меньшей.
Я опробовал коды из онлайнового поиска, но это не дает мне вывода. Коды указаны ниже:
for i in corpus:
bigrams_i = BigramCollocationFinder.from_words(corpus, window_size=5)
bigram_j = lambda i[x] not in i
x += 1
print(bigram_j)
К сожалению, результат не вернул то, что я планирую достичь.
Пожалуйста, посоветуйте мне. Вывод, который мне нужен, будет иметь биграмму с конкретными словами из word_of_interest и их вероятностями, отсортированными, как показано ниже.
[((santa, clauss), 0.89), ((he, and), 0.67), ((stands, firm), 0.34))]