Сходство в Пространстве - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь понять, как работает сходство в Spacy.Я пытался использовать речь Мелании Трамп и речь Мишель Обамы , чтобы увидеть, насколько они похожи.

Это мой код.

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

file1 = open("melania.txt").read().decode('ascii', 'ignore')
file2 = open("michelle.txt").read().decode('ascii', 'ignore')

doc1 = nlp(unicode(file1))
doc2 = nlp(unicode(file2))
print doc1.similarity(doc2)

Я получаю оценку сходства 0,9951584208511974.Этот показатель сходства выглядит очень высоким для меня.Это правильно?Я что-то не так делаю?

1 Ответ

0 голосов
/ 24 ноября 2018

По умолчанию spaCy вычисляет косинусное сходство. Сходство определяется путем сравнения векторов слов или вложений слов, многомерных смысловых представлений слова.

It возвращает return (numpy.dot(self.vector, other.vector) / (self_norm * other_norm))

text1 = 'How can I end violence?'
text2 = 'What should I do to be a peaceful?'
doc1 = nlp(text1)
doc2 = nlp(text2)
print("spaCy :", doc1.similarity(doc2))

print(np.dot(doc1.vector, doc2.vector) / (np.linalg.norm(doc1.vector) * np.linalg.norm(doc2.vector)))

Вывод:

spaCy : 0.916553147896471
0.9165532

Похоже, что метод spaCy .vector создал векторы. Документация говорит, что модели spaCy обучаются по векторам GloVe.

...