У меня есть 2 источника информации для одних и тех же данных (компании), к которым я могу присоединиться через уникальный идентификатор (номер договора). Наличие второго, другого источника связано с тем, что 2 источника обновляются вручную, независимо. Итак, у меня есть ID и компания Имя в 2 таблицах.
Мне нужно придумать алгоритм , который бы сравнивал Имя в 2 таблицах для одного и того же ID и упорядочил все компании по переменная, которая указывает, насколько разные строки (чтобы выделить самые разные, чтобы быть в верхней части списка).
Я посмотрел на простой алгоритм вычисления расстояния Левенштейна, но он на буквенном уровне, поэтому я все еще ищу что-то лучшее.
Причина, по которой Левенштейн на самом деле не выполняет свою работу, заключается в следующем: у компаний есть название, префикс или постфикс с организационной формой (LTD, JSC, co. И т. Д.). Так что у нас может быть много JSC "Foo"
, которое будет сильно отличаться от Foo JSC.
, но то, что я действительно ищу в базе данных, это пары разных строк, таких как SomeLongCompanyName JSC
и JSC OtherName
.
Есть ли хорошие способы сделать это? (Мне не очень нравится идея использовать регулярные выражения для разделения слов в каждой строке, а затем находить совпадения для каждого слова в другой строке, используя расстояние Левенштейна, поэтому я ищу другие идеи)