Parsing 如何在java中使用解析器检查自然语言句子结构的有效性?

Parsing 如何在java中使用解析器检查自然语言句子结构的有效性?,parsing,nlp,Parsing,Nlp,我正在做一个项目,其中有一部分我必须输入一个句子来检查它是否是一个有效的句子 例如,如果我输入“我在家工作”,那么输出将给我“有效句子”,如果我输入“我在家工作”,它将给我“无效句子” 我搜索了一些自然语言解析方法,如NLP、Stanford Parser,但如果有人能指导我了解一些有关相关问题的java示例,那将非常有用 我将提前感谢您的帮助。谢谢。无论是否使用解析树,都需要使用来检查有效性。这些特征可以是单词序列、词性标记序列、解析树段(即产生式规则及其扩展)等。对于这些特征,您将分别使用a

我正在做一个项目,其中有一部分我必须输入一个句子来检查它是否是一个有效的句子

例如,如果我输入“我在家工作”,那么输出将给我“有效句子”,如果我输入“我在家工作”,它将给我“无效句子”

我搜索了一些自然语言解析方法,如NLP、Stanford Parser,但如果有人能指导我了解一些有关相关问题的java示例,那将非常有用


我将提前感谢您的帮助。谢谢。

无论是否使用解析树,都需要使用来检查有效性。这些特征可以是单词序列、词性标记序列、解析树段(即产生式规则及其扩展)等。对于这些特征,您将分别使用a、a和a

有效性检查也将是概率分数,而不是绝对真理。所有(或几乎所有)自然语言解析器都是统计的。这意味着他们需要训练数据。这些解析器使用or,例如CCG或TAG,这是自然语言语法的最佳计算近似值之一

本质上,该模型将告诉您在已经看到某个特征序列之后,该特征出现在有效句子中的可能性有多大。也就是说,它将允许您计算形式为
P(“在”|“am工作”)
P(“在”|“home am”)
的概率。前者的概率应高于后者。你需要通过实验确定一个句子被认为是有效的概率应该有多高


正如所评论的,这些都属于广义的定义。然而,对于句子的有效性,你通常不需要测量困惑。条件概率度量应该足够了。

解析什么都没有,但是n-gram语言模型怎么样(例如,参见维基百科关于“语言模型”的文章)?我强烈认为,与使用解析器相比,您将获得更令人满意的结果。