У меня есть набор записей, как показано ниже.Нечеткое совпадение строк с использованием python
"product_id"|"prod_descr"|"status"|"last_upd_time"
"102317"|"TELMINORM CH 40/12.5MG TAB 10'S"|"A"|"2016-08-31 15:02:06.609879"
"99996"|"BECOSTAR TAB 15'S"|"A"|"2016-09-05 18:20:25"
"99997"|"SUPRADYN TABLET15S"|"A"|"2016-09-06 09:05:24"
"120138"|"LASILACTONE 50MG TABLET 10'S"|"A"|"2016-09-07 12:01:05"
"101921"|"TELMA 20MG TABLET 15S"|"A"|"2016-08-31 15:02:06.609879"
"1220"|"ACNESTAR SOAP 75GM"|"A"|"2016-08-31 15:02:06.609879"
"120147"|"AMANTREL CAPSULES 15S"|"A"|"2016-09-09 09:54:35"
"113446"|"VOLIX 0 3MG TABLET 15S"|"A"|"2016-08-31 15:02:06.609879"
"121294"|"maxifer xt syrup "|"A"|"2016-09-29 15:32:40"
"120151"|"PIRITON CS SYRUP 100ML"|"A"|"2016-09-09 14:30:46"
"103481"|"TERBICIP SPRAY 30ML"|"A"|"2016-08-31 15:02:06.609879"
"96175"|"SORBITRATE 5MG TABLET 50S"|"A"|"2016-08-31 15:02:06.609879"
Комплект такой же огромного, как миллион записей. Я хочу взять каждую запись (второе поле), скажем в строке 2 "TELMINORM CH 40/12.5MG TAB 10'S"
и сделать нечеткое сравнение с остальными записями и найти, существует ли подобный набор записей.
Пример будет TELMINORM CH 40/12.5MG TAB 10'S
такой же, как TELMINORM CH 40/12.5MG CAP 10'S
. Таблетка/капсула - это то, что подразумевается под TAB/CAP. В этом случае это дубликат записи.
Так что, чтобы устранить это, я использовал модуль distance
, а затем, если разница в строке меньше 5, я пишу в файл в формате ниже.
TELMINORM CH 40/12.5MG TAB 10'S - TELMINORM CH 80/12.5MG TAB 10'S, TELMINORM CH 40/12.5MG TAB 10'S, TELMINORM CH 40/12.5MG CAP 10'S
Логика, которую я использовал, выполняет трюк, но медленно. Он обрабатывает 150 записей за 1 час , что является очень медленным процессом.