Python - 根据 Levenshtein 距离将列表 A 中最接近的字符串分配给列表 B -(最好使用 pandas)

Python - Assign the closest string from List A to List B based on Levenshtein distance - (ideally with pandas)

作为介绍,我是python的新手,我只是知道如何使用pandas主要用于数据分析。

我目前有 2 个包含 100 多个条目的列表,"Keywords""Groups".

我想生成一个输出(最好是 pandas 中的数据帧),其中对于列表的每个条目 "Keywords",最接近的条目使用 levenshtein 距离 方法分配列表 "Groups"

感谢您的支持!

from editdistance import eval as levenshtein
import pandas as pd

keywords = ["foo", "foe", "bar", "baz"]
groups = ["foo", "bar"]

assigned_groups = [min(groups, key=lambda g: levenshtein(g, k))
                   for k in keywords]

df = pd.DataFrame({"Keyword": keywords, "Group": assigned_groups})
#   Group Keyword
# 0   foo     foo
# 1   foo     foe
# 2   bar     bar
# 3   bar     baz

使用editdistance。用 pip install editdistance.

获取

请注意,此算法是 O(mn),其中 m 是关键字的长度,n 是组的长度。