Точечная взаимная информация с использованием spacy - PullRequest
0 голосов
/ 20 апреля 2019

Итак, я недавно пытался поиграть с НЛП и решил поработать над проектом, включающим Эмоциональный анализ .Я следил за этим конкретным исследованием, http://www.cse.yorku.ca/~aan/research/paper/Emo_WI10.pdf.

Но, ради этого, я не могу понять, как реализовать часть III E (PMI)).Я не понимаю, как построить мой корпус, или каков размер окна и как определить, что должно быть в них.Я использую Spacy , поэтому получить информацию для предыдущих частей было несложно.Будем весьма благодарны за любые объяснения или помощь.

1 Ответ

0 голосов
/ 23 апреля 2019

Многие методы НЛП для «смыслового» или «семантического» сходства основаны на предположении, что слова, встречающиеся в сходных местах, имеют сходные значения.Например, «Я ласкаю собаку» и «Я ласкаю кошку» - мы, возможно, предположим, что собаки и кошки имеют одинаковое значение.

spaCy использует так называемые вложения, которые обучаются на основе тысяч документов (обычно новостейстатьи или страницы википедии), используя ту же идею.Модели word2vec удаляют слово из предложения, просматривают слово до и после вновь созданного пробела и пытаются обучить модель правильному прогнозированию пропущенного слова.Результатом такой модели является вложение слова.

Вложения представляют собой числовое представление слов.Используя эти числовые представления, мы можем вычислить расстояние или сходство между двумя словами или предложениями.Обычный метод для этого - вычислить косинусное сходство двух векторов вложения.

Я не уверен насчет PMI с помощью spaCy, но вы можете рассчитать семантическое сходство в spaCy, используя метод, который я описал выше.

import spacy
nlp = spacy.load('en_core_web_lg')

doc1 = nlp('assisted living communities near me')
doc2 = nlp('list of assisted living facilities')
doc3 = nlp('free puppy and kitty adoption')
print(doc1.similarity(doc2))    # 0.8091
print(doc1.similarity(doc3))    # 0.4659
...