文本异常



让我用一个例子来解释。我们有以下文本:

"Comme Il Faut成立于1927年。这家烟草公司以其为全球合作伙伴生产定制自有品牌的声誉而闻名。

这是正常的文本。但是下面的文本:

commeilfatwas成立于1927年。这家烟草公司以其为全球合作伙伴生产定制的私人品牌而闻名。

这是文本异常:打字错误,单词没有空格,可能还有其他东西。

如何查找此类异常?
这个(统计)有什么算法?

理想的结果是一个百分比:例如,80%的异常。

谢谢。

用字典中所有已知的单词构造一个tree树。找出课文中出现的每个单词,试着在tree树中找到它。如果你没有找到它,然后尝试匹配长度为k的前缀。如果找到匹配项,则对其余k个字符应用相同的过程。它是递归的,它可以捕获两个以上连接的单词

另一个简单的方法是使用编辑距离算法。该算法计算必须执行的编辑操作(插入、删除或替换)的最小数量,以便将字符串转换为另一个字符串。通过一些额外的逻辑,你可以很容易地让这个算法也输出操作。

然而,这假设你有正确的字符串和坏的字符串。如果你只有断弦,这就更难了。在这种情况下,我建议您尝试前面提到的trie方法,或者使用一些外部库(如isspell)来处理此逻辑。您可以查看一下isspell的代码或它的变体,看看这样的任务可能会变得多么复杂。

一些可能有用的链接:

http://www.codeproject.com/KB/cs/spellcheckdemo.aspx
http://www.codeproject.com/KB/recipes/spellcheckparser.aspx

最新更新