Вычисление показателя сходства для набора предложений - PullRequest
0 голосов
/ 26 января 2019

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

Вот пример для запроса о страховом медицинском страховании

Плохой набор высказываний

  • Застрахована ли моя дочь?
  • Застрахован ли мой сын от медицинской страховки?
  • Мой сын будет застрахован?

Достойный набор высказываний

  • Как я могу узнать, есть ли у нас страховое покрытие для всей семьи?

  • Подробнее о праве на медицинское страхование

  • Есть ли документ, в котором указывается, кто защищен нашим полисом медицинского страхования?

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

Я попытался поиграть с несколькими уроками по doc2vec, но я чувствую, что что-то упустил. Я постоянно вижу такие вещи:

  • Обучите набор данных, а затем измерьте сходство нового предложения с вашим набором данных
  • Измерьте сходство между двумя предложениями

Мне нужно иметь массив предложений и понять, насколько они похожи друг на друга.

Какой-нибудь совет по достижению этого?

Отвечая на некоторые вопросы:

  1. Что делает плохие высказывания плохими? Сами высказывания не плохие, это отсутствие разнообразия между ними. Если большая часть обучения была похожа на «плохой» набор, то реальные высказывания пользователя с большим разнообразием не будут распознаваться правильно.
  2. Вы пытаетесь открыть новые намерения? Нет, это для предварительной подготовки, чтобы повысить ее эффективность.
  3. Почему плохие высказывания имеют высокие оценки сходства, а приличные высказывания имеют низкие оценки сходства? Это гипотеза. Я знаю, как различаются реальные высказывания пользователей, и я обнаружил, что мои тренеры падают в колею при обучении, спрашивая о том же и не видя хороших результатов точности. Улучшение разнообразия высказываний приводит к большей точности.
  4. Что я буду делать с этой информацией? Я воспользуюсь им для оценки качества обучения намерения, чтобы определить, возможно ли потребуется дополнительное обучение. В будущем мы можем создавать инструменты в реальном времени, так как добавляются высказывания, чтобы инструкторы знали, слишком ли они повторяются.

1 Ответ

0 голосов
/ 28 января 2019

Большинство приложений текстовых векторов извлекают выгоду из векторов, фиксирующих «существенное значение» текста, ** без * учета отклонений в выборе слов.

То есть считается признаком, а не недостатком, если две совершенно разные формулировки с одинаковым значением имеют почти одинаковый вектор.(Или, если какая-то мера сходства показывает, что они полностью схожи.)

Например, чтобы придумать пример, аналогичный вашему, рассмотрим две фразы:

"медицинское страхование для брата" "медицинская страховка для братьев и сестер "

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

Но из ваших уточняющих ответов кажется, что вы действительно хотите более поверхностную меру "сходства".Вы хотели бы показатель, который показывает, когда определенные фразы показывают разнообразие / контраст в их формулировке.(И, в частности, вы уже знаете о других факторах, например о том, как они были созданы вручную, что группы этих фраз семантически связаны.)

То, что вы хотите, чтобы эта мера сходства показала, - это на самом деле поведение многих проектов.использование текстовых векторов будет рассматривать сбой векторов.Таким образом, семантические методы, подобные тем, которые используются в Word2Vec, векторах абзацев («Doc2Vec») и т. Д., Вероятно, являются неподходящим инструментом для вашей цели.

Вероятно, вы могли бы преуспеть с более простой мерой, основанной только на словах или, возможно, символах-н-граммах текстов.

Например, для двух текстов A и B вы можете просто подсчитать количество общих слов (которые появляются как в A и B), так и разделить на общее количество уникальных слов в A и B,чтобы получить число от 0 до 1,0 «сходство выбора слов».

И, если рассматривать новый текст по сравнению с набором предыдущих текстов, если его среднее сходство с предыдущими текстами низкое, это будет «хорошо» для ваших целей.

Вместо того, чтобы просто слова, вы могли бы также использовать все n-символьные подстроки ("n-граммы") ваших текстов - которые могли бы помочь лучше выделить различия в словоформах или общих опечатках, которые также могут бытьполезные отклонения для ваших целей.

В общем, я бы посмотрел на функциональность векторизации текста scikit-learn для идей:

https://scikit -learn.org / stable /модули / feature_extraction.html # текст-функция экстракция

...