1

我需要解析一个句子。现在我有一个实现的 Earley 解析器和它的语法。当一个句子没有拼写错误时,一切都很好。但问题是我必须处理的很多句子都非常嘈杂。我想知道是否有一种将解析与纠错相结合的算法?可能的错误是:

  • 拼写错误 'cheker' 而不是 'checker'
  • 像“拼写检查器”而不是“拼写检查器”这样的拼写错误
  • 像“Ear par”这样的收缩而不是“Earley parser”

如果你知道一篇可以回答我的问题的文章,我会申请一个链接。

4

1 回答 1

1

我假设您正在使用在 Earley 解析器之前应用的标记器(或词法分析器)阶段,即将输入字符串拆分为标记并在字典中查找每个标记以确定其词性 (POS) 标记的算法(s):

John     --> PN
loves    --> V
a        --> DT
woman    --> NN
named    --> JJ,VPP
Mary     --> PN

应该可以在该阶段构建某种近似字符串查找(又名模糊字符串查找),因此当它出现拼写错误的标记时,例如“lobes”而不是“loves”,它不仅会识别标签通过精确的字符串匹配找到('lobes' 作为 'lobe' 的名词复数),但也有形状相似的标记('loves' 作为动词 'love' 的第三人称单数)。

这意味着您通常会为每个令牌获得更多的候选标签,因此在解析过程中可能会获得更多的解析结果。这是否会产生所需的结果取决于语法的综合程度,以及解析器在呈现许多可能的解析树时识别正确分析的能力。概率解析器可能对此更好,因为它为每个候选解析树分配一个概率(或置信度分数),可用于选择最可能(或最佳)的分析。

如果这是您想尝试的解决方案,有几种可能的实施策略。首先,如果标记化和标记是作为简单的字典查找执行的(即以词法分析器的方式),您可以简单地为字典使用能够实现近似字符串匹配的数据结构。近似字符串比较的一般方法在近似字符串匹配算法中进行了描述,而在较大字典中查找近似字符串的方法在快速比较字符串与 Java 中的集合中进行了讨论。

但是,如果您使用实际的标注器,而不是词法分析器,即除了字典查找之外还执行POS 消歧的东西,您将不得不在该标注器中构建近似的字典查找。必须有一个字典查找功能,用于在应用消歧之前生成候选标签,在标注器的某处。该字典查找必须替换为启用近似字符串查找的字典。

于 2012-09-12T00:03:10.830 回答