Алгоритм компьютерного ИИ для написания предложений? - PullRequest
13 голосов
/ 08 апреля 2011

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

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

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

Ответы [ 4 ]

17 голосов
/ 08 апреля 2011

Поле, которое вы ищете, называется генерацией естественного языка, подполем обработки естественного языка http://en.wikipedia.org/wiki/Natural_language_processing

Генерация предложения является либо очень простой, либо очень сложной, в зависимости от того, насколько хорошими вы хотите, чтобы предложения были,В настоящее время нет программ, которые могли бы генерировать на 100% разумные предложения о существительных (даже с тезаурусом) - если вы это имеете в виду.

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

Вот введениек основам n-граммовой генерации, используя NLTK: http://www.nltk.org/book/ch02.html#generating-random-text-with-bigrams

10 голосов
/ 08 апреля 2011

Это называется NLG (генерация естественного языка), хотя в основном это задача генерирования текста, который описывает набор данных.Существует также много исследований по генерации совершенно случайных предложений.

Одна из отправных точек - использование цепей Маркова для генерации предложений.Это сделано для того, чтобы у вас была матрица переходов, которая говорит о вероятности перехода между каждой частью речи.У вас также есть наиболее вероятная начальная и конечная часть предложения.Сложите все это вместе, и вы сможете генерировать вероятные последовательности частей речи.

Теперь, вы еще не сделали, это, во-первых, не даст очень хорошего результата, так как вы рассматриваете только вероятность междусмежные слова (также называемые биграммами), поэтому вам нужно расширить это, чтобы посмотреть, например, на матрицу перехода между тремя частями речи (это создает трехмерную матрицу и дает вам триграммы).Вы можете расширить его до 4 граммов, 5 граммов и т. Д. В зависимости от вычислительной мощности и, если ваш корпус может заполнить такую ​​матрицу.

Наконец, вам необходимо исправить такие вещи, как объектное соглашение (согласие глагола, согласие прилагательного-глагола (но не на английском языке) и т. д.) и время, так что все совпадает.

3 голосов
/ 30 августа 2015

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

Если у вас есть опыт, я предлагаю ознакомиться с какой-то работой Александра Коллера из Саарского университета.Он описывает, как кодировать NLG в PDDL.Основная статья, которую вы хотите прочитать, - «Создание предложения как проблема планирования».

Если у вас нет опыта работы в НЛП, просто найдите онлайн-курсы или материалы курсов Майкла Коллингса или Дэна Юрафски.,

2 голосов
/ 08 апреля 2011

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

Другой способ - это слово-кортеж-случайный обход, ставшее популярным в старом журнале BYTE TRAVESTY, или прочее.как http://www.perlmonks.org/index.pl?node_id=94856

...