Pandas 在levenshtein距离/模糊分数上查找类似单词

Pandas 在levenshtein距离/模糊分数上查找类似单词,pandas,spell-checking,levenshtein-distance,Pandas,Spell Checking,Levenshtein Distance,我正试图清除网站上的搜索词。由于搜索词来自电子商务网站,因此无法使用PYspellchecker进行更正。 经过研究,我知道我们可以使用levenshtein距离,但我不知道如何在单个列上实现它。我有300K搜索词,唯一可能的方法是使用df转置。但它不工作,因为我得到了一个内存越界错误 from pandas import DataFrame Cars = {'Words': ['Walmart','Walnart','Audi','Aoudi','udi','Falmart','Audi A

我正试图清除网站上的搜索词。由于搜索词来自电子商务网站,因此无法使用PYspellchecker进行更正。 经过研究,我知道我们可以使用levenshtein距离,但我不知道如何在单个列上实现它。我有300K搜索词,唯一可能的方法是使用df转置。但它不工作,因为我得到了一个内存越界错误

from pandas import DataFrame

Cars = {'Words': ['Walmart','Walnart','Audi','Aoudi','udi','Falmart','Audi A4'],
        'count': [22000,300,27000,300,50,300,3000]
        }

df = DataFrame(Cars,columns= ['Words', 'count'])
字数很重要 沃尔玛22000 沃尔纳特300 奥迪27000 奥迪300 udi 50 Falmart 300 奥迪A4 3000

我想要下面这样的结果

Words   Similar_word    Score
Walmart Walmart 100
Walnart Walmart 90
Audi    Audi    100
Aoudi   Audi    90
udi Audi    85
Falmart Walmart 85
Audi A4 Audi A4 100

我的逻辑不是将沃尔玛与奥迪相比较。其次,奥迪A4相距3 levenshtein距离,因此它被视为一个单独的术语。

我看不到这里的代码实际产生了内存错误,但问题可能是您正在将300K中的每个单词与其他每个单词进行比较。但这是没有办法的:如果你首先用列文施泰因来确定相似性,你不知道“沃尔玛”和“奥迪”是高度不同的,直到你比较它们并观察它们有多不同。您可以在事后过滤比较结果,只保留相近的匹配项,但无法避免首先对所有内容进行比较。我看不到此处实际产生内存错误的代码,但问题可能是您正在将300K中的每个字与其他每个字进行比较。但这是没有办法的:如果你首先用列文施泰因来确定相似性,你不知道“沃尔玛”和“奥迪”是高度不同的,直到你比较它们并观察它们有多不同。您可以在事后过滤比较结果,只保留相近的匹配,但无法避免首先对所有内容进行比较。