我有 2 个可能重叠的电影标题列表,但可能以不同的形式编写。
它们位于熊猫的 2 个不同数据框中。因此,我尝试像这样将map()
函数与fuzzywuzzy
库一起使用:
df1.title.map(lambda x: process.extractOne(x, choices=df2.title, score_cutoff=95))
这给出了一些高质量的结果。但是时间复杂度如此之高,以至于我只能在两个数据帧的一个非常小的子集上运行它。当我尝试增加数据帧的大小时,它会迅速变得无法使用。
然后我尝试fuzzywuzzy
用difflib
. 而且速度要快得多。但我无法得到我想要的结果。
起初我试过:
df1.title.map(lambda x: difflib.get_close_matches(x, df2.title, n=1)
这很快,但结果的质量很差。甚至遗漏了一些简单的大写/小写更改。玩的cutoff
没有帮助。
所以我以为我使用了错误的工具。在我看到的get_close_matches
用于单个单词的文档和示例中。标题中有各种各样的词。
是SequenceMatcher
更好的选择吗?
如果是,那么我如何将其放入 中map()
,使其与上述功能相同:仅返回最佳结果,并且仅在结果高于某个比率时才返回?