谁能建议任何拼写检查的算法和技术?经过一番谷歌搜索,我发现了一些有趣的,比如来自 Peter Norvig 的这个,http://norvig.com/spell-correct.html和其他一些。然而,其中大部分是多年前写的。因此,我试图找出是否有任何更新/改进的方法来解决此类问题。
拼写检查的算法和技术
数据挖掘
机器学习
Python
nlp
算法
2021-10-13 13:31:56
3个回答
这是我建立的...
第 1 步:将所有单词存储在 Trie 数据结构中。关于特里的维基。
第 2 步:训练 RNN 或 RNTN 以获取单词的 seq2seq 映射并存储模型
第 3 步:检索与 levenshtein 距离的前 n 个单词。 关于 LD 的Wiki,其中包含您要纠正的单词。
- 朴素的方法:计算查询词和每个字典词之间的编辑距离。非常贵。
- Peter Norvig 的方法:从查询词中导出编辑距离<=2 的所有可能词,并在字典中查找它们。更好,但仍然很昂贵(字长=9 和编辑距离=2 的 114,324 个术语)检查这个。
- Faroo 的方法:仅从查询词和每个字典词中获取编辑距离<=2 的删除。快三个数量级。http://blog.faroo.com/2012/06/07 ...
步骤 4:根据前面的 2 个或 3 个或 4 个单词,预测从上面的步骤 3 检索到的单词。选择单词的数量取决于你想要多少准确度(当然我们想要 100% 的准确度),以及运行代码的机器的处理能力,你可以选择你想要考虑的单词数量。
也看看这个方法。这是 2009 年的 acl 论文。他们称之为 - 与语言无关的自动更正。
我假设您想在项目的清洁阶段执行此操作。Microsoft 认知服务提供拼写检查 API https://www.microsoft.com/cognitive-services/en-us/bing-spell-check-api。
如果您尝试将单词分组到嵌入中,那么我可能会建议使用 Word2Vec 或 Glove。Glove 是经过预训练的,并且每个向量具有不同的指定维数。但是,两者都可能导致拼写错误和相似之处。