我按照上面提到的例子开发了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
如何选择其中最可能的候选人。我希望你能为此提供某种解决方案。希望能见到你们。
答案 0 :(得分:0)
基于ngram,没有首选的更正选项。 一些拼写检查器确实提供了多种更正。 如果要选择1,则可以考虑添加其他选择规则,例如Levenshtein距离-单词之间单字符编辑的最小次数,或者给出每个字母的显着性得分(例如,使z值大而e值小,因为z不太可能被错误地写入)。