Найти самое ПОХОЖЕЕ предложение / строку для ссылки в текстовом корпусе в Python - PullRequest
0 голосов
/ 18 марта 2019

моя цель очень проста: у меня есть набор строк или предложение, и я хочу найти наиболее похожее в текстовом корпусе.


Например, у меня есть следующий текстовый корпус: «Передняя часть библиотеки украшена росписью« Слово Жизни », созданной художником Миллардом Шитсом.»

И я хотел бы найти подстроку оригинального корпуса, который наиболее похожto: "фасад библиотеки нарисован"

Итак, что я должен получить в результате: "Передняя часть библиотеки украшена"


Единственное, что я придумал, это разделить оригинальное предложение на подстроки переменной длины (например, на подстроки из 3,4,5 строк), а затем использовать что-то вроде string.similarity(substring) из модуля spacy pythonчтобы оценить сходство моего целевого текста со всеми подстроками, а затем сохранить ту, которая имеет наибольшее значение.

Это кажется довольно неэффективным методом.Что я могу сделать лучше?

1 Ответ

1 голос
/ 19 марта 2019

Вероятно, это работает в некоторой степени, но я бы не ожидал, что метод пространственного сходства (усреднение векторов слов) будет работать особенно хорошо.

Задача, над которой вы работаете, связана с обнаружением / идентификацией перефразирования и семантическим текстовым сходством, и существует множество уже существующих работ. Он часто используется для таких вещей, как обнаружение плагиата и оценка систем машинного перевода, поэтому вы можете найти больше подходов, посмотрев и в этих областях.

Если вы хотите что-то, что работает достаточно быстро из коробки для английского языка, одно предложение - это terp, который был разработан для оценки MT, но показал, что он хорошо работает для обнаружения перефразирования:

https://github.com/snover/terp

Большинство методов настроены для сравнения двух предложений, поэтому это не учитывает ваши потенциальные совпадения с частичными предложениями. Может быть, имеет смысл найти наиболее похожее предложение, а затем искать в этом предложении подстроки, которые лучше соответствуют предложению в целом?

...