Jaccard索引缺少edit distan的可能匹配项

2024-06-16 09:34:37 发布

您现在位置:Python中文网/ 问答频道 /正文

在开发OCR校正模块时,我正在Python中进行实验。其思想是尝试使用bigrams、Jaccard索引和编辑距离来基于dictionary(vocab)来更正OCR中的每个单词。在

示例人声:

vocab = ['maze', 'mouse', 'mice', 'race', 'mike', 'mock', 'snake']

人声中的重量级人物:

^{pr2}$

输入搜索项

tbgrams = [term[i:i+2] for i in range(len(term)-1)]

计算每个单曲项的bigram点击数:

match = Counter()
for vbst in [vbgrams[tbg] for tbg in Set(tbgrams)&Set(vbgrams.keys())]:
    match += Counter(vbst) # vbst = Set([4,6]) - indexes for each vocab

最后,Jaccard索引:

out = list()
for (vi,c) in match.most_common():
    d = len(vocab[vi])-1 + len(tbgrams)
    print "%s\t\t: %d/(%d-%d) = (%.2f)" % (vocab[vi],c,d,c,float(c)/(d-c))
    if float(c)/d > 0.4: 
        out.append(vocab[vi])

当我提供术语“make”时,Jaccard索引是:

snake  : 2/(7-2) = (0.40)
maze   : 1/(6-1) = (0.20)
mike   : 1/(6-1) = (0.20)

因此,这三个项目都将被跳过。在

但是,如果我计算编辑距离和比率,我会得到可用值:

snake - 2 Ratio: 0.666666666667
maze  - 1 Ratio: 0.75
mike  - 1 Ratio: 0.75

二元图步骤是不必要的吗?如果Jaccard索引太低,直接按编辑距离来选择前10个人声匹配是否合适?在

注意:Jaccard索引没有可用的标记。在


Tags: in编辑距离forlenmatchmikevi