繁体   English   中英

计算两个列表之间的编辑距离的最有效方法?

[英]Most effective way to calculate Edit distance between two lists?

我有两个文件,一个是 CSV,另一个是文本文件。 它们都包含 Unicode 个单词。 我的任务是比较这两个文件中的单词以纠正拼写错误。(CSV 文件包含拼写错误的单词,文本文件包含正确的单词)CSV 文件包含大约 1000 个单词,文本文件包含 5000 个单词。 我已经为此任务实现了以下代码,因为我是 python 的新手,所以效率非常低。 有什么建议可以提高效率。

import pandas as pd
import nltk
 
df = pd.read_csv('C:/mis_spel.csv',encoding='utf8')
list_check_words = df['words'].tolist()

df2 = pd.read_csv('C:/words.txt',encoding='utf8',delimiter='\t')
list_words = df2['word'].tolist()
 
for word in list_check_words:
    for dix in list_words:
        ed = nltk.edit_distance(word, dix)
        if (ed<2):
            print(word, dix, ed)

这对于您的用例来说可能有点矫枉过正,但无论如何我还是把它放在这里。 AFAIK,如今拼写自动更正的行业标准涉及通过词嵌入的视角来看待问题。 在过去,曾使用过基于 n-gram 的概率方法,但现在已不再使用。

你想要做的,可能是这样的:

  1. 训练一个 model 来产生字符级的词嵌入
  2. 将整个字典投影到您的向量空间并构建索引以进行高效搜索
  3. 对于每个拼错的单词,将其与最近的邻居配对。

我在下面添加了对两篇不同文章的引用,它们对此进行了更详细的解释。 不过有一个建议,请尝试探索来自gensim的 ANNOY 索引,它对于近似最近邻搜索来说非常快。 从个人经历来说。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM