赞
踩
首先需要对所谓的“语义通顺”和“句子完整性”做更详细的定义。是指合乎语法规范,还是指合乎人类常识,还是二者都有。
比如下面三个句子:我在树上游泳。
我在游泳池游泳。
我游泳在游泳池。
如果只看语法,那么 1 = 2 > 3 。如果看语义是否符合常识,那么 2 > 3 > 1 。如果二者都看,我觉得 2 > 1 > 3。不过最终,你看着办。
有几个相关的工具可能能帮到你。语言模型(不论基于 ngram 还是 neural net)可以判断一定的局部语法和语义,其输出的概率值表示这个句子在所有可能的句子里出现的概率,可以表示一部分“句子完整性”。Syntactic Parsing 的 loss 可以大概用来表示语法解析的难度。此外还有 Semantic Parsing,比如 AMR (Abstract Meaning Representation),其 loss 大概可以表示语义上解析的难度。语言模型最为成熟,Syntactic Parsing 也比较成熟了,Semantic Parsing 目前基本还是实验室玩玩的状态(据我所知)。
不过,三种思路都会遇到一个终极问题:罕见的词和长句子通常会导致更低的得分(或者更大的 loss)。也就是说:“我昨天去了学校”的得分总是会比“我昨天去了我们的学校”要高,尽管二者在语法上都是很合适的。
上述的三个思路都可以去 AllenNLP - Demo 体验一下。虽然不会给 loss 或者概率,但可以大概知道我说的是什么。然后在一个无人的深夜,下载下来玩一下。
建议加大力度。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。