如何在python中进行双向模糊匹配?

2024-09-30 06:30:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用fuzzyfuzzy对两个字符串列表进行模糊匹配。有没有一种方法可以做到两种方式,并获得两者的最大值,不只是循环通过并将每个字符串匹配到相反的集合?你知道吗

我遇到了一个问题,如下所示:

2019-06-13 15:02:39: INFO - List 1 - ['AHU05', 'AHU06', 'AHU07', 'RTU03', 'RTU04']
2019-06-13 15:02:39: INFO - List 2 - ['RTU3', 'RTU4', 'AH5', 'AHUG6', 'AHU07']

2019-06-13 15:02:39: INFO - RTU3 compared to List 1 is here - [('RTU03', 89), ('RTU04', 67), ('AHU05', 22), ...]
2019-06-13 15:02:39: INFO - RTU4 compared to List 1 is here - [('RTU04', 89), ('RTU03', 67), ('AHU05', 22), ...]
***2019-06-13 15:02:39: INFO - AH5 compared to List 1 is here - [('AHU05', 75), ('AHU06', 60), ('AHU07', 60), ...]
2019-06-13 15:02:39: INFO - AHUG6 compared to List 1 is here - [('AHU06', 80), ('AHU05', 60), ('AHU07', 60), ...]
2019-06-13 15:02:39: INFO - AHU07 compared to List 1 is here - [('AHU07', 100), ('AHU05', 80), ('AHU06', 80), ...]

***2019-06-13 15:02:39: INFO - AHU05 compared to List 2 is here - [('AHU07', 80), ('AH5', 75), ('AHUG6', 60), ...]
2019-06-13 15:02:39: INFO - AHU06 compared to List 2 is here - [('AHUG6', 80), ('AHU07', 80), ('AH5', 60), ...]
2019-06-13 15:02:39: INFO - AHU07 compared to List 2 is here - [('AHU07', 100), ('AH5', 60), ('AHUG6', 60), ...]
2019-06-13 15:02:39: INFO - RTU03 compared to List 2 is here - [('RTU3', 89), ('RTU4', 67), ('AHU07', 40), ...]
2019-06-13 15:02:39: INFO - RTU04 compared to List 2 is here - [('RTU4', 89), ('RTU3', 67), ('AHU07', 40), ...]

如您所见,AHU05和AH5以一种方式正确配对,而不是以另一种方式配对(由“***”突出显示)。这只是一个小例子,但在我的数据中,有几个例子表明,比较的方向似乎有所不同。每个方向在某些比较中起作用,而在其他方面则不起作用。(我理解为什么会这样,以及(理论上)匹配是如何工作的,我只是想解决这个问题。)

我的问题是:有没有办法比较两张单子,从两个方向中选一个最好的?也许将他们的两个方向的分数相乘或求和,得到一个“综合”分数,然后可以用来找到最佳匹配?这有道理吗?你知道吗

作为推论-有没有一种有效的方法来比较两个列表,并生成最佳的整体列表,而不必手动循环?你知道吗

编辑: 我试过使用内置的'difflib'并遇到类似的问题。你知道吗


Tags: toinfohereislistcomparedahu06ahu07

热门问题