【问题标题】:How to check Natural Language Sentence Structure validity using parser in java?如何在java中使用解析器检查自然语言句子结构的有效性?
【发布时间】:2014-02-08 02:55:05
【问题描述】:

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

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

我搜索了一些自然语言解析方法,例如 NLP、Stanford Parser,但如果有人指导我通过一些有关相关问题的 java 示例,将会很有帮助。

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

【问题讨论】:

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

标签: parsing nlp


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 2011-03-06
    • 2012-07-05
    • 1970-01-01
    相关资源
    最近更新 更多