繁体   English   中英

使用斯坦福解析器给出的解析分数检查句子的语法

[英]Check Grammar of a sentence using Parse score given by Stanford parser

我可以使用下面的Java代码使用Stanford解析器来解析一个句子并获得解析分数

LexicalizedParser lp = LexicalizedParser.loadModel(
    "edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz"
);

lp.setOptionFlags(new String[]{"-maxLength", "80", "-retainTmpSubcategories"});

String sent = "My name is Rahul";
Tree parse = (Tree) lp.apply(sent);
double score = parse.score();

有什么方法可以使用斯坦福解析器给出的解析分数来检查句子的语法吗?

谢谢。

与@kutschkem相反,我要说的答案不是很难的“否”,而是一个非常谨慎的“也许”。 这绝对是一个活跃的研究领域。 我看到(未发表的)工作表明,长度标准化的语法分析分数(内部概率)显示出双峰分布,手动注释的“较差”句子通常落入较低的峰值,而“较好”的句子落入较高的峰值。 那是针对一个特定的语料库(如果我没记错的话,是推文的语料库),我不知道它是否已被复制到其他地方。

更一般而言,语法分析信息对于语法分类很有帮助,但可能不是唯一的分类功能。 您可能会看到Joel Tetrault及其与ETS合作的研究团队的一些工作。 都柏林的詹妮弗·福斯特(Jennifer Foster)在这方面也做了一些工作。 他们的论文(及其参考书目)应该可以帮助您入门。

但是(不幸的是)构建有用的分类器并不像提取内部分析分数那样容易。

因此,您的问题是您是否可以检查句子的语法正确性? 答案是不。 例如,我曾经尝试通过简单的单词替换生成问题,然后比较单词所有排列的解析分数。 (我知道,这种方法不好,但是可以作为一个很好的例子)。 但问题是,没有意义的句子(我对语法不完全确定)的排名高于实际上是问题的任何排列。 看到问题可能在用于训练语言模型的语料库中很少见,因此可以期待这种行为。 如果您的分数较低,则表示您的句子结构不常见,并不表示语法错误。 实际上,语法上不正确的句子根本不应该被解析。 老实说,在语法上确实很少有错误。

顺便说一句。 “我的拉胡尔语是名字”在语法上也是正确的;-)(好的,取决于您的语法)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM