Как сделать двустороннее нечеткое сопоставление в python? - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь использовать fuzzywuzzy для нечеткого сопоставления двух списков строк.Есть ли способ сделать это двумя способами, и получить максимум из обоих, за исключением простого циклического прохождения и сопоставления каждой строки с противоположным набором?

Я столкнулся с проблемой, иллюстрируемой следующим:

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 и сталкиваются с аналогичными проблемами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...