Соответствие последовательности в Python на основе последовательности приоритетов - PullRequest
0 голосов
/ 06 июля 2018

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

Например.

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

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

Спасибо

1 Ответ

0 голосов
/ 06 июля 2018

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

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