Соответствие последовательности в Python на основе последовательности приоритетов

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

Например.

"SG HOLDINGS" против "S2 HOLDINGS"

средство сравнения последовательности покажет, что эти два слова имеют более высокий коэффициент сходства по сравнению с "SG HOLDING" по сравнению с "SG Corp", однако последнее фактически является компанией, которую я ищу. Как я могу придать больший вес слову перед названием акции? Есть ли другая библиотека, которую я могу использовать?

Спасибо

1 ответ

Если все имена имеют формат PREFIX SUFFIX, вы можете разделить имена и применить ваш сопоставитель последовательности сначала к префиксам, затем к суффиксам, и, упаковав расстояния (скажем, расстояние Левенштейна) обратно в кортежи, вы получите:

1. ('SG', 'HOLDINGS') vs ('S2', 'HOLDINGS') → (1, 0)
2. ('SG', 'HOLDINGS') vs ('SG', 'Corp')     → (0, 8)
3. ('SG', 'HOLDINGS') vs ('SG', 'HOLD')     → (0, 4)
4. ('SG', 'HOLDINGS') vs ('S2', 'HOLDING')  → (1, 1)

Когда вы сортируете эти кортежи расстояний в порядке возрастания, порядок будет [3, 2, 1, 4],

Если названия акций содержат различное количество слов, вы можете сосчитать слова в самом длинном имени (например, скажем, самое длинное имя - "Samsung Electronics Ord Shares"; оно содержит 4 слова), а затем расширить все другие наборы частей имени с помощью пустые строки, чтобы соответствовать этой длине, прежде чем вычислять расстояния. Т.е. вы бы работали с: ('SG', 'HOLDINGS', '', ''),

Новые расстояния:

1. ('SG', 'HOLDINGS', '', '') vs ('S2', 'HOLDINGS', '', '') → (1, 0, 0, 0)
2. ('SG', 'HOLDINGS', '', '') vs ('SG', 'Corp', '', '')     → (0, 8, 0, 0)
3. ('SG', 'HOLDINGS', '', '') vs ('Samsung', 'E', 'O', 'S') → (6, 8, 1, 1)

теперь сортируй как [2, 1, 3],

Другие вопросы по тегам