Если все имена имеют формат 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]
.