识别英语句子中没有意义的组件

时间:2012-02-22 03:37:46

标签: artificial-intelligence nlp machine-learning nltk information-retrieval

我想知道是否有算法或库帮助我识别英语中没有意义的组件?例如,非常严重语法错误?如果是这样,你能解释它是如何工作的,因为我真的想实现它或者将它用于我自己的项目。

这是一个随机的例子:

在句子中:“我关闭了等页面,你好。”

作为一个人,我们可以快速确定[so etc page hello]没有任何意义。机器是否有可能指出字符串没有任何意义并且还包含语法错误?

如果有这样的解决方案,那有多精确?例如,如果给出一个英文句子的剪辑,算法是否可以返回一个度量,表明该剪辑有多大意义或正确?非常感谢你!

PS:我看过CMU的链接语法以及NLTK库。但是我仍然不确定如何使用例如链接语法解析器来做我想做的事情,因为如果解析器不接受句子,我不知道如何调整它告诉我哪个部分它是不对..我不确定NLTK是否支持。

我解决问题的另一个想法是查看单词组合的频率。因为我目前只对纠正非常严重的错误感兴趣。如果我将“严重错误”定义为句子剪辑中的单词很少一起使用的情况,即组合的频率应该远低于句子中其他组合的频率。

例如,在上面的例子中:[so etc page hello]这四个单词很少一起出现。我的想法的一个直觉来自于当我在Google中输入这样的组合时,没有相关的结果跳出来。那么有没有像我这样提供频率信息的图书馆呢?这样的频率可以很好地暗示单词组合的正确性。

3 个答案:

答案 0 :(得分:2)

是的,存在这样的事情。

您可以在Wikipedia上阅读相关内容。

您还可以阅读一些精度问题here

在确定句子有语法问题后确定哪个部分不正确,如果不知道作者的预期意义,这在很大程度上是不可能的。举个例子,“过他们的尸体”和“那里的尸体”。两者都不正确,可以通过添加/删除逗号或交换它们来解决。然而,这些导致了非常不同的含义(是的,第二个不是一个完整的句子,但它在上下文中是可接受/可理解的。)

拼写检查有效,因为您可以使用有限数量的单词来检查单词以确定单词是否有效(拼写正确)。然而,有无限的句子可以被构造,具有无限的意义,所以没有办法纠正一个写得不好的句子而不知道它背后的含义是什么。

答案 1 :(得分:2)

我认为您所寻找的是language model。语言模型为您的语言中出现的k个单词的每个句子分配概率。最简单的语言模型是n-gram模型:给定句子的第一个i个单词,观察i+1个单词的概率仅取决于n-1之前的单词。 / p>

例如,对于二元模型(n=2),句子w1 w2 ... wk的概率等于

P(w1 ... wk) = P(w1) P(w2 | w1) ... P(wk | w(k-1)).

要计算概率P(wi | w(i-1)),您只需计算大型语料库中双字母组w(i-1) wi和单词w(i-1)的出现次数。

这是一篇关于这个主题的好教程论文:约书亚古德曼的A Bit of Progress in Language Modeling

答案 2 :(得分:1)

我认为你所寻找的是一个完善的图书馆,可以处理自然语言并提取意义。

不幸的是,没有这样的图书馆。正如您可能想象的那样,自然语言处理并非易事。它仍然是一个非常活跃的研究领域。理解自然语言有很多算法和方法,但据我所知,大多数算法和方法只适用于特定应用或特定类型的单词。

那些像CMU那样的图书馆似乎仍然非常基础。它不能做你想做的事情(比如识别英语句子中的错误)。您必须使用它们提供的工具(例如句子解析器)开发算法来实现这一点。

如果您想了解它,请查看ai-class.com。他们有一些部分讨论处理语言和单词。