基于规则嵌入的论文比对系统(15)-重新生成训练集

说明

在和老师交流讨论之后,我们又发现了我们整个项目还存在一些不足之处,所以这两天又在原来的基础上做了一些调整。

项目调整的几个方面(写的比较简略)

  • 两个规则(全局的keywords+局部的提取的keywords)的修改,之前只是简单的计算杰卡德相似度,现在要改成语义相关的
  • loss函数修改
  • 可视化-子空间sentence的highlight
  • 规则嵌入的模型和无规则嵌入的模型的比较
  • ccs树修改

我主要负责重新生成训练集,在搭建一个无规则嵌入的模型的部分

这篇博客主要介绍一下重新构建训练集的函数代码

思路

之前生成的训练集单纯的只是根据文本相似度生成的训练集,这次是融合了四个规则,考虑五个方面进行数据集的构建,四个规则分别是:

  • 参考文献的相似度
  • 关键词相似度(全局)
  • ccs分类相似度
  • 子空间提取的关键词相似度(局部)

每个规则各占0.15的比例,文本相似度占0.4的比例。
在每个子空间上,为每个论文寻找一个和它相似的正样本,和四个和他不相似的负样本。总共选取了40租,200对。

说明:重新构建训练集的实践非常长,因为需要遍历的计算,在每个子空间上重新生成一个新的训练集都需要将近10个小时左右,所以在这里花费了非常多的时间。

代码

def train_pairs_pos_neg(SubSpace_dict,subid):
    documents=[]
    index_list=[]
    for key,value in SubSpace_dict.items():
        index_list.append(key)
        documents.append(value)
    SubSpace_train_pairs=[]
    doc_similar=DocumentSimilar(documents)
    sub_item=list(SubSpace_dict.items())[:40]
    for key,value in sub_item:
        a=key
        temp=list(doc_similar.get_similar(value))
        i=index_list.index(a)
        for j in tqdm(range(len(temp))):
            rules_list=rulesEmbbeding(index_list[i],index_list[j],subid)
            temp[j]=0.4*temp[j]+0.15*rules_list[0]+0.15*rules_list[1]+0.15*rules_list[2]+0.15*rules_list[3]
            pass
        temp_=temp.copy()
        Second_Num=SecMax(temp_)
        Second_Maxnum_Index=temp.index(Second_Num)
        b=index_list[Second_Maxnum_Index]
        SubSpace_train_pairs.append([a,b,Second_Num])  
        min_num_index_list = list(map(temp.index, heapq.nsmallest(4, temp)))
        for each in min_num_index_list:
            print(min_num_index_list)
            SubSpace_train_pairs.append([a,index_list[each],temp[each]])       
    return SubSpace_train_pairs

遇到问题

  • 问题一

重新生成完了所有的训练集之后发现,模型训练的时候,预测准确率越来越小,非常奇怪。
后来找了半天,发现是其中一个规则函数的问题。有一个规则函数的返回值可能是nan,就导致输入模型的序列话数据中存在nan,这是不正确的,所以我就修改了一下这个函数最终解决了问题。
在这里插入图片描述
圈红圈的部分是我在队友发来的代码上修改的地方,从而解决了返回值存在nan值的问题。

  • 问题二
    当函数不在大量的数据上测试的时候往往难以发现它的bug,因为我要将队友们负责的规则部分的函数部分和我搭建模型整合起来,在模型训练的时候,因为涉及到的数据比较多,就增加了报错的可能性,所以我就需要对这些规则函数做调整:

在这里插入图片描述
红框的部分是我调整的部分。
把文件的读取都挪到了函数之外,这样就避免了后面重复的读取这些文件,从而可以提高速度。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值