Я хочу найти подлежащее, глагол и дополнение для каждого предложения, а затем они будут переданы в библиотеку генерации естественного языка simpleNLG для формирования предложения.
Я попробовал несколько библиотек, таких как парсеры Cornlp, opennlp, Standford. Но я не могу найти их точно.
Теперь, в худшем случае, мне придется написать длинный набор if-else, чтобы найти субъект, глагол и объект в каждом предложении, что не всегда точно для простого NLG.
нравится,
- NN, nsub и т. д. относятся к подлежащему, VB, VBZ — к глаголу.
Я попробовал лексический анализатор,
LexicalizedParser lp = **new LexicalizedParser("englishPCFG.ser.gz");**
String[] sent = { "This", "is", "an", "easy", "sentence", "." };
Tree parse = (Tree) lp.apply(Arrays.asList(sent));
parse.pennPrint();
System.out.println();
TreePrint tp = new TreePrint("penn,typedDependenciesCollapsed");
tp.print(parse);
что дает этот вывод,
nsubj(use-2, I-1)
root(ROOT-0, use-2)
det(parser-4, a-3)
dobj(use-2, parser-4)
И я хочу что-то подобное
subject = I
verb = use
det = a
object = parser
Есть ли более простой способ найти это в JAVA или мне следует использовать if-else? пожалуйста, помогите мне с этим.