基于最大编辑距离的最可能词
Most Likely Word Based on Max Levenshtien Distance
我有list
个单词:
lst = ['dog', 'cat', 'mate', 'mouse', 'zebra', 'lion']
我还有一个 pandas
数据框:
df = pd.DataFrame({'input': ['dog', 'kat', 'leon', 'moues'], 'suggested_class': ['a', 'a', 'a', 'a']})
input suggested_class
dog a
kat a
leon a
moues a
我想用 lst
中与 input
列中的单词具有最大编辑距离的值填充 suggested_class
列。我正在使用 fuzzywuzzy
包来计算它。
预期输出为:
input suggested_class
dog dog
kat cat
leon lion
moues mouse
我知道可以用 autocorrect
包实现一些东西,比如 df.suggested_class = [autocorrect.spell(w) for w in df.input]
但这对我的情况不起作用。
我试过这样的事情(使用 from fuzzywuzzy import fuzz
):
for word in lst:
for n in range(0, len(df.input)):
if fuzz.ratio(df.input.iloc[n], word) >= 70:
df.suggested_class.iloc[n] = word
else:
df.suggested_class.iloc[n] = "unknown"
仅适用于设定的距离。我已经能够通过以下方式捕获最大距离:
max([fuzz.ratio(df.input.iloc[0], word) for word in lst])
但我无法将它与 lst 中的一个词联系起来,随后用该词填充 suggested_class
。
既然你提到了fuzzywuzzy
from fuzzywuzzy import process
df['suggested_class']=df.input.apply(lambda x : [process.extract(x, lst, limit=1)][0][0][0])
df
Out[1365]:
input suggested_class
0 dog dog
1 kat cat
2 leon lion
3 moues mouse
我有list
个单词:
lst = ['dog', 'cat', 'mate', 'mouse', 'zebra', 'lion']
我还有一个 pandas
数据框:
df = pd.DataFrame({'input': ['dog', 'kat', 'leon', 'moues'], 'suggested_class': ['a', 'a', 'a', 'a']})
input suggested_class
dog a
kat a
leon a
moues a
我想用 lst
中与 input
列中的单词具有最大编辑距离的值填充 suggested_class
列。我正在使用 fuzzywuzzy
包来计算它。
预期输出为:
input suggested_class
dog dog
kat cat
leon lion
moues mouse
我知道可以用 autocorrect
包实现一些东西,比如 df.suggested_class = [autocorrect.spell(w) for w in df.input]
但这对我的情况不起作用。
我试过这样的事情(使用 from fuzzywuzzy import fuzz
):
for word in lst:
for n in range(0, len(df.input)):
if fuzz.ratio(df.input.iloc[n], word) >= 70:
df.suggested_class.iloc[n] = word
else:
df.suggested_class.iloc[n] = "unknown"
仅适用于设定的距离。我已经能够通过以下方式捕获最大距离:
max([fuzz.ratio(df.input.iloc[0], word) for word in lst])
但我无法将它与 lst 中的一个词联系起来,随后用该词填充 suggested_class
。
既然你提到了fuzzywuzzy
from fuzzywuzzy import process
df['suggested_class']=df.input.apply(lambda x : [process.extract(x, lst, limit=1)][0][0][0])
df
Out[1365]:
input suggested_class
0 dog dog
1 kat cat
2 leon lion
3 moues mouse