我想生成一个输入单词的句子。 E.g。
输入:
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(词性)标记库,但它们没有指定它是主题还是对象。有任何建议如何做到这一点?也可以使它适用于具有多个对象,副词等的更大句子。
答案 0 :(得分:3)
最常见的方法是构建ngram统计信息,然后构建最可能的单词序列。可以在这里找到Oen着名的例子http://scribe.googlelabs.com/
答案 1 :(得分:1)
为了获得输入句子的主语,动词或对象,您需要执行语法分析或解析。
有两个主要的解析工具组,组成解析器和依赖解析器,但通常前者是获得所需内容的更直接的路径。
这些是您可以尝试的一些研究成分解析器:
此相关问题也可能有所帮助:Simple Natural Language Processing Startup for Java
答案 2 :(得分:0)
这取决于单词的顺序。如果命令是玛丽追逐猴子那么输出将是玛丽追逐猴子。如果订单是猴子追逐玛丽,那么输出将是猴子追逐玛丽。
我查看了OpenNLP解析器,但它将一个正在解析的句子作为输入。我输入的是单词,我需要建立一个句子。
无论如何,当我看到这个例子时: 快速的棕色狐狸跳过懒狗。
解析器现在应该将以下内容打印到控制台。 (TOP(NP(NP(DT)(JJ快)(JJ棕色)(NN狐狸)(NNS跳跃))(PP(IN over)(NP(DT)(JJ懒)(NN狗)))( 。)))
我所能看到的只是词性。除非在API中有这样的功能,否则我看不到它指定对象,主题等。
如果我错了,请纠正我。