如果所有名称的格式都为PREFIX SUFFIX,您可以拆分名称并将序列匹配器首先应用于前缀,然后应用于后缀,然后将距离(比如Levenshtein distance)打包回元组,您会得到:
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]。