Большинство приложений текстовых векторов извлекают выгоду из векторов, фиксирующих «существенное значение» текста, ** без * учета отклонений в выборе слов.
То есть считается признаком, а не недостатком, если две совершенно разные формулировки с одинаковым значением имеют почти одинаковый вектор.(Или, если какая-то мера сходства показывает, что они полностью схожи.)
Например, чтобы придумать пример, аналогичный вашему, рассмотрим две фразы:
"медицинское страхование для брата" "медицинская страховка для братьев и сестер "
Нет повторного использования слов, но, вероятно, подразумеваемое значение то же самое - поэтому хорошая векторизация текста для типичных целей создаст очень похожие векторы.И мера подобия, использующая эти векторы или иначе использующая слова / слова-векторы в качестве входных данных, будет указывать на очень высокое сходство.
Но из ваших уточняющих ответов кажется, что вы действительно хотите более поверхностную меру "сходства".Вы хотели бы показатель, который показывает, когда определенные фразы показывают разнообразие / контраст в их формулировке.(И, в частности, вы уже знаете о других факторах, например о том, как они были созданы вручную, что группы этих фраз семантически связаны.)
То, что вы хотите, чтобы эта мера сходства показала, - это на самом деле поведение многих проектов.использование текстовых векторов будет рассматривать сбой векторов.Таким образом, семантические методы, подобные тем, которые используются в Word2Vec, векторах абзацев («Doc2Vec») и т. Д., Вероятно, являются неподходящим инструментом для вашей цели.
Вероятно, вы могли бы преуспеть с более простой мерой, основанной только на словах или, возможно, символах-н-граммах текстов.
Например, для двух текстов A и B вы можете просто подсчитать количество общих слов (которые появляются как в A и B), так и разделить на общее количество уникальных слов в A и B,чтобы получить число от 0 до 1,0 «сходство выбора слов».
И, если рассматривать новый текст по сравнению с набором предыдущих текстов, если его среднее сходство с предыдущими текстами низкое, это будет «хорошо» для ваших целей.
Вместо того, чтобы просто слова, вы могли бы также использовать все n-символьные подстроки ("n-граммы") ваших текстов - которые могли бы помочь лучше выделить различия в словоформах или общих опечатках, которые также могут бытьполезные отклонения для ваших целей.
В общем, я бы посмотрел на функциональность векторизации текста scikit-learn для идей:
https://scikit -learn.org / stable /модули / feature_extraction.html # текст-функция экстракция