我正在寻找一个可以从 C++、Python 或 F# 中轻松使用的库,它可以将结构良好的英语句子与“单词沙拉”区分开来。我试过 The Stanford Parser ,不幸的是,它解析了这个:
Some plants have with done stems animals with exercise that to predict?
毫无怨言。我不是在寻找非常复杂的东西,能够处理所有可能的极端情况。我只需要过滤掉一个明显的废话。
最佳答案
这是我偶然发现的一些东西:
A general-purpose sentence-level nonsense detector ,由一位名叫 Ian Tenney 的斯坦福大学学生编写。
Here is the code from the project, undocumented but available on GitHub.
如果你想在此基础上开发你自己的解决方案,我认为你应该注意第3节“特征和预处理”下的第4组使用的特征,即语言模型。
这可能还不够,但我认为获得每个长度为 n 的子序列的概率分数是一个好的开始。像“plants have with”、“have with done”、“done stems animal”、“stems animal with”和“that to predict”这样的3-gram似乎不太可能,这可能会导致整个句子被贴上“废话”标签.
这种方法的优点是依赖于学习模型而不是一组手工制定的规则,这是您的另一个选择。许多人会将您指向 Chapter 8 of NLTK's manual ,但我认为为通用英语开发自己的上下文无关语法要求有点高。
关于nlp - 从 "word salad"中区分结构良好的英语句子,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33067849/