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

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

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

这是一个随机示例:

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

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

如果有这样的解决方案,其精确度有多高?例如,给定一个英语句子的剪辑,算法是否有可能返回一个度量,表明该剪辑的意义或正确性?非常感谢!

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

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

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

最佳答案

我认为您正在寻找的是 language model 。语言模型为 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)在大型语料库上。

这是关于该主题的一篇很好的教程论文:A Bit of Progress in Language Modeling ,作者:约书亚·古德曼。

关于artificial-intelligence - 识别英语句子中无意义的成分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9388766/

相关文章:

python - 如何使用 Python 在卫星图像上训练 SVM 分类器

python - 如何使用 cv2 矩形 (YOLOv5) 从 "results.xyxy[0]"绘制边界框?

artificial-intelligence - 如何使用 A-Star 或 Dijkstra 算法解决 15 个难题?

api - 我应该使用哪个 Twitter API 来提取大量推文用于 NLP 研究?

javascript - 突触js lstm rnn算法的死简单例子

machine-learning - 使用单个输出分类为三类

java - Java虚拟助手的查询分类?

artificial-intelligence - 如何用 Java 或 C# 等语言实现统一算法?

artificial-intelligence - 如何在 Jason (Agentspeak) 中模拟动态行为

machine-learning - 如何将此 keras cnn 模型转换为 pytorch 版本