我正在开展一个项目,其中有一个部分我将不得不输入一个句子来检查它是否是一个有效的句子。
例如,如果我将输入作为“我在家工作”,那么输出将给我“有效句子”,如果我将输入作为“我在家工作”,它会给我“句子无效“。
我搜索了一些自然语言解析方法,如NLP,Stanford Parser,但如果有人请指导我完成一些关于相关问题的java示例,那将会很有帮助。
我将提前感谢你的帮助。谢谢。
答案 0 :(得分:3)
无论您是否使用解析树,都需要使用Markov process来检查有效性。功能可以是单词序列,词性标注序列,解析树段(即生产规则及其扩展名)等。对于这些,您可以使用tokenizer,POS tagger和分别为natural language parser。
有效性检查也将是概率分数,而不是绝对真理。所有(或几乎所有)自然语言解析器都是统计的。这意味着他们需要培训数据。这些解析器使用context-free grammars或mildly context-sensitive grammars,例如CCG或TAG,它们是自然语言语法的最佳计算近似值。
基本上,模型会告诉你在看到特定序列的特征后,某个特征出现在有效句子中的可能性。也就是说,它允许您计算P("at"|"am working")
和P("at"|"home am")
形式的概率。前者应该比后者具有更高的概率。您需要通过实验确定概率应该有多高才能使句子被视为有效。
正如qqlihq所述,这些都属于language models的广义定义。但是,对于句子有效性,您通常不需要测量困惑。条件概率测量应该足够了。