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

Есть ли алгоритм, который говорит о семантическом сходстве двух фраз

input: фраза 1, фраза 2

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

4b9b3361

Ответ 1


Возможно, вы захотите проверить этот документ:

Схожесть предложений, основанная на семантических сетях и статистике корпусов (PDF)

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

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

Привет,

Мт.

Ответ 2

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

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

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

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

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

Итак, если вы хотите изучить эту проблему немного более подробно, я настоятельно рекомендую прочитать главу 20.7 в Обработка речи и языка Юрафски и Мартина, некоторые из которых доступны через Google Books. Он дает очень хороший обзор современных методов распределения, которые используют статистику совпадений слов для определения меры для сходства слов. Однако вы вряд ли найдете библиотеки, реализующие их.

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

Для тех, кто просто подходит к этому, я бы предложил взглянуть на SEMILAR - http://www.semanticsimilarity.org/. Они реализуют множество современных методов исследования для вычисления сходства слов и предложений. Он написан на Java.

SEMILAR API поставляется с различными методами подобия, основанными на Wordnet, латентном семантическом анализе (LSA), распределении латентного дирихле (LDA), BLEU, метеор, потоковой взаимной информации (PMI), методах зависимости, оптимизированных методах на основе квадратичного присваивания, и т.д. И методы подобия работают в разных деталях - слово в слово, предложение предложения или большие тексты.

Ответ 7

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

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

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

Ответ 8

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

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

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

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

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

Ответ 9

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

Ответ 10

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

Ответ 11

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