NLP - 你如何解析高度嘈杂的句子(使用Earley解析器)

时间:2012-09-11 09:34:07

标签: parsing nlp spell-checking fuzzy-search earley-parser

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

  • 错别字'cheker'而不是'checker'
  • 像'拼写检查'而不是'拼写检查'的拼写错误
  • 收缩如'Ear par'而非'Earley parser'

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

如果这是您想尝试的解决方案,则有几种可能的实施策略。首先,如果将标记化和标记作为简单的字典查找(即以词法分析器的样式)执行,则可以简单地使用数据结构来实现近似字符串匹配的字典。 Approximate string matching algorithms中描述了近似字符串比较的一般方法,而Quickly compare a string against a Collection in Java中讨论了较大字典中近似字符串查找的方法。

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