ngram基于字符的拼写检查

时间:2018-04-12 07:46:25

标签: python nlp n-gram spelling

我按照上面提到的例子开发了n克拼写检查。虽然算法方法如下:

考虑2个字符串“statistics”和“statistics”。如果n设置为2(正在提取二元组),则两个字符串的相似度计算如下:

最初,这两个字符串被拆分为二元组:

统计数据 - 最后的时间是9个bigrams

统计 - 时间是最重要的10个双子座

然后在每个字符串中找到唯一的二元组

统计数据 - 最后是7个独特的双桅帆船

统计 - 时间是ic ca al(8个独特的双子座)

接下来,找到与这两个术语共享的唯一二维码。

有6个这样的双语:ic是ic。

使用具有以下公式的相似系数计算相似性度量:

相似系数= 2 * C / A + B

A - unique n-grams in term 1.
B - unique n-grams in term 2.
C - unique n-grams appearing in term 1 and term 2.

以上示例将产生结果(2 * 6)/(7 + 8)= 0.80。相似性度量越高,更正相关的是校正词。

该程序的示例输出如下:

Enter a word: ttem
temp : 0.5
stem : 0.5
items : 0.4444444444444444
item : 0.5

如何选择其中最可能的候选人。我希望你能为此提供某种解决方案。希望能见到你们。

1 个答案:

答案 0 :(得分:0)

基于ngram,没有首选的更正选项。 一些拼写检查器确实提供了多种更正。 如果要选择1,则可以考虑添加其他选择规则,例如Levenshtein距离-单词之间单字符编辑的最小次数,或者给出每个字母的显着性得分(例如,使z值大而e值小,因为z不太可能被错误地写入)。