Подтвердить что ты не робот

Как определить, что два предложения похожи?

Я хочу вычислить, как похожие два произвольных предложения относятся друг к другу. Например:

  • Математик нашел решение проблемы.
  • Проблема была решена молодым математиком.

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

4b9b3361

Ответ 1

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

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

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

Если вас не интересует очень поверхностное решение, которое будет работать только в конкретных случаях и которое не будет захватывать синтаксическое чередование (как в данном случае), я бы предложил вам изучить проблему подобия текста более подробно. Хорошей отправной точкой будет книга "Основы статистической обработки естественного языка" , которая обеспечивает очень хорошо организованную презентацию большинства статистических тем обработки естественного языка. После того, как вы уточните свои требования (например, при каких условиях ваш метод должен работать? Какие уровни точности/отзыва вы после? Какие явления вы можете спокойно игнорировать и какие из них вам нужно учитывать?), Вы можете начните изучать конкретные подходы, погрузившись в недавнюю исследовательскую работу. Здесь хорошим местом для начала будет онлайн-архив Ассоциации вычислительной лингвистики (ACL), который является издателем большинства результатов исследований в этой области.

Чтобы дать вам что-то практическое, с которым можно работать, очень приблизительной базой для сближения предложения будет косинус сходство между двумя двоичными векторами, представляющими предложения как мешки слов, Мешок слова - это очень упрощенное представление текста, обычно используемого для извлечения информации, в котором вы полностью игнорируете синтаксис и представляете только предложение как вектор, размер которого является размером словарного запаса (то есть количество слов на языке), а компонент "i" оценивается "1", если слово в позиции "i" в словаре присутствует в предложении, а "0" - в противном случае.

Ответ 2

Я не совсем уверен, что это вопрос, о котором вы говорите, но вы можете рассчитать сходство последовательности символов (в этом случае слова) с помощью Levenshtein Изменить расстояние alghoritm.

Ответ 3

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