семантическое сходство между предложениями - PullRequest
7 голосов
/ 10 января 2010

Я делаю проект. Мне нужен какой-либо инструмент или метод с открытым исходным кодом, чтобы найти семантическое сходство между предложениями, где я даю ввод в виде двух предложений и вывод в виде оценки (т. Е. Семантического сходства). Может ли кто-нибудь знать эту информацию? скоро получит ответ. спасибо всем.

Ответы [ 2 ]

19 голосов
/ 13 января 2010

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

Кроме того, ваш вопрос недостаточно точен, и я объясню, что я имею в виду. Я предполагаю, что ваш проект о вычислении семантического сходства между предложениями, а не о чем-то еще, чему семантическое сходство является лишь одним из многих. Если это так, то есть несколько вещей, на которые следует обратить внимание: во-первых, ни с точки зрения компьютерной лингвистики, ни с точки зрения теоретической лингвистики неясно, что именно означает термин «семантическое сходство». Существует множество различных его взглядов и определений, все в зависимости от типа решаемой проблемы, имеющихся у нее инструментов и методов, а также предыстории решения этой задачи и т. Д. Рассмотрим следующие примеры:

  1. Пит и Роб нашли собаку возле станции.
  2. Пит и Роб никогда не находили собаку возле станции.
  3. Пит и Роб оба очень любят программировать.
  4. Патриция нашла собаку возле станции.
  5. Это была собака, которая нашла Пита и Роба под снегом.

Какие из предложений 2-4 похожи на 1? 2 - полная противоположность 1, но Пит и Роб (не) находят собаку. 3 о Пите и Робе, но в совершенно другом контексте. Я собираюсь найти собаку рядом со станцией, хотя нашла кого-то другого. 5 о Пите, Робе, собаке и событии «находки», но не так, как в 1. Что касается меня, я не смог бы ранжировать эти примеры по их сходству даже без необходимости писать компьютерную программу. .

Чтобы вычислить семантическое сходство, вам нужно сначала решить, что вы хотите считать «семантически похожим», а что нет. Чтобы вычислить семантическое сходство на уровне предложения, в идеале вы должны сравнить какое-либо смысловое представление предложений. Значение представления обычно приходит в виде логической формулы и чрезвычайно сложно генерировать. Однако существуют инструменты, которые пытаются это сделать, например, Boxer

В качестве упрощенного, но часто практического подхода вы определяете семантическое сходство как сумму сходств между словами в одном предложении и другом. Это значительно облегчает проблему, хотя все еще есть некоторые сложные проблемы, требующие решения, поскольку семантическое сходство слов так же плохо определено, как и предложение. Если вы хотите получить представление об этом, загляните в книгу «Лексическая семантика» Д.А. Круз (1986). Тем не менее, существует довольно много инструментов и методов для вычисления семантического сходства между словами. Некоторые из них определяют его в основном как отрицательное расстояние двух слов в таксономии, например Word Net или таксономии Википедии (см. этот документ , который описывает API для этого). Другие вычисляют семантическое сходство, используя некоторые статистические показатели, рассчитанные для больших текстовых корпусов. Они основаны на понимании того, что похожие слова встречаются в одинаковом контексте. Третий подход к вычислению семантического сходства между предложениями или слов касается моделей векторного пространства, которые вы можете узнать из поиска информации. Чтобы получить представление об этих последних методах, взгляните на главу 8.5 в книге Основы статистической обработки естественного языка Мэннинга и Шютце.

Надеюсь, что сейчас вы встанете на ноги.

9 голосов
/ 23 августа 2012

Я разработал простой инструмент с открытым исходным кодом, который выполняет семантическое сравнение в соответствии с категориями : https://sourceforge.net/projects/semantics/files/

Работает с предложениями любой длины, прост, стабилен, быстр, мал по размеру ... Вот пример вывода:
Сходство между предложениями
-Пит и Роб нашли собаку возле станции.
-Пит и Роб никогда не находили собаку возле станции.
это: 1.0000000000


Сходство между предложениями
-Патрисия нашла собаку возле вокзала.
-Это была собака, которая нашла Пита и Роба под снегом.
это: 0,7363210405107239


Сходство между предложениями
-Патрисия нашла собаку возле станции.
-Я в порядке, спасибо!
это: 0.0


Сходство между предложениями
- Привет, как дела?
-Я в порядке, спасибо!
это: 0,29160592175990213



ИСПОЛЬЗОВАНИЕ:

import semantics.Compare;
public class USAGE {

public static void main(String[] args) {

    String a = "This is a first sentence.";
    String b = "This is a second one.";

    Compare c = new Compare(a,b);
    System.out.println("Similarity between the sentences\n-"+a+"\n-"+b+"\n is: " + c.getResult());

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...