确定文本输入的语法有效性

问题描述

我正在寻找某种方法来确定文本输入是否采用有效句子的形式;如果没有,我想向用户提供警告。我想警告用户的输入示例:

“狗帽子可以啊!”

"slkj ds dsak"

这似乎是一个难题,因为语法通常来自文本库,并且提供的句子输入中的单词可能不会出现在语法中。似乎解析器可能会假设文本输入由有效的英语单词组成。 (只是我使用斯坦福 NLP 的 GUI 工具的简短总结)。我的问题如下:

  1. 是否有一些工具可用于扫描文本输入并确定它是否由有效的英语单词组成,或者至少提供一个概率?如果没有,我可以写这个,只是想知道它是否已经存在。我认为这是确定语法正确性之前的第 1 步。
  2. 我的理解是,判断一个句子在语法上是否正确是通过尝试解析句子并查看是否可能来完成的。那是准确的吗?是否有概率解析器在遇到歧义时提供一定程度的置信度? (例如,未识别的专有名词)
  3. 我对最后一个问题犹豫不决,因为我看到它是 asked on SO over a decade ago,但是是否有关于 NLTK 的基本的、现成的语法的更新?我知道英语并不简单,但我真的只是想解析相对简单的单句输入。

谢谢!

解决方法

起点是在 Corpus of Linguistic Acceptability (CoLA) 任务上训练的分类模型。最近有几篇博客文章介绍了如何针对此任务微调 HuggingFace (python) 中的 BERT 模型。这是one such blog article。您还可以在 HuggingFace 模型动物园中找到针对各种 BERT 风格的 CoLA 已经微调的模型。