首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中基于优先级序列的序列匹配器

python中基于优先级序列的序列匹配器
EN

Stack Overflow用户
提问于 2018-07-06 09:35:10
回答 1查看 92关注 0票数 0

我正在尝试从股票名称列表中找到最匹配的单词,我希望将更多的优先放在前面的单词上,而不是后面的单词上,尽管后面的单词可能有更多字符。

例如:

"SG控股“vs "S2控股”

序列匹配器将显示这两个词与"SG HOLDING“和"SG Corp”相比具有更高的相似度,但后者实际上是我正在寻找的公司。如何让股票名称前面的单词更有分量?有没有其他库可以让我使用?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-07-06 09:46:15

如果所有名称都具有PREFIX SUFFIX格式,则可以拆分名称,并首先将序列匹配器应用于前缀,然后应用于后缀,然后将距离(假设为Levenshtein distance)打包回元组,您将得到:

代码语言:javascript
复制
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', '', '')

新的距离:

代码语言:javascript
复制
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]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51201928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档