Как запустить функцию подобия предложений spaCy для массива строк, чтобы получить массив баллов? - PullRequest
0 голосов
/ 10 мая 2019

Я должен сравнить один пространственный документ со списком пространственных документов и хочу получить список показателей сходства в качестве выходных данных. Конечно, я могу сделать это, используя цикл for, но я ищу какое-то оптимизированное решение, такое как numpy предложения для трансляции и т. Д.

У меня есть один документ против списка документов:

oneDoc = 'Hello, I want to be compared with a list of documents'
listDocs = ["I'm the first one", "I'm the second one"]

spaCy предлагает нам функцию сходства документов:

oneDoc = nlp(oneDoc)
listDocs = nlp(listDocs)
similarity_score = np.zeros(len(listDocs))
for i, doc in enumerate(listDocs):
    similarity_score[i] = oneDoc.similarity(doc)

Поскольку один документ сравнивается со списком из двух документов, оценка сходства будет выглядеть следующим образом: [0.7, 0.8]

Я ищу способ избежать этого для цикла. Другими словами, я хочу векторизовать эту функцию.

1 Ответ

0 голосов
/ 14 мая 2019

Используйте nlp.pipe для обработки всех ваших текстовых документов. Возьмите вложения .vector с каждого документа. Примените функцию парного расстояния с косинусом в качестве метрики для создания матрицы.

...