python实现字符串相似度比较排序

文章介绍了在数据中台录入大量词根/字典后,如何通过Python实现搜索关键词的排序,以提高长用词根查询效率。通过计算搜索关键词与词根的相似度,按降序排列,解决了查询不便的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求背景:

        数据中台建设完成时,在录入大量词根/字典后,搜索长用词根/字典时很不方便。比如"is",这个词根在很多单次中都会存在,如果不做返回结果的排序,那么查询使用时很不方便。

思路:

        我们可以将搜索关键词和搜索返回结果进行长度比较。然后按照从大到小排序(完全相同则为100%),实现相似度排序的效果。

python实现:

定义变量:

    ## 搜索关键词
    word = "aa"
    
    ## 词根/字典
    list1 = ["aaa", "aaaaaaaa",  "aaaaa", "aaaaaa", "aaaa","bbb", "ccc"]


    ## 过滤掉非匹配词根/字典结果数据存储
    list2 = []

    ##相似度计算结果
    dict1 = {}

过滤不匹配词根/字典,相似度计算:

    for i in list1:
        if word in i :
            list2.append(i)
            dict1[i] = len(word)/len(i)

    print(list2)
    print(dict1)
    ## ['aaa', 'aaaaaaaa', 'aaaaa', 'aaaaaa', 'aaaa']
    ## {'aaa': 0.6666666666666666, 'aaaaaaaa': 0.25, 'aaaaa': 0.4, 'aaaaaa': 0.3333333333333333, 'aaaa': 0.5}

根据相似度对结果进行排序:

    import operator
    sorted_dict = dict(sorted(dict1.items(),key=operator.itemgetter(1),reverse=True))
    print(sorted_dict)

    ##{'aaa': 0.6666666666666666, 'aaaa': 0.5, 'aaaaa': 0.4, 'aaaaaa': 0.3333333333333333, 'aaaaaaaa': 0.25}
    
    
    ##对列表排序
    sorted_list = sorted(list2, key=lambda x: dict1.get(x),reverse=True)
    print(sorted_list)

    ## ['aaa', 'aaaa', 'aaaaa', 'aaaaaa', 'aaaaaaaa']

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值