Сходство между двумя списками документов - PullRequest
0 голосов
/ 15 ноября 2018

Мне нужно найти сходство между двумя списками коротких текстов в Python.Тексты могут быть длиной 1-4 слова.Длина списков может составлять 10 КБ каждый.Я не нашел, как сделать это эффективно в spaCy.Может быть, другие пакеты могут сделать это?Я предполагаю, что слова представлены вектором (300d), но любые другие варианты тоже в порядке.Эта задача может быть выполнена в цикле, но наверняка должен быть более эффективный способ.Эта задача подходит для пакетов TensorFlow, pyTorch и аналогичных, но я не знаком с деталями этих пакетов.

1 Ответ

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

Я думаю, что ваш вопрос неоднозначен. Возможно, вы захотите получить единую оценку сходства для сходства среднего по списку 1 со средним по списку 2. Я предполагаю, что вы хотите получить оценку сходства для каждой комбинации элементов.из двух списков.Для 10K элементов в списке это даст 10K pow 2 = 100M очков сходства.

import spacy
spacyModel = spacy.load('en')

list1 = ["hello, example 1", "right, second example"]
list2 = ["hello, example 1 in the second list", "And now for something completely different"]

list1SpacyDocs = [spacyModel(x) for x in list1]
list2SpacyDocs = [spacyModel(x) for x in list2]

similarityMatrix = [[x.similarity(y) for x in list1SpacyDocs] for y in list2SpacyDocs]

print(similarityMatrix)
[[0.8537950408055295, 0.8852732956832498], [0.5802435148988874, 0.7643245611465626]]
...