识别英语句子中无意义的成分

我想知道是否有算法或库可以帮助我识别英语句子中无意义的成分?例如,非常严重的语法错误?如果有的话,能否解释一下它的工作原理,因为我非常想实现或在自己的项目中使用它。

这里有一个随机的例子:

在句子中:“我关上了所以等等页面你好那扇门。”

作为人类,我们可以迅速识别出[所以等等页面你好]这一部分没有任何意义。机器是否有可能指出这一字符串没有意义并且还包含语法错误呢?

如果有这样的解决方案,它的精确度能达到什么程度?例如,给定一段英语句子,算法是否能返回一个测量值,指示这段句子的意义或正确性如何?非常感谢!

附注:我已经查看了CMU的链接语法以及NLTK库。但我仍然不确定如何使用例如链接语法解析器来实现我想要的功能,因为如果解析器不接受该句子,我不知道如何调整它来告诉我哪个部分不对……而且我不确定NLTK是否支持这个功能。

我还想到解决这个问题的方法是查看词语组合的频率。由于我目前只对纠正非常严重的错误感兴趣。如果我将“严重错误”定义为句子片段中词语很少一起使用的案例,即,该组合的频率应该远低于句子中其他组合的频率。

例如,在上面的例子中:[所以等等页面你好]这四个词确实很少一起出现。我的想法的一个直觉来自于当我在Google中输入这样的组合时,没有相关结果跳出来。那么,是否有任何库可以像Google那样为我提供这样的频率信息?这样的频率可能会给出词语组合正确性的一个很好的提示。


回答:

我认为你正在寻找的是语言模型。语言模型为你的语言中出现的k个词的句子分配一个概率。最简单的语言模型是n-gram模型:给定句子的前i个词,观察到第i+1个词的概率仅依赖于前n-1个词。

例如,对于二元模型(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)的出现次数即可。

这里有一篇关于这个主题的好教程论文:语言建模的一点进展,作者是Joshua Goodman。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注