2015-10-11 3 views
1

Есть ли хорошая библиотека js или функция для создания естественных фраз/предложений? В частности, у меня есть случайные вещи, такие как «птица», «карандаш», «футболист» и т. Д. , и я хочу, чтобы иметь возможность построить предложение, которое соответствовало бы существительному ... «У johnny есть 7 карандашей» «johnny has видел 3 птицы " " suzy знает еще 10 футболистов "Библиотека для генерации естественного языка (глаголов) в javascript?

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

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

Вы можете предложить библиотеку, или если нет, возможно, предложите схему для алгоритма, который я мог бы создать? Спасибо!

ответ

1

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

Основная английская грамматика довольно проста: субъект, предикат и объект. Итак, со списком существительных и глаголов вы уже можете создавать грамматически правильные предложения. Самое сложное - получить списки или самостоятельно их создать (например, из какого-либо словаря, такого как версия веб-сайта Public domain 1913), но Интернет предлагает несколько таких списков.

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

Чтобы упростить работу, я бы не искал произвольных предложений, но сам создал их кучу и позволил бы случайному генератору заполнить слова из правильного списка , С простейшей форме SPO:

simpelSentence = randNoun() + randVerb() + randObject();

В какой-то более сложной формы:

notSoSimpleSentence = randNoun() + randVerb() + randAdjective() + randObject();

Построить больше шаблонов, что путь, и если у вас есть достаточно: начать их заполнения, проверьте вывод и быть разочарованный. Это не работает очень хорошо, вам нужно реализовать больше правил, например, например: he has, но they have и т. Д. И будьте уверены, что для таких самых простых предложений требуется много таких правил.

Существует несколько сценариев, которые могут «писать» научные статьи для вас. Первый хит из поиска Google - SCIgen, хотя это written in Perl. Эти программы известны как «бумажные генераторы» и Lo! и вот, у них есть wikipage. Если вы последуете этой странице на один шаг выше, вы найдете категорию Natural Language Generation с дополнительной информацией. В этом абзаце есть некоторые предложения & hellip; my & hellip; действительно сложно построить!

Если вы все еще хотите это сделать: создайте списки с n-граммами. Или используйте Google's n-gram lists (огромная страница с большим количеством ссылок на n-граммовые списки, автоматически созданные Google, хотя и высокого качества), но будьте осторожны, эти списки огромные. Нет, действительно, это огромный! Это означает, что вы не можете просто обернуть их в Array и использовать их напрямую.Сегодня мегабайт или два, вероятно, приемлемы (текстовые файлы хорошо сжимаются), но более 100 гигабайт? Таким образом, вы должны пылесосить свою посудомоечную машину и получить необходимые самородки.

И после всего, что хлопот: как вам научить эти предложения иметь смысл? Как избежать, чтобы положить лысый мужчина с расчесанными бордовыми волосами в роликах?

Нет, эта проблема имела передозировку ингибитора фосфодиэстеразы типа 5 (не-психоактивный пиперазин), извините. Внесение метиленового синего непосредственно в проблему рассматривалось, но предполагалось оставить монохроматический беспорядок.

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

Смежные вопросы