用于在javascript中生成自然语言(动词)的库?

时间:2015-10-11 19:02:28

标签: javascript

是否有一个好的js库或函数来创建自然短语/句子? 具体来说,我有随机的东西,如"鸟","铅笔" "足球运动员"等等 我希望能够构建一个符合名词的句子......"约翰尼有7支铅笔" "约翰尼已经看过3只鸟" " suzy知道另外10名足球运动员"

目标是随机生成可以用代数表达式建模的句子。除了生成一个自然动词并获得正确的时态之外,它很容易。

我简要介绍了自然语言处理,但(至少从表面上看)它看起来似乎是另一种方式。

你能建议一个库,或者如果没有,或许建议我可以创建的算法大纲? 谢谢!

1 个答案:

答案 0 :(得分:1)

这是非常复杂的,有些人甚至说不可能,我认为这就是你的问题被投票的原因。但是你的具体问题在某种程度上是一个解决方案,如果你对限制过于复杂的句子没有问题。

基本的英语语法非常简单:主语,谓语和宾语。因此,通过名词和动词列表,您已经能够构建语法正确的句子。最难的是获取列表或自己构建它们(例如:来自某些字典,如Webster的公共领域1913版本),但Internet提供了几个这样的列表。

如果您有更多列表(形容词,副词等),您可以构建更复杂的句子。还有不规则动词,不常见的复数或名词等的列表。

为了简单起见,我不会寻找任意句子,而是自己构建一堆,并允许一些随机生成器填写正确列表中的单词。用最简单的形式SPO:

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

更复杂的形式:

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

以这种方式构建更多模板,如果你有足够的:开始填充它们,检查输出并感到失望。它不能很好地工作,你需要实现更多的规则,比如例如:he hasthey have等等,并确保即使是最简单的句子也需要很多这样的规则。

有几个脚本可以为你“写”科学论文。 Google搜索的第一个匹配是SCIgen,但它是written in Perl。这些程序被称为“纸张生成器”和Lo!看哪 - 他们有wikipage。如果您将该页面提高一步,您将找到包含更多信息的类别Natural Language Generation。这段有一些句子......我...真的很难构建!

如果您仍想这样做:使用n-gram制作列表。或者使用Google's n-gram lists(包含大量链接到由Google自动生成的n-gram列表的大页面,虽然质量很高)但要小心,这些列表巨大。不,真的,他们巨大!这意味着您不能将它们包装在Array中并直接使用它们。今天可能接受一兆字节或两兆字节(文本文件压缩得很好)但超过100千兆字节?因此,你必须把洗碗盘上的灰尘弄脏并获得所需的金块。

在经历了所有麻烦之后:如何教这些句子有意义?如何避免将光头男人精心梳理的栗色毛发放在滚筒上?

对不起,这个问题过量使用过量的磷酸二酯酶5型抑制剂(非精神活性哌嗪)。已经考虑将亚甲蓝直接注入问题,但假设只留下单色混乱。

但是严肃的说:任何超过一些非常简单的句子的东西,从一些简短的清单中填充了一些规则,对于一个或两个周末写的小ECMA脚本脚本是遥不可及的。