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

标签 java parsing nlp grammar stanford-nlp

我能够使用斯坦福解析器和下面的java代码解析一个句子并获得解析分数

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 也在这方面做了一些工作。他们的论文(及其引用书目)应该可以帮助您入门。

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

关于java - 使用斯坦福解析器给出的解析分数检查句子的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15779288/

相关文章:

Python 和 NLTK : Baseline tagger

functional-programming - 函数式编程是自然语言编程的下一步吗?

nlp - stanford-nlp token 列表中的 NER

java - 在 Java 中读取缓冲区

scala - Scala 解析器组合器中的无序解析器

java - 如何使用Java数据输出流将短值写入文本?

java - 不兼容类型 : Object cannot be converted to ParseObject

c# - 为什么 decimal.TryParse 成功解析了类似 12,2,2,2 的东西

java - 信用卡验证 - 技术上正确但算法错误?

java - 管道的路由算法