NLG строит предложение - PullRequest
7 голосов
/ 02 июня 2011

Я хотел бы создать предложение, имеющее в качестве входных слов.Например,

Ввод:

Mary
chase
the monkey

Ввод:

Mary chases the monkey.

Это можно сделать с помощью библиотеки simpleNLG: http://code.google.com/p/simplenlg/ следующим образом:

String subject = "Mary";
String verb = "chase";
String object = "the monkey";

p.setSubject(subject);
p.setVerb(verb);
p.setObject(object);

String output = realiser.realiseSentence(p);
System.out.println(output);

Это создаст предложение, которое Мария преследует обезьяну.Но я бы хотел автоматизировать процесс ввода слов и предложения.Это потребовало бы некоторой предварительной обработки, которая бы указывала, какое слово является предметом, какое слово является глаголом, а какое - объектом.Я знаю, что есть библиотеки тегов POS (части речи), но они не указывают, является ли это предметом или объектом.Любые предложения, как это можно сделать?Также для того, чтобы он работал для больших предложений с несколькими объектами, наречиями и т. Д.

Ответы [ 3 ]

3 голосов
/ 03 июня 2011

Наиболее распространенным подходом является построение статистики ngramm, а затем построение наиболее подходящей последовательности слов. Наш знаменитый пример можно найти здесь http://scribe.googlelabs.com/

1 голос
/ 03 июня 2011

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

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

Вот некоторые анализаторы составляющих исследования, которые вы можете попробовать:

Этот связанный вопрос также может помочь: Простой запуск обработки естественного языка для Java

0 голосов
/ 03 июня 2011

Это будет зависеть от порядка слов. Если орден «Мэри» преследует обезьяну, то результатом будет «Мэри, преследующая обезьяну». Если в порядке: «Обезьяна гонится за Мэри», то вывод будет «Обезьяна гонится за Мэри».

Я посмотрел на анализатор OpenNLP, но он принимает в качестве входных данных предложение, которое анализируется. В качестве входных данных я использую слова, и мне нужно составить предложение.

И вообще, когда я смотрю на пример: Быстрая коричневая лиса перепрыгивает через ленивую собаку.

Теперь парсер должен распечатать следующее на консоли. (TOP (NP (NP (DT The) (JJ quick) (JJ Brown) (NN Fox) (NNS прыгает)) (PP (IN over) (NP (DT the) (JJ Lazy) (NN собака))) ( .)))

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

Если я ошибаюсь, поправьте меня.

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