高效算法对HTML文档进行拼写检查

时间:2009-12-24 06:57:20

标签: python html algorithm performance spell-checking

我有一个HTML文档,一个常见的拼写错误列表,以及每个案例的正确拼写。 HTML文档最多可达50页,并且有大约30K的拼写更正条目。

纠正此HTML文档中所有拼写错误的有效方法是什么?
(注意:如果你知道任何相关的库,我的实现将在Python中。)


我想到了两种可能的方法:

  • 构建拼写数据的哈希表
  • 解析HTML中的文字
  • 将空格分成文本
  • 如果拼写哈希表中的标记替换为更正
  • 使用更新的文本构建新的HTML文档

这种方法将失败,因为多字拼写修正将存在。以下是一种更简单但看似效率较低的方法,适用于多字词:

  • 迭代拼写数据
  • 在HTML文档中搜索单词
  • 如果单词存在则替换为更正

2 个答案:

答案 0 :(得分:3)

你是对的,第一种方法比第二种方法快得多(另外,我建议调查Tries而不是直接哈希,对于30k字,空间节省将非常显着)。

要仍然能够处理多字案例,您可以跟踪前一个令牌,从而检查哈希值是否为“prev cur”等组合字符串。

否则你可以将多字修正从哈希中移除并合并你的两种方法,首先使用单个字的哈希,然后对多字组合进行扫描(反之亦然)。如果多字校正的数量相对较小,这仍然可以相对较快。

小心,拔出单词标记比分裂空白更难。你不想仅仅因为没有找到'instence'而在你的哈希中使用逗号来纠正错误。

答案 1 :(得分:2)

我同意Rob建议使用基于角色的trie,因为我在很久以前编写了一个拼写校正算法,其基础是将有效单词的字典存储为trie。通过使用分支和绑定,我能够建议拼写错误的单词拼写(Levenshtein distance)。另外,由于trie只是一个大型的有限状态机,因此可以很容易地添加公共前缀和后缀,因此它可以处理“postnationalizationalism”之类的“单词”。