Расшифровка слов в предложении с помощью Natural Language Generation

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

For eg:

Sentence: Mary has gone for a walk with her dog.
Set of words: {has, for, a, with, her, dog, Mary, gone, walk}

На выходе должно быть одно и то же предложение.

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


person AvisekS    schedule 15.06.2014    source источник
comment
Звучит смутно, как будто ваш профессор хотел бы, чтобы вы открыли для себя грамматику ссылок, но я предлагаю закрыть как слишком широкое. В любом случае вам нужно гораздо больше лексической информации, чтобы добраться куда угодно (часть речи, валентность [то есть переходность] глагола, контекстное устранение неоднозначности), а также какая-то грамматическая структура.   -  person tripleee    schedule 15.06.2014
comment
Это похоже на создание набора предложений по набору слов?   -  person Daniel    schedule 16.06.2014
comment
Мне было бы интересно создать одно предложение.   -  person AvisekS    schedule 17.06.2014


Ответы (3)


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

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

В ситуации, подобной вашей, попробуйте модель n-грамм (для n > 2. Я думаю, что 2 или 3 должны помочь) или скрытую марковскую модель, использующую теги части речи, должны помочь.

person Aditya Mukherji    schedule 16.06.2014
comment
Разбор каждой комбинации может помочь вам сосредоточиться на кандидатах, образующих предложение, и выбрать среди них. - person Dror Yashpe; 16.06.2014
comment
На самом деле я хочу, чтобы ввод был набором слов без последовательности, которая следует в языке. Спасибо за идею относительно модели n-грамм. Но не могли бы вы помочь мне с тем, как я могу сгенерировать любую из тех последовательностей, которые могут быть приняты языковой моделью, из всего лишь беспорядочного набора слов? - person AvisekS; 17.06.2014
comment
Вы генерируете все возможные перестановки слов во входных данных и смотрите, какая из них имеет наибольшую вероятность в соответствии с вашей языковой моделью. Например, если получен входной сигнал {A, B, C}, вы пробуете ABC, ACB, BAC, BCA, CAB, CB A.. в зависимости от того, какая из них получает наибольшую вероятность в соответствии с вашей моделью, она с наибольшей вероятностью будет настоящая фраза. - person Aditya Mukherji; 17.06.2014
comment
Это кажется отличной идеей adi92. Может быть, мы могли бы использовать какой-то метод для генерации перестановок, следуя некоторым общим правилам английской грамматики, что в конечном итоге должно уменьшить количество возможных перестановок, тем самым повысив свою эффективность? - person AvisekS; 19.06.2014

Вы не сможете решить свою проблему без дополнительной информации. Возьмите этот пример:

{"happy", "you" "are"}

Вы можете восстановить предложение? Это «Ты счастлив» или это «Ты счастлив»? Обратите внимание, что слова те же, но смысл радикально меняется. Какой бы хороший алгоритм вы ни написали, он не сможет восстановить предложение, если вы этого не сделаете.

person Ivaylo Strandjev    schedule 15.06.2014
comment
Или, что то же самое, Ее собака пошла гулять с Мэри, а также вопросительные формы предложений-кандидатов. - person tripleee; 15.06.2014
comment
Я не сторонник понижения, но предположил бы, что понижение голоса связано с тем, что на самом деле я не пытался решить проблему ОП. Я бы предпочел пометить как «Не ответ» (но и этого не сделал, поскольку, тем не менее, считаю это информативным и актуальным). - person tripleee; 16.06.2014
comment
Да, я знал, что без дополнительной информации это было бы невозможно. Но не могли бы вы просветить, какая именно дополнительная информация необходима? Я имею в виду информацию о частях речи или информацию о субъекте-объекте или что? - person AvisekS; 17.06.2014
comment
@user3742268 user3742268 Я не уверен, что даже этого будет достаточно. Вероятно, вам потребуются данные, какие слова отрицаются, какое предложение - вопрос утверждение или восклицание. Также вам нужно будет знать, что является объектом, а что субъектом. Подумайте о другом примере: {"I", "working", "paid", "being", "am", "without"} Это может быть "I am working without being paid" или "I am being paid without working" Большая разница, верно? - person Ivaylo Strandjev; 18.06.2014
comment
@IvayloStrandjev, хотя ваши пункты верны, я думаю, вы неправильно поняли вопрос. Он просто хочет, чтобы заданные слова были переставлены в правильное английское предложение, неважно, что оно означает. - person Vikram Bhat; 18.06.2014
comment
The output should be the same sentence. это не похоже на то, что вы утверждаете - person Ivaylo Strandjev; 18.06.2014
comment
Ивайло Странджев, Викрам Бхат: Я думал вернуть исходное предложение. На самом деле я хотел продолжить, создав правильное английское предложение, а затем добавить дополнительную информацию к набору слов, чтобы получить исходное предложение. В любом случае спасибо за ваши предложения оба. - person AvisekS; 19.06.2014

Вам нужно сделать следующее, чтобы начать: -

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

Примечание. Английский — очень неоднозначный язык, поэтому вы можете закончить его чем-то другим.

eg.

грамматическое правило : артикль существительное глагол

входные слова : собака , лает ,

поиск в словаре: собака => существительное, лает => глагол, артикль =>

переставить слова по правилу.

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

person Vikram Bhat    schedule 16.06.2014
comment
Спасибо, Викрам, это было то, что мне было интересно. Я планировал использовать словарь с типом слова, хранящимся для каждого слова, и хотел сгенерировать что-то вроде конечного автомата, чтобы генерировать правильное предложение, если это возможно. Но не могли бы вы помочь мне с чего начать? - person AvisekS; 17.06.2014
comment
@user372268 user372268 Я думаю, сначала вам нужно собрать слова и их тип из интернет-ресурсов. Может построить хэш-карту, используя слова, которые сопоставляют ее с типом. Затем изучите некоторые типичные правила английской грамматики с помощью онлайн-уроков или у учителя. - person Vikram Bhat; 17.06.2014
comment
@user3742268 user3742268 Возможно, вам захочется создать синтаксический анализатор с использованием bison C++, чтобы проверить, является ли предложение допустимым с использованием правил грамматики, но тогда вам может потребоваться попробовать все перестановки слов, но вместо этого попробовать набор токенов непосредственно с каждым грамматиком, используя метод обратного отслеживания. - person Vikram Bhat; 17.06.2014
comment
Хорошо, я постараюсь продолжить в том же духе. Большое спасибо. - person AvisekS; 17.06.2014