Есть ли алгоритм, говорящий о семантическом сходстве двух словосочетаний?

ввод: фраза 1, фраза 2

вывод: значение семантического сходства (от 0 до 1) или вероятность, что эти две фразы говорят об одном и том же


person btw0    schedule 15.09.2008    source источник
comment
Онлайн-демонстрация WordNet Similarity для Java была полезна для понимания различных алгоритмов, предоставляемых WordNet: ws4jdemo.appspot.com   -  person Ahmed Fasih    schedule 05.08.2014
comment
Я новичок в НЛП и колебался между случайным блужданием по графу и вектором слов; Мне интересна ваша демонстрация. не могли бы вы предоставить информацию? специально о процессе китайского языка?   -  person George Wang    schedule 04.11.2016


Ответы (11)



Возможно, вы захотите ознакомиться с этой статьей:

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

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

С уважением,

Мэтт.

person Matt Mower    schedule 15.09.2008
comment
Я тоже реализовал алгоритм, он недостаточно хорош, но приемлем - person btw0; 13.10.2008
comment
Я прочитал эту статью и до сих пор не понимаю параметр h, который указывает глубину погружения. Где находится самый высокий нижний предел лета, который используется в качестве отправной точки для измерения глубины определенного слова? - person ; 16.05.2016

На это есть короткий и длинный ответ.

Краткий ответ:

Используйте пакет WordNet :: Similarity Perl. Если Perl не является вашим языком, проверьте страницу проекта WordNet в Принстоне или найдите библиотеку оболочки в Google.

Длинный ответ:

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

Итак, если вы заинтересованы в более глубоком изучении этой проблемы, я настоятельно рекомендую прочитать главу 20.7 в Обработка речи и языка Джурафски и Мартина, некоторые из которых доступны через person nfelger    schedule 07.10.2008


Возможно, вам стоит заглянуть в проект WordNet в Принстонском университете. Один из возможных подходов к этому - сначала пропустить каждую фразу через список стоп-слов (чтобы удалить «общие» слова, такие как «a», «to», «the» и т. Д.), А затем для каждого из оставшихся слов в каждую фразу, вы можете вычислить семантическое «сходство» между каждым из слов в другой фразе, используя меру расстояния на основе WordNet. Измерение расстояния может быть примерно таким: количество дуг, которые вы должны пройти в WordNet, чтобы перейти от word1 к word2.

Извините, это довольно высокий уровень. Я, очевидно, никогда не пробовал этого. Быстрая мысль.

person Chuck Wooters    schedule 15.09.2008


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

person jonfm    schedule 15.09.2008
comment
Чтобы усилить: получите репрезентативный (большой) текстовый корпус, разложите каждый документ на биграммы (термины), создайте матрицу, подсчитывающую количество терминов (строк) в документах (столбцах), разложите матрицу, округлите / спроецируйте / уменьшите размерность, используйте результат, чтобы делать новые прогнозы. - person isomorphismes; 13.03.2013

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

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

person Hybrid System    schedule 01.10.2014
comment
Вы знаете, какой API они используют для своей программы просмотра сходства, с которой вы связались (cortical.io/demos/ исследователь сходства)? Я предположил, что это был API «/ сравнить» (api.cortical.io), но с длинными и length Я получаю cosineSimilarity 0,35 из API и% подобия age 41% в веб-интерфейсе. Вы знаете, в чем разница? - person Sam Heather; 17.01.2015
comment
В этой демонстрации в настоящее время используется другая версия API с другой кодировкой Retina, чем в общедоступном API, доступном на api.cortical.io, поэтому оценки сходства будут незначительно отличаться. - person Hybrid System; 17.01.2015
comment
хорошо, спасибо за это. Можете ли вы просто подтвердить мне, что «косинусное сходство» через API сравнения - правильный способ сделать это? - person Sam Heather; 18.01.2015
comment
Да, эта демонстрация использует косинусное подобие. Это лишь одно из нескольких измерений расстояния, возвращаемых API cortical.io, но в целом косинусное сходство - довольно хорошее измерение. Дополнительная информация на en.wikipedia.org/wiki/Cosine_similarity. - person Hybrid System; 19.01.2015

Одно из простых решений - использовать скалярное произведение символьных n-граммовых векторов. Это надежно по сравнению с изменениями порядка (чего не делают многие метрики расстояния редактирования) и решает многие проблемы, связанные с остановкой. Это также предотвращает проблему полного семантического понимания AI-complete.

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

Этот подход описан в J. Митчелл и М. Лапата, «Композиция в распределительных моделях семантики», Когнитивная наука, т. 34, нет. 8, pp. 1388–1429, ноябрь 2010 г., DOI 10.1111 / j.1551-6709.2010.01106.x

person Community    schedule 15.09.2008
comment
... и хешировать каждые 3 символа? Вы имели в виду 3 слова? - person sangam; 04.01.2016

Я бы посмотрел на статистические методы, которые учитывают вероятность появления каждого слова в предложении. Это позволит вам придавать меньшее значение популярным словам, таким как «и», «или», «the», и придавать большее значение словам, которые появляются менее регулярно и, следовательно, являются лучшим отличительным фактором. Например, если у вас есть два предложения:

1) Алгоритм Смита-Уотермана дает вам меру сходства между двумя строками. 2) Мы рассмотрели алгоритм Смита-Уотермана и пришли к выводу, что он достаточно хорош для нашего проекта.

Тот факт, что в этих двух предложениях используются слова «smith-waterman» и «алгоритмы» (которые встречаются не так часто, как «и», «или» и т. Д.), Позволит вам сказать, что эти два предложения действительно могут говорить на ту же тему.

Подводя итог, я бы посоветовал вам взглянуть на: 1) меры сходства строк; 2) статистические методы;

Надеюсь это поможет.

person Gia    schedule 04.07.2010
comment
Gia: следующие строки похожи: (I love you, I hate you), но имеют противоположные значения. Следующие строки не похожи друг на друга, но имеют схожие значения: (Thank you; the dinner was delicious!, You always cook a fine meal. Much appreciated.) Использование необычного слова: (An onomatopoeia is a word that imitates the sound of the thing it describes, Children and non-natives use onomatopoeia to describe things more than adult native speakers.) не означает одно и то же. - person isomorphismes; 13.03.2013

Попробуйте SimService, который предоставляет сервис для вычисления самых популярных похожих слов и фраз.

person Lushan Han    schedule 17.01.2013
comment
Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится. - person user1803551; 06.05.2015
comment
@ user1803551, золотой стандарт для ответов, рекомендующих внешнюю программу или библиотеку, заключается в том, чтобы точно объяснить, как они применимы к вопросу, который здесь было сделано. - person Nathan Tuggy; 06.05.2015

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

person Rik    schedule 15.09.2008

Взгляните на http://mkusner.github.io/publications/WMD.pdf В этой статье описывается алгоритм, называемый расстоянием перемещения слов, который пытается выявить семантическое сходство. Он полагается на оценки сходства, продиктованные word2vec. Интеграция этого с GoogleNews-vectors-negative300 дает желаемые результаты.

person sindhu    schedule 04.04.2017