百晓生知识处理库去重和收集器方法和测试

该博客介绍了如何使用difflib库进行字符串相似度比较,以避免知识库中的重复内容。`mycollector`函数检查新字符串是否与现有列表中的元素高度相似,高于设定阈值则不加入。`quchong`函数遍历列表删除相似度高的项,保持知识库精简。在示例中,对一系列句子进行了去重操作。
摘要由CSDN通过智能技术生成

原创文章,转载请加出处 https://blog.csdn.net/gkbxs/article/details/112667004
知识处理库部分介绍:用来给知识按相似度来去重复的,还有就是收集新增字符串的,如果相似度很高就不再收入,保证知识的精简。

def mycollector(a,blist,set=0.9): 
    xsdlist=[]
    for i in blist:
        seq=difflib.SequenceMatcher(None, a, i)
        xiangsidu=seq.ratio()
        xsdlist.append(xiangsidu)
    print(xsdlist)
    print('最大值',max(xsdlist))
    if max(xsdlist)>=set:
        print('这个输入重复了哦 ')
    else:
        blist.append(a)
    return blist
testlist=['今天天气很好','明天去吃大餐','天气正好好','白日依山尽','黄河如海流','测试代码666','明天去吃大餐!','天气 正好好','这是一次删除测试']

def quchong(mylist,set=0.9):
    listlong=len(mylist)
    delindex=[]
    for i in mylist:
        newlist=mylist[int(mylist.index(i)+1):int(listlong)]
        for j in newlist:
            seq=difflib.SequenceMatcher(None, i, j)
            xiangsidu=seq.ratio()
            #print(xiangsidu)
            if xiangsidu>=set:
            	delindex.append(mylist.index(i))
    print('需要删除相似度很高的index是',delindex)
    for k in range(len(delindex)):
    	x=delindex.pop()
    	print(x)
    	del mylist[x] #这里有问题,删除前一个后,序号也变了
    print(mylist)
    return mylist

if __name__ == "__main__":
    hehe=quchong(testlist)
    print('测试返回',hehe)
    a='黄河如 海流!'
    oo=mycollector(a,testlist,set=0.7)
    print(oo)

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值