2024-06-01 04:24:15 发布
网友
我正试图从股票名称列表中找到最接近的匹配词,我想把更多的优先权放在前面的词而不是后面的词,尽管后面的词可能有更多的字符
例如
“SG HOLDINGS”与“S2 HOLDINGS”
序列匹配将显示这两个词有更高的相似性比相比,“SG控股”和“SG公司”,但后者实际上是我要找的公司。我怎样才能给股票名称前面的词加上更多的权重呢?我还能用别的库吗
谢谢
如果所有名称都采用PREFIX SUFFIX格式,则可以拆分名称并将序列匹配器首先应用于前缀,然后应用于后缀,然后将距离(例如Levenshtein distance)打包回元组,得到:
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]
[3, 2, 1, 4]
如果股票名称包含不同的字数,您可以计算最长名称中的字数(例如,假设最长名称为“Samsung Electronics Ord Shares”;它包含4个单词),然后使用空字符串扩展所有其他名称部分元组以匹配此长度,然后再计算距离。例如,您将使用:('SG', 'HOLDINGS', '', '')
('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]排序
[2, 1, 3]
如果所有名称都采用
PREFIX SUFFIX
格式,则可以拆分名称并将序列匹配器首先应用于前缀,然后应用于后缀,然后将距离(例如Levenshtein distance)打包回元组,得到:当您将这些距离元组按升序排序时,顺序将是
[3, 2, 1, 4]
如果股票名称包含不同的字数,您可以计算最长名称中的字数(例如,假设最长名称为“Samsung Electronics Ord Shares”;它包含4个单词),然后使用空字符串扩展所有其他名称部分元组以匹配此长度,然后再计算距离。例如,您将使用:
('SG', 'HOLDINGS', '', '')
新距离:
现在按
[2, 1, 3]
排序相关问题 更多 >
编程相关推荐