Распознавание перефразирования с использованием сходства уровней предложений - PullRequest
3 голосов
/ 08 января 2011

Я новичок в НЛП (обработка естественного языка. В качестве стартового проекта я разрабатываю распознаватель перефразирования (систему, которая может распознавать два одинаковых предложения). Для этого распознавателя я собираюсь применить различныемеры на трех уровнях, а именно: лексический, синтаксический, семантический. На лексическом уровне существует множество мер сходства, таких как косинусное сходство, коэффициент совпадения, коэффициент Жакарда ... и т. д. для этих мер я использую пакет simMetrics, разработанный университетомШеффилд ... это замечательный пакет для различных мер подобия. Он содержит много мер подобия. Но для мер Левенштейна и Джаро-Винклера, код только на уровне * на уровне символов *. Мне нужен код науровень предложения (т. е. рассматривая одно слово как единицу вместо символа). А также в SimMetrics отсутствует код для манхэттенского расстояния ... Я прошу экспертов дать мне предложение по разработке необходимого кода (или) предоставить мне код вуровень предложения длявышеупомянутые меры.

заранее большое спасибо за ваше время и усилия за помощь.

Ответы [ 2 ]

3 голосов
/ 10 февраля 2012

Я работаю в области НЛП уже несколько лет, и я полностью согласен с теми, кто предоставил ответы / комментарии.Это действительно крепкий орешек!Но позвольте мне все же привести несколько указателей:

(1) Лексическое сходство: вместо того, чтобы пытаться обобщить расстояние Джаро-Винклера до уровня предложения, вероятно, будет гораздо более плодотворным, если вы разработаете уровень персонажа илиязыковая модель на уровне слов и вычисление логарифмической вероятности.Позвольте мне объяснить далее: тренировать вашу языковую модель, основанную на корпусе.Затем возьмите множество предложений-кандидатов, которые были аннотированы как похожие / не похожие на предложения в корпусе.Вычислите логарифмическую правдоподобие для каждого из этих тестовых предложений и установите предельное значение для определения сходства.

(2) Синтаксическое сходство: до настоящего времени только стилометрические сходства могли уловить это.Для этого вам нужно будет использовать деревья синтаксического анализа PCFG (или деревья синтаксического анализа TAG. TAG = грамматика, примыкающая к дереву, обобщение CFG).

(3) Семантическое сходство: с головы до головы я могуПодумайте только об использовании таких ресурсов, как Wordnet, и об определении сходства между синтаксисами.Но это тоже не просто.Ваша первая проблема будет состоять в том, чтобы определить, какие слова из двух (или более) предложений являются «соответствующими словами», прежде чем вы сможете приступить к проверке их семантики.

2 голосов
/ 11 января 2011

Как предполагает Крис, это не тривиальный проект для начинающего.Я бы посоветовал вам начать с чего-то более простого (хотя и довольно скучного), такого как чанкинг.

Посмотрите документы и книги по библиотеке Python NLTK - есть некоторые примеры, близкие к тому, что вы ищете,Например, сдерживание: возможно ли, чтобы одно утверждение содержало другое.обратите внимание на то, что «правдоподобно», уровень техники недостаточно хорош для простого да / нет или даже для вероятности.

...