Алгоритм для отрицания предложений

Я задавался вопросом, был ли кто-либо знаком с какими-либо попытками алгоритмического отрицания предложения.

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

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

18
задан dmcer 24 April 2010 в 09:22
поделиться

5 ответов

Есть аналогичный процесс для логики первого порядка. Обычный алгоритм состоит в том, чтобы отобразить P в , а не P , а затем выполнить допустимые преобразования, чтобы переместить не в удобное место, например:

Original:    (not R(x) => exists(y) (O(y) and P(x, y)))
Negate it:   not (not R(x) => exists(y) (O(y) and P(x, y)))
Rearrange:   not (R(x) or exists(y) (O(y) and P(x, y)))
             not R(x) and not exists(y) (O(y) and P(x, y))
             not R(x) and forall(y) not (O(y) and P(x, y))
             not R(x) and forall(y) (not O(y) or not P(x, y))

Выполнение того же самого на English, вы бы отрицали «Если здесь не идет дождь, то есть какое-то действие, которое является активным на открытом воздухе и может быть выполнено здесь», на «Это НЕ тот случай, что ...» и, наконец, на «Это не дождь и все возможная деятельность либо не для использования на открытом воздухе, либо не может быть выполнена здесь. "

Естественный язык, конечно, намного сложнее, чем логика первого порядка ... но если вы можете разобрать предложение на что-то, где есть слова" не "," и "," или "," существует "и т. д. могут быть идентифицированы, тогда вы сможете выполнять аналогичные переводы.

1
ответ дан 30 November 2019 в 09:18
поделиться

Наивный способ, конечно, - это попробуйте добавить "не" сразу после {am, are, is}. Я понятия не имею, как это будет работать в ваших условиях, вероятно, это будет работать только с предложениями, подобными предикатам.

2
ответ дан 30 November 2019 в 09:18
поделиться

для синтаксического анализа простых предложений в поисках наречий или прилагательных. учитывая правила грамматики английского языка, и замените его антонимом, если существует только одно значение. В противном случае используйте правильное английское правило отрицания, чтобы отрицать глагол (например: is -> is not).

Алгоритм высокого уровня:

  1. Найдите каждое слово по его типу (существительное, глагол, прилагательное, наречие, союз и т. Д.)
  2. Выведите структуру предложения из последовательностей типов слов (Ваше предложение было: статья, существительное, глагол, прилагательное / наречие; это, как известно, простое предложение.)
  3. Для простых предложений выберите одно обратимое слово и переверните его. Либо используя антоним, либо отрицая глагол.

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

2
ответ дан 30 November 2019 в 09:18
поделиться

Хотя я не знаю ни одной работы, которая специально посвящена автоматическому генерированию отрицательных предложений, я полагаю, что хорошим местом для начала было бы чтение по лингвистике работают в формальной семантике и прагматике . Хорошим доступным введением была бы книга Стивена Левинсона «Прагматика» .

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

John fixed the vase that he broke.

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

Точно так же, просто опровергая приговор Джон не прекращал употреблять наркотики , поскольку Джон прекратил употреблять наркотики по-прежнему указывает на то, что Джон в какой-то момент употреблял наркотики. Более полное отрицание было бы Джон никогда не употреблял наркотики .

Некоторые из существующих работ по обработке естественного языка (НЛП), на которые вы, возможно, захотите взглянуть, - это работа Маккартни и Мэннинга 2007 года Natural Logic for Textual Inference . В этой статье они используют понятие естественной логики Джорджа Лакоффа и исчисление монотонности Санчеса Валенсии для создания программного обеспечения, которое автоматически определяет, влечет ли одно предложение за другим. Вы, вероятно, могли бы использовать некоторые из их методов для обнаружения отсутствия следствия для искусственного построения отрицательных и противоречащих предложений.

8
ответ дан 30 November 2019 в 09:18
поделиться

Я бы порекомендовал проверить wordnet . Вы можете использовать его для поиска антонимов к слову, так что вы можете предположительно заменить «плохой» на «плохой», поскольку плохой антоним хорошего. NLTK имеет простой интерфейс Python для Wordnet.

3
ответ дан 30 November 2019 в 09:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: