文本中的异常

时间:2011-04-15 07:14:51

标签: c# algorithm text-processing

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

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

这是普通文字。但是以下文字:

“CommeIlFaut于1927年成立。烟草公司最为人所知的是为全球合作伙伴生产定制的私人标签”

这是文本异常:拼写错误,没有空格的单词,也许是别的东西。

如何搜索此类异常情况?
有什么算法(统计)?

希望结果是百分比:例如,80%的异常。

感谢。

3 个答案:

答案 0 :(得分:1)

构造一个包含字典中所有已知单词的Trie树。 记下文本中的每个单词并尝试在Trie树中找到它。如果你没有找到它,那么尝试匹配length-k的前缀。如果找到匹配项,则对其余的k字符应用相同的过程。它是递归的,它可以捕获两个以上连接的单词

答案 1 :(得分:1)

另一种简单的方法是使用edit distance algorithm。此算法计算将字符串转换为另一个字符串时必须执行的最小编辑操作数(插入,删除或替换)。通过一些额外的逻辑,您可以轻松地获得此算法以输出操作。

但是,假设您同时拥有正确的字符串和损坏的字符串。如果你只有破损的字符串,这将变得更加困难。在这种情况下,我建议您尝试之前提到的trie方法,或者使用像ispell这样的外部库来让它处理这个逻辑。您可以查看ispell或其变体的代码,看看这样的任务可能会有多复杂。

答案 2 :(得分:0)