CN115062607A - 对比学习的样本构造方法、装置、计算机设备及存储介质 - Google Patents

对比学习的样本构造方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN115062607A
CN115062607A CN202210985948.1A CN202210985948A CN115062607A CN 115062607 A CN115062607 A CN 115062607A CN 202210985948 A CN202210985948 A CN 202210985948A CN 115062607 A CN115062607 A CN 115062607A
Authority
CN
China
Prior art keywords
batch
data
sample
samples
sim
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210985948.1A
Other languages
English (en)
Other versions
CN115062607B (zh
Inventor
张星
金霞
刘伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Huiyidao Technology Co.,Ltd.
Original Assignee
Hangzhou Firestone Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Firestone Technology Co ltd filed Critical Hangzhou Firestone Technology Co ltd
Priority to CN202210985948.1A priority Critical patent/CN115062607B/zh
Publication of CN115062607A publication Critical patent/CN115062607A/zh
Application granted granted Critical
Publication of CN115062607B publication Critical patent/CN115062607B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/237Lexical tools
    • G06F40/242Dictionaries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Machine Translation (AREA)
  • Character Discrimination (AREA)

Abstract

本发明公开了一种对比学习的样本构造方法、装置、计算机设备及存储介质。本发明首先利用Bert将训练集问句数据转化为向量,用余弦相似度来衡量训练集问句数据之间的相似性,选择相似度值低于相似度阈值的不相似样本作为每个batch中的负样本,规避掉可能相似的样本被作为负样本,解决了因数据集中存在相似样本,导致SimCSE模型训练误差下降慢甚至推理不佳的技术问题。此外,本发明还提出了一种正样本的构造方法,利用每达到预设字符长度阈值,随机重复当前阈值范围内的一个或几个字符,从而构建对比学习的正样本,以克服模型在训练中可能会走入误区,倾向于两个有相近字符长度的句子更有相似性,而长度不同的句子间相似性较小的技术问题。

Description

对比学习的样本构造方法、装置、计算机设备及存储介质
技术领域
本发明涉及一种对比学习的样本构造方法、装置、计算机设备及存储介质。
背景技术
NLP自然语言处理中的一个基础任务就是句向量嵌入,即将一个句子转化为一定维度的向量,用该向量来表示原句所具体的含义和特征。利用句向量,可以完成诸如文本分类、STS(语义相似度计算)等各种下游任务。比较简单获取句向量的方法有两种:
第一种是在业界普遍使用的Bert模型中,直接利用Bert模型产生的句向量做余弦相似度计算,会发现两个差别很大的句子也有较高的相似度,这会导致下游的任务,如根据相似度召回的效果差。另一种通用的方式是使用对比学习,其中一种是无监督的方式,从大量语料中训练获取句向量,SimCSE模型和ESimCSE模型就是通过对比学习,在无监督数据的情形下进行句嵌入,并且生成了质量较好的句向量,主要是利用自身Dropout后的数据作为其正样本,利用一个batch内其他数据作为负样本,训练目标是降低对比学习的损失,增加互为正样本数据之间的相似度,减小与负样本数据间的相似度。
然而在SimCSE模型中,由于transformer的位置编码信息,通过Dropout构建互为正样本的数据含有相同的长度信息,而与负样本间大都存在不同的字符长度。因此,模型在训练中可能会走入误区,倾向于两个有相近字符长度的句子更有相似性,而长度不同的句子间相似性较小。ESimCSE模型中已经有了改善,ESimCSE对分词后的词汇进行重复,但是在中文自然语言处理领域,分词难度较大,获取准确分词的结果往往需要付出更多的努力。对于仅利用Dropout来获取正样本的方法,会导致互为正样本的数据有相近的句子长度的技术问题,改变句子长度的方式是删除或新增其他字符,但是随机删除的是一些关键字符,如否定字符,会彻底改变整个句子的意思;新增非句子中的其他字符,又会引入额外的强噪音。
另外,在搜集的领域训练数据集中,无法避免数据集中存在相近语义的数据。在SimCSE模型和ESimCSE模型的方案中,取一个batch内的其他样本作为负样本,在这种情况下,随机取样完全有可能将原本语义相近的样本(实际应该被用来做正样本)作为负样本来对待,即数据集中存在相近语义数据,当batch_size足够大或者训练次数足够多的情况下,一个batch内完全有可能取到有相近语义的数据,但这些数据按照SimCSE方案中描述,被用来作互为负样本。如果数据集内相似的数据存在较少,则会造成训练误差下降慢的问题;如果数据集内相似数据存在较多,则SimCSE模型推理时效果表现不佳。
发明内容
本发明的目的在于提出一种医疗领域对比学习的样本构造方法,以解决因数据集中存在相似样本,进而会导致SimCSE模型训练误差下降慢甚至推理不佳的问题。
本发明为了实现上述目的,采用如下技术方案:
一种医疗领域对比学习的样本构造方法,包括如下步骤:
步骤1. 收集中文医学领域问题数据,并对获取的问题数据进行清洗,然后将清洗后的数据拆分为问句数据训练集和测试集;
拆分处理后的训练集和测试集分别按照每行一条的形式存入到.csv格式文件中;
步骤2. 将所有训练集问句数据依次通过Bert进行文本嵌入,将Bert的最后一层hidden layer状态作为其Embedding输出,每条训练集问句数据都唯一对应一个多维向量;
与训练集问句数据一一对应的向量数据均存储到向量数据库中;
步骤3. 利用向量间夹角的余弦值来度量相似性,分别计算步骤2得到的向量数据库中任意两个向量之间的相似度值,相似度阈值记为sim_threshold;
步骤4. 根据向量数据库中任意两个向量之间的相似度值与相似度阈值sim_threshold的大小关系创建一个python字典,记为sim_dict,用来存储相似数据;
其中,sim_dict的key是训练集中每条问句数据,sim_dict的value是与问句数据key的相似度值大于或等于相似度阈值sim_threshold的所有问句数据,包含key自身;
步骤5. 定义训练过程中训练的epoch的数量为epoch_num,每个epoch包含整数个batch,batch数量记为batch_num,每个batch中的样本数量记为batch_size;
在每个batch取样数据开始之前,先随机从训练集的问句数据中选择不重复的batch_num个数据x,将每个数据x对应作为一个batch的第一个问句数据样本;
每个epoch开始之前,都会重复该过程,获取所有batch的第一个问句数据样本;
步骤6. 基于训练集数据以及sim_dict,依次构建每个batch内的各个负样本,过程如下:
步骤6.1. 定义参数i,i的初值为2,取一个batch内第i个样本的方法如下:
该batch内第i个样本无法选择的范围Di是该batch内已经选择的前i-1个样本在sim_dict中value值的和,从训练集中随机选择一个不在范围Di内的数据作为第i个样本;
步骤6.2. 判断i的值是否达到batch_size,若i小于batch_ size,则i=i+1,重复上述步骤6.1;若i的值等于batch_ size,则一个batch内的所有样本取样完成;
步骤7. 构造每个batch中的正样本,具体过程如下:
预设字符阈值word_threshold,取一个batch中的第一个样本,从该样本的句首开始,当样本数据的内容每超过word_threshold,则在当前阈值范围内随机重复至少一个字符。
此外,在上述医疗领域对比学习的样本构造方法的基础上,本发明还提出了一种与之相对应的医疗领域对比学习的样本构造装置,其技术方案如下:
一种医疗领域对比学习的样本构造装置,包括:
数据收集以及预处理模块,用于收集中文医学领域问题数据,并对获取的问题数据进行清洗,然后将清洗后的数据拆分为问句数据训练集和测试集;
拆分处理后的训练集和测试集分别按照每行一条的形式存入到.csv格式文件中;
向量生成模块,用于将所有训练集问句数据依次通过Bert进行文本嵌入,将Bert的最后一层hidden layer状态作为其Embedding输出,每条训练集问句数据都唯一对应一个多维向量;
与训练集问句数据一一对应的向量数据均存储到向量数据库中;
相似度值计算模块, 利用向量间夹角的余弦值来度量相似性,分别计算所述向量数据库中任意两个向量之间的相似度值,相似度阈值记为sim_threshold;
python字典创建模块,用于根据向量数据库中任意两个向量之间的相似度值与相似度阈值sim_threshold的大小关系创建一个python字典,记为sim_dict,用来存储相似数据;
其中,sim_dict的key是训练集中每条问句数据,sim_dict的value是与问句数据key的相似度值大于或等于相似度阈值sim_threshold的所有问句数据,包含key自身;
batch内第一个样本构建模块,用于在每个batch取样数据开始之前,先随机从训练集的问句数据中选择不重复的batch_num个数据x;
将每个数据x对应作为一个batch的第一个问句数据样本;
定义训练过程中训练的epoch的数量为epoch_num,每个epoch包含整数个batch,batch数量记为batch_num,每个batch中的样本数量记为batch_size;
每个epoch开始之前,都会重复该过程,获取所有batch的第一个问句数据样本;
batch内负样本构建模块,基于训练集数据以及sim_dict,按照下述步骤依次构建每个batch内不相似的各个负样本;具体过程如下:
定义参数i,i的初值为2,取一个batch内第i个样本的方法如下:
该batch内第i个样本无法选择的范围Di是该batch内已经选择的前i-1个样本在sim_dict中value值的和,从训练集中随机选择一个不在范围Di内的数据作为第i个样本;
判断参数i的值是否达到batch_size,若i小于batch_ size,则i=i+1,重复上述步骤;若i的值等于batch_ size,则一个batch内的所有样本取样完成;
batch内正样本构造模块,用于按照下述步骤构造每个batch中的正样本;
预设字符阈值word_threshold,取一个batch中的第一个样本,从该样本的句首开始,当样本数据的内容每超过word_threshold,则在当前阈值范围内随机重复至少一个字符。
此外,在上述医疗领域对比学习的样本构造方法的基础上,本发明还提出了一种用于实现上述医疗领域对比学习的样本构造方法的计算机设备。
该计算机设备包括存储器和处理器,存储器中存储有可执行代码,处理器执行所述可执行代码时,用于实现上面述及的医疗领域对比学习的样本构造方法。
此外,在上述医疗领域对比学习的样本构造方法的基础上,本发明还提出了一种用于实现上述医疗领域对比学习的样本构造方法的计算机可读存储介质。
该计算机可读存储介质,其上存储有程序,当该程序被处理器执行时,用于实现上面述及的医疗领域对比学习的样本构造方法。
本发明具有如下优点:
如上所述,本发明述及了一种医疗领域对比学习的样本构造方法及装置。其中,样本构造方法首先利用预训练模型Bert将训练集问句数据转化为向量,用余弦相似度来衡量训练集问句数据之间的相似性,选择相似度值低于相似度阈值的不相似样本作为每个batch中的负样本,规避掉可能相似的样本被作为负样本,很好地解决了因数据集中存在相似样本,进而导致的SimCSE模型训练误差下降慢甚至推理不佳的技术问题。此外,本发明还提出了一种正样本的构造方法,利用每达到预设字符长度阈值word_threshold,随机重复当前阈值范围内的某个字符,来构建对比学习的正样本,以克服模型在训练中可能会走入误区,倾向于两个有相近字符长度的句子更有相似性,而长度不同的句子间相似性较小的技术问题。
附图说明
图1为本发明实施例中医疗领域对比学习的样本构造方法的流程框图。
图2为本发明实施例中医疗领域对比学习的样本构造方法的流程示意图。
具体实施方式
下面结合附图以及具体实施方式对本发明作进一步详细说明:
如图1和图2所示,本实施例述及了一种医疗领域对比学习的样本构造方法,该医疗领域对比学习的样本构造方法,包括如下步骤:
步骤1. 收集中文医学领域问题数据,约5000条。
数据主要来源于医学资讯类网站中的在线问诊咨询相关栏目,数据内容主要是患者、用户在使用药物过程中提出的疑问或者对于某些症状提出的问诊方案。
对获取的问题数据进行清洗,数据清洗包括:
去除空格、非汉字和非数字字符、所有全角数据转换成半角数据等预处理操作。
将清洗后的数据拆分为问句数据训练集和测试集,拆分比例例如按照4:1,即将4000条数据作为训练集数据,1000条数据作为测试集数据。
其中,训练集数据用于模型训练,而模型的验证和评估都采用测试集数据。
将拆分处理后的训练集和测试集分别按照每行一条的形式存入到.csv格式文件中。
步骤2. 将所有训练集问句数据依次通过Bert进行文本嵌入,将Bert的最后一层hidden layer状态作为其Embedding输出,每条训练集问句数据都唯一对应一个多维向量。
本实施例中多维向量的维数例如为768维,所有向量数据均存储到向量数据库中。
举例:将【抗生素使用方法】输入到预训练模型Bert后,Embedding得到对应一个768维的向量,前6维依次是[0.23481599986553192,0.34958767890930176,0.30441945791244507,0.658581018447876,-0.8817360997200012,-0.6501903533935547,......]。
每一条训练集问句数据都有唯一对应的向量,并且问句数据不同,得到的该结果不同。与训练集中问句数据对应的所有向量数据都存储在如Milvus向量数据库中。
步骤3. 利用向量间夹角的余弦值来度量相似性,分别计算步骤2得到的向量数据库中任意两个向量之间的相似度值,相似度阈值记为sim_threshold。
sim_threshold是一个浮点型数值,将作为一个模型训练的超参数。
本实施例中相似度阈值sim_threshold例如设定为0.5。
如果向量数据库中任意两个向量之间相似度值大于或等于sim_threshold,则两个向量对应的训练集问句数据存在相似性,则不能放在同一个batch中。
如果向量数据库中任意两个向量之间的相似度值小于sim_threshold,则两个向量对应的训练集问句数据存在较低的相似性,因而能够放在同一个batch中。
步骤4. 根据向量数据库中任意两个向量之间的相似度值与相似度阈值sim_threshold的大小关系创建一个python字典,记为sim_dict,用来存储相似数据。
在batch取样本的时候可以避开这些值,取低于相似度阈值的问句数据进行训练。
sim_dict的key是训练集中每条问句数据,sim_dict的value是与问句数据key的相似度值大于或等于相似度阈值sim_threshold的所有问句数据,包含key自身。
举例:利用Milvus向量库可以快速方便的计算向量间的相似度,避免大量而又耗时的向量计算。sim_dict中其中一个问句数据的例子:
{"抗生素使用方法":["抗生素使用方法", "抗生素如何使用", ...]}。
在sim_dict中,“抗生素使用方法”就是sim_dict其中的一个key,["抗生素使用方法", "抗生素如何使用", ...]就是sim_dict中key值为“抗生素使用方法”对应的value值。
其中,value值中所有的元素都与key值为“抗生素使用方法”相似度大于相似度阈值sim_threshold。在本实施例中,经过相似度值计算,“抗生素使用方法”和“抗生素如何使用”对应的向量之间的相似度为0.9547,高于本实施例中设定的相似度阈值0.5。
步骤5. 在模型训练过程中,一般训练整数个epoch。
定义训练过程中训练的epoch的数量为epoch_num,每个epoch包含整数个batch,batch数量记为batch_num,每个batch中的样本数量记为batch_size。
其中,epoch_num、batch_num与batch_size都是模型训练中的超参数。
在每个batch取样数据开始之前,先随机从训练集的问句数据中选择不重复的batch_num个数据x,将每个数据x对应作为一个batch的第一个问句数据样本。
每个epoch开始之前,都会重复该过程,获取每个epoch所包含的所有batch的第一个问句数据样本,如此设计,可以保证每个epoch之间的问句数据选择不影响。
步骤6. 构建一个batch内的负样本,在上一步骤5中,已随机选择了每个batch的第一个样本数据,从该第一个样本数据出发,依次取样batch内的其他样本数据。
本实施例基于上述训练集数据以及创建的sim_dict,构建一个batch内负样本的过程如下:
步骤6.1. 定义参数i,i的初值为2,取一个batch内第i个样本的方法如下:
该batch内第i个样本无法选择的范围Di是该batch内已经选择的前i-1个样本在sim_dict中value值的和,从训练集中随机选择一个不在范围Di内的数据作为第i个样本;
步骤6.2. 判断i的值是否达到batch_size,若i小于batch_ size,则i=i+1,重复上述步骤6.1;若i的值等于batch_ size,则一个batch内的所有样本取样完成。
举例:记每个batch内的第一个样本为A,A在相似度字典sim_dict中的value,记为value_sim_A。此时,该batch内第二个样本无法选择的范围是value_sim_A,因value_sim_A中的每个元素都与A相似。因此,该batch中的第二个样本的选择范围是在训练集的所有样本中,同时不在value_sim_A中,从该范围内随机选择一个样本即可。此时选取B为batch内的第二个样本,相似度字典sim_dict中B的value,记为value_sim_B。
接下来选择该batch的第三个样本,此时需要先计算第三个样本不可选择的范围,即前面两个已经选择的样本在sim_dict中值之和,即value_sim_A+value_sim_B。因此该batch中的第三个样本的从训练集的所有样本中,同时不在value_sim_A+value_sim_B的范围内随机选择一个样本即可。此时选取C为batch内的第三个样本,相似度字典sim_dict中C的value,记为value_sim_C。
该batch内的第四个样本无法选择的范围是该batch内已经选择的元素在相似度字典中值的和,也就是value_sim_A+value_sim_B+value_sim_C。因此该batch中的第四个样本的从训练集的所有样本中,同时不在value_sim_A+value_sim_B+value_sim_C的范围内随机选择一个样本即可。此时选取D为batch内的第四个样本,相似度字典sim_dict中D的value,记为value_sim_D。
按照上述方法依次类推,直到一个batch的数据量达到batch_size,该batch已经满足训练要求。以上步骤可以保证一个batch中所有的样本相似度不大,很好地解决了因数据集中存在相似样本,导致SimCSE模型训练误差下降慢甚至推理不佳的问题。
在实际中,由于训练集样本数量较少或者训练集中数据存在大量相似的情况下,会存在一种异常取样情况,具体情况如下:
在取一个batch内的样本时,设定当前已经取至第i个样本,该第i个样本无法选择的样本范围是前i-1个样本在sim_dict中value值的和,即无法选择的范围Di是sim_value_1+sim_value_2+sim_value_3+...+sim_value_[i-1],因为每个样本至少含有一个相似样本【即该样本自身】,故该值Di的大小会随着取样个数的增加而逐渐增加。异常情况是前i-1个样本在sim_dict中value值的和,经过去重处理后得到样本的数量,与训练集样本数量相等。根据上述的取样方法,则第i个样本的取样范围是在训练集中,同时不在Di中,又因训练集和Di的数量相等,所以第i个样本的取样范围为空。其意义为该batch内若接着取样第i个样本,则该样本i至少会与前面i-1个样本中的一个样本相似,这种情况下的捕获措施是Python代码中的random.choice抛出异常IndexError。
针对此种异常情况,本实施例提供了三种解决手段。
第一种手段是清空该batch内除第一个样本外的其他样本,按照上述步骤6的方法重新进行取样,因为Python Random会保证取样的随机性。
第二种手段是减小batch_size,在无法选择的样本范围数量达到样本总数量前停止取样。
第三种手段是扩充或者增加数据集互不相似的样本,以增加更多的选择可能性。
通过以上三种技术手段中的任一个均可保证一个batch内取出的所有样本均不相似。
步骤7. 构造每个batch中的正样本,具体过程如下:
预设字符阈值word_threshold,取一个batch中的第一个样本,从该样本数据的句首位置开始,当样本数据的内容每超过word_threshold,则在当前阈值范围内随机重复其中一个或几个(例如两个、三个等)字符,记为word_repeat,从而达到改变句子长度的目的。
其中,字符阈值word_threshold以及word_repeat模型训练超参数。
举例:样本为【银屑病患者生物制剂用药前如何筛查】,字符长度为16,设word_threshold=5,word_repeat=1。因此,在第一个字符阈值范围1-5即【银屑病患者】中随机重复一个字符,如重复【患】,则该阈值范围内数据构建结果为【银屑病患患者】;在第二个字符阈值范围6-10【生物制剂用】中随机重复一个字符;在第三个字符阈值范围11-15【药前如何筛】中随机重复一个字符;因剩余内容的长度不满足字符长度阈值5,不再重复。所以,该样本对应的一个可能的正样本结果【银屑病患患者生物制剂剂用药前如如何筛查】。
本实施例在语义的最小颗粒度级别,也就是字符级别中,按照上述规则在指定范围内随机重复某个或几个字符,即语料中的句子,从句首位置开始向后数,当内容每超过一定的字符阈值word_threshold,按照规则在当前阈值范围内随机重复其中一个或几个字符。
通过以上随机重复样本数据中一个或几个字符的句子长度扩展方式,既不会改变整个句子的意思,又不会引入额外的强噪音,同时达到了改变句子长度的目的。
上述过程随机重复过程都是通过python random模块的choice和choices方法实现,它采用MersenneTwister算法作为伪随机数产生器,主要从非空序列中返回一个或多个随机元素。
在SimCSE模型训练时,利用上述epoch和batch数据构建方法,加载数据进行训练。
下面对利用本发明训练出的模型与传统的SimCSE模型表现进行了对比:
1. 相比于传统的SimCSE模型,本发明训练中的斯皮尔曼相关系数提升了4.28%。
2. 在医疗问答业务场景中,需要对用户问题和库中的FAQs进行相似度计算,根据相似的排序得出前TopK的问题,再把这些FAQs所对应答案给用户,依此解决用户的问题,分别利用SimCSE和本发明训练出的模型在该任务中进行测试,得出结果有9.76%的提升。
通过以上模型表现以及在下游任务中的表现,证明了本发明方法的有效性。
此外,基于同样的发明构思,本发明实施例还提供了一种对应于上述医疗领域对比学习的样本构造方法的医疗领域对比学习的样本构造装置。
该医疗领域对比学习的样本构造装置,包括如下功能模块:
数据收集以及预处理模块,用于收集中文医学领域问题数据,并对获取的问题数据进行清洗,然后将清洗后的数据拆分为问句数据训练集和测试集;
拆分处理后的训练集和测试集分别按照每行一条的形式存入到.csv格式文件中。
向量生成模块,用于将所有训练集问句数据依次通过Bert进行文本嵌入,将Bert的最后一层hidden layer状态作为其Embedding输出,每条训练集问句数据都唯一对应一个多维向量;
与训练集问句数据一一对应的向量数据均存储到向量数据库中。
相似度值计算模块, 利用向量间夹角的余弦值来度量相似性,分别计算所述向量数据库中任意两个向量之间的相似度值,相似度阈值记为sim_threshold。
python字典创建模块,用于根据向量数据库中任意两个向量之间的相似度值与相似度阈值sim_threshold的大小关系创建一个python字典,记为sim_dict,用来存储相似数据;
其中,sim_dict的key是训练集中每条问句数据,sim_dict的value是与问句数据key的相似度值大于或等于相似度阈值sim_threshold的所有问句数据,包含key自身。
batch内第一个样本构建模块,用于在每个batch取样数据开始之前,先随机从训练集的问句数据中选择不重复的batch_num个数据x;
将每个数据x对应作为一个batch的第一个问句数据样本;
定义训练过程中训练的epoch的数量为epoch_num,每个epoch包含整数个batch,batch数量记为batch_num,每个batch中的样本数量记为batch_size;
每个epoch开始之前,都会重复该过程,获取所有batch的第一个问句数据样本。
batch内负样本构建模块,基于训练集数据以及sim_dict,按照下述步骤依次构建每个batch内不相似的各个负样本;具体过程如下:
定义参数i,i的初值为2,取一个batch内第i个样本的方法如下:
该batch内第i个样本无法选择的范围Di是该batch内已经选择的前i-1个样本在sim_dict中value值的和,从训练集中随机选择一个不在范围Di内的数据作为第i个样本;
判断参数i的值是否达到batch_size,若i小于batch_ size,则i=i+1,重复上述步骤;若i的值等于batch_ size,则一个batch内的所有样本取样完成;
batch内正样本构造模块,用于按照下述步骤构造每个batch中的正样本。
预设字符阈值word_threshold,取一个batch中的第一个样本,从该样本的句首开始,当样本数据的内容每超过word_threshold,则在当前阈值范围内随机重复至少一个字符。
需要说明的是,上述医疗领域对比学习的样本构造装置中,各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
此外,本发明还提出了一种用于实现上述医疗领域对比学习的样本构造方法的计算机设备。该计算机设备包括存储器和一个或多个处理器。其中,在存储器中存储有可执行代码,处理器执行可执行代码时,用于实现上述医疗领域对比学习的样本构造方法。
本实施例中计算机设备为任意具备数据数据处理能力的设备或装置,此处不再赘述。
此外,本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,用于实现上述医疗领域对比学习的样本构造方法。
该计算机可读存储介质可以是任意具备数据处理能力的设备或装置的内部存储单元,例如硬盘或内存,也可以是任意具备数据处理能力的设备的外部存储设备,例如设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。
当然,以上说明仅仅为本发明的较佳实施例,本发明并不限于列举上述实施例,应当说明的是,任何熟悉本领域的技术人员在本说明书的教导下,所做出的所有等同替代、明显变形形式,均落在本说明书的实质范围之内,理应受到本发明的保护。

Claims (10)

1.一种医疗领域对比学习的样本构造方法,其特征在于,
包括如下步骤:
步骤1. 收集中文医学领域问题数据,并对获取的问题数据进行清洗,然后将清洗后的数据拆分为问句数据训练集和测试集;
拆分处理后的训练集和测试集分别按照每行一条的形式存入到.csv格式文件中;
步骤2. 将所有训练集问句数据依次通过Bert进行文本嵌入,将Bert的最后一层hidden layer状态作为其Embedding输出,每条训练集问句数据都唯一对应一个多维向量;
与训练集问句数据一一对应的向量数据均存储到向量数据库中;
步骤3. 利用向量间夹角的余弦值来度量相似性,分别计算步骤2得到的向量数据库中任意两个向量之间的相似度值,相似度阈值记为sim_threshold;
步骤4. 根据向量数据库中任意两个向量之间的相似度值与相似度阈值sim_threshold的大小关系创建一个python字典,记为sim_dict,用来存储相似数据;
其中,sim_dict的key是训练集中每条问句数据,sim_dict的value是与问句数据key的相似度值大于或等于相似度阈值sim_threshold的所有问句数据,包含key自身;
步骤5. 定义训练过程中训练的epoch的数量为epoch_num,每个epoch包含整数个batch,batch数量记为batch_num,每个batch中的样本数量记为batch_size;
在每个batch取样数据开始之前,先随机从训练集的问句数据中选择不重复的batch_num个数据x,将每个数据x对应作为一个batch的第一个问句数据样本;
每个epoch开始之前,都会重复该过程,获取所有batch的第一个问句数据样本;
步骤6. 基于训练集数据以及sim_dict,依次构建每个batch内的各个负样本,过程如下:
步骤6.1. 定义参数i,i的初值为2,取一个batch内第i个样本的方法如下:
该batch内第i个样本无法选择的范围Di是该batch内已经选择的前i-1个样本在sim_dict中value值的和,从训练集中随机选择一个不在范围Di内的数据作为第i个样本;
步骤6.2. 判断i的值是否达到batch_size,若i小于batch_ size,则i=i+1,重复上述步骤6.1;若i的值等于batch_ size,则一个batch内的所有样本取样完成;
步骤7. 构造每个batch中的正样本,具体过程如下:
预设字符阈值word_threshold,取一个batch中的第一个样本,从该样本的句首位置开始,当样本数据内容每超过word_threshold,则在当前阈值范围内随机重复至少一个字符。
2.根据权利要求1所述的医疗领域对比学习的样本构造方法,其特征在于,
所述步骤2中数据清洗包括:
去除空格、非汉字和非数字字符、所有全角数据转换成半角数据预处理操作。
3.根据权利要求1所述的医疗领域对比学习的样本构造方法,其特征在于,
所述步骤2中,向量数据库为Milvus向量库。
4.根据权利要求1所述的医疗领域对比学习的样本构造方法,其特征在于,
所述步骤3中,如果向量数据库中任意两个向量之间相似度值大于或等于sim_threshold,则两个向量对应的训练集问句数据存在相似性,不能放在同一个batch中;
如果向量数据库中任意两个向量之间的相似度值小于sim_threshold,则两个向量对应的训练集问句数据存在较低的相似性,因而能够放在同一个batch中。
5.根据权利要求1所述的医疗领域对比学习的样本构造方法,其特征在于,
所述步骤6中,在取一个batch内的样本时,设定当前已经取到第i个样本,该第i个样本无法选择的样本范围是前i-1个样本在sim_dict中value值的和;
若前i-1个样本在sim_dict中value值的和去重后得到样本的数量与训练集样本数量相等,则清空该batch内除第一个样本外的其他样本,按照步骤6的方法重新进行取样。
6.根据权利要求1所述的医疗领域对比学习的样本构造方法,其特征在于,
所述步骤6中,在取一个batch内的样本时,设定当前已经取到第i个样本,该第i个样本无法选择的样本范围是前i-1个样本在sim_dict中value值的和;
若前i-1个样本在sim_dict中value值的和去重后得到样本的数量与训练集样本数量相等,则减小batch_size的大小,在无法选择的样本范围数量达到样本总数量前停止取样。
7.根据权利要求1所述的医疗领域对比学习的样本构造方法,其特征在于,
所述步骤6中,在取一个batch内的样本时,设定当前已经取到第i个样本,该第i个样本无法选择的样本范围是前i-1个样本在sim_dict中value值的和;
若前i-1个样本在sim_dict中value值的和去重后得到样本的数量与训练集样本数量相等,则扩充或者增加步骤1训练集中互不相似的样本的数量。
8.一种医疗领域对比学习的样本构造装置,其特征在于,包括:
数据收集以及预处理模块,用于收集中文医学领域问题数据,并对获取的问题数据进行清洗,然后将清洗后的数据拆分为问句数据训练集和测试集;
拆分处理后的训练集和测试集分别按照每行一条的形式存入到.csv格式文件中;
向量生成模块,用于将所有训练集问句数据依次通过Bert进行文本嵌入,将Bert的最后一层hidden layer状态作为其Embedding输出,每条训练集问句数据都唯一对应一个多维向量;
与训练集问句数据一一对应的向量数据均存储到向量数据库中;
相似度值计算模块, 利用向量间夹角的余弦值来度量相似性,分别计算所述向量数据库中任意两个向量之间的相似度值,相似度阈值记为sim_threshold;
python字典创建模块,用于根据向量数据库中任意两个向量之间的相似度值与相似度阈值sim_threshold的大小关系创建一个python字典,记为sim_dict,用来存储相似数据;
其中,sim_dict的key是训练集中每条问句数据,sim_dict的value是与问句数据key的相似度值大于或等于相似度阈值sim_threshold的所有问句数据,包含key自身;
batch内第一个样本构建模块,用于在每个batch取样数据开始之前,先随机从训练集的问句数据中选择不重复的batch_num个数据x;
将每个数据x对应作为一个batch的第一个问句数据样本;
定义训练过程中训练的epoch的数量为epoch_num,每个epoch包含整数个batch,batch数量记为batch_num,每个batch中的样本数量记为batch_size;
每个epoch开始之前,都会重复该过程,获取所有batch的第一个问句数据样本;
batch内负样本构建模块,基于训练集数据以及sim_dict,按照下述步骤依次构建每个batch内不相似的各个负样本;具体过程如下:
定义参数i,i的初值为2,取一个batch内第i个样本的方法如下:
该batch内第i个样本无法选择的范围Di是该batch内已经选择的前i-1个样本在sim_dict中value值的和,从训练集中随机选择一个不在范围Di内的数据作为第i个样本;
判断参数i的值是否达到batch_size,若i小于batch_ size,则i=i+1,重复上述步骤;若参数i的值等于batch_ size,则一个batch内的所有样本取样完成;
batch内正样本构造模块,用于按照下述步骤构造每个batch中的正样本;
预设字符阈值word_threshold,取一个batch中的第一个样本,从该样本的句首开始,当样本数据的内容每超过word_threshold,则在当前阈值范围内随机重复至少一个字符。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有可执行代码,其特征在于,所述处理器执行所述可执行代码时,
用于实现权利要求1至7任一项所述的医疗领域对比学习的样本构造方法。
10.一种计算机可读存储介质,其上存储有程序,其特征在于,当该程序被处理器执行时,用于实现权利要求1至7任一项所述的医疗领域对比学习的样本构造方法。
CN202210985948.1A 2022-08-17 2022-08-17 对比学习的样本构造方法、装置、计算机设备及存储介质 Active CN115062607B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210985948.1A CN115062607B (zh) 2022-08-17 2022-08-17 对比学习的样本构造方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210985948.1A CN115062607B (zh) 2022-08-17 2022-08-17 对比学习的样本构造方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN115062607A true CN115062607A (zh) 2022-09-16
CN115062607B CN115062607B (zh) 2022-11-11

Family

ID=83208577

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210985948.1A Active CN115062607B (zh) 2022-08-17 2022-08-17 对比学习的样本构造方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN115062607B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113221530A (zh) * 2021-04-19 2021-08-06 杭州火石数智科技有限公司 一种基于circle loss的文本相似度匹配方法、装置、计算机设备和储存介质
CN113505601A (zh) * 2021-07-08 2021-10-15 平安科技(深圳)有限公司 一种正负样本对构造方法、装置、计算机设备及存储介质
US20210365444A1 (en) * 2020-05-20 2021-11-25 Beijing Baidu Netcom Science And Technology Co., Ltd. Method and apparatus for processing dataset
WO2022037256A1 (zh) * 2020-08-21 2022-02-24 腾讯科技(深圳)有限公司 文本语句处理方法、装置、计算机设备和存储介质
CN114154518A (zh) * 2021-12-02 2022-03-08 泰康保险集团股份有限公司 数据增强模型训练方法、装置、电子设备及存储介质
CN114218921A (zh) * 2021-11-30 2022-03-22 中国医学科学院医学信息研究所 一种优化bert的问题语义匹配方法
CN114328834A (zh) * 2021-12-29 2022-04-12 成都晓多科技有限公司 一种模型蒸馏方法、系统以及文本检索方法
CN114579729A (zh) * 2022-05-09 2022-06-03 南京云问网络技术有限公司 一种融合多算法模型的faq问答匹配方法和系统
CN114756677A (zh) * 2022-03-21 2022-07-15 马上消费金融股份有限公司 样本生成方法、文本分类模型的训练方法及文本分类方法
CN114757289A (zh) * 2022-04-22 2022-07-15 中国电子科技集团公司第二十八研究所 一种基于有监督对比学习的细粒度文本分类方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210365444A1 (en) * 2020-05-20 2021-11-25 Beijing Baidu Netcom Science And Technology Co., Ltd. Method and apparatus for processing dataset
WO2022037256A1 (zh) * 2020-08-21 2022-02-24 腾讯科技(深圳)有限公司 文本语句处理方法、装置、计算机设备和存储介质
CN113221530A (zh) * 2021-04-19 2021-08-06 杭州火石数智科技有限公司 一种基于circle loss的文本相似度匹配方法、装置、计算机设备和储存介质
CN113505601A (zh) * 2021-07-08 2021-10-15 平安科技(深圳)有限公司 一种正负样本对构造方法、装置、计算机设备及存储介质
CN114218921A (zh) * 2021-11-30 2022-03-22 中国医学科学院医学信息研究所 一种优化bert的问题语义匹配方法
CN114154518A (zh) * 2021-12-02 2022-03-08 泰康保险集团股份有限公司 数据增强模型训练方法、装置、电子设备及存储介质
CN114328834A (zh) * 2021-12-29 2022-04-12 成都晓多科技有限公司 一种模型蒸馏方法、系统以及文本检索方法
CN114756677A (zh) * 2022-03-21 2022-07-15 马上消费金融股份有限公司 样本生成方法、文本分类模型的训练方法及文本分类方法
CN114757289A (zh) * 2022-04-22 2022-07-15 中国电子科技集团公司第二十八研究所 一种基于有监督对比学习的细粒度文本分类方法
CN114579729A (zh) * 2022-05-09 2022-06-03 南京云问网络技术有限公司 一种融合多算法模型的faq问答匹配方法和系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
RUIHUI LI等: "Clustering of Short Texts Based on Dynamic Adjustment for Contrastive Learning", 《IEEE ACCESS》 *
吴炎等: "基于BERT的语义匹配算法在问答系统中的应用", 《仪表技术》 *
李洪巍等: "投诉工单聚类算法在问答系统中的研究", 《数据库系统设计》 *

Also Published As

Publication number Publication date
CN115062607B (zh) 2022-11-11

Similar Documents

Publication Publication Date Title
CN108959312B (zh) 一种多文档摘要生成的方法、装置和终端
CN110543631B (zh) 机器阅读理解的实现方法、装置、存储介质及电子设备
Wood et al. The sequence memoizer
CN108595629B (zh) 用于答案选择系统的数据处理方法及应用
CN111966812B (zh) 一种基于动态词向量的自动问答方法和存储介质
CN111159359A (zh) 文档检索方法、装置及计算机可读存储介质
CN113268586A (zh) 文本摘要生成方法、装置、设备及存储介质
CN112037909B (zh) 诊断信息复核系统
CN115983233A (zh) 一种基于数据流匹配的电子病历查重率估计方法
Vougiouklis et al. Point at the triple: Generation of text summaries from knowledge base triples
CN113849603A (zh) 负样本确定方法、相关设备及可读存储介质
CN113626584A (zh) 一种自动文本摘要生成方法、系统、计算机设备和存储介质
CN115062607B (zh) 对比学习的样本构造方法、装置、计算机设备及存储介质
CN115712760B (zh) 一种基于bert模型和深层等长卷积神经网络的二进制代码摘要生成方法及系统
CN113761875B (zh) 事件抽取方法、装置、电子设备及存储介质
CN115994544A (zh) 平行语料筛选方法、平行语料筛选设备和可读存储介质
CN115203206A (zh) 数据内容搜索方法、装置、计算机设备及可读存储介质
CN115062602A (zh) 对比学习的样本构造方法、装置、计算机设备及存储介质
CN111368028B (zh) 问题回答者的推荐方法及装置
McGregor et al. A distributional semantic methodology for enhanced search in historical records: A case study on smell
CN111401070B (zh) 词义相似度确定方法及装置、电子设备及存储介质
CN115658956B (zh) 基于会议音频数据的热点话题挖掘方法及系统
CN117874175B (zh) 一种基于信息瓶颈的信息检索方法和系统
CN114118085B (zh) 一种文本信息的处理方法、装置及设备
EP4213075A1 (en) Medical coding with biomedical transformer ensembles and few-shot learning

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 310000 room 905, floor 9, building a, No. 369, Internet of things street, Xixing street, Binjiang District, Hangzhou City, Zhejiang Province

Patentee after: Hangzhou Huiyidao Technology Co.,Ltd.

Country or region after: China

Address before: 310000 room 905, floor 9, building a, No. 369, Internet of things street, Xixing street, Binjiang District, Hangzhou City, Zhejiang Province

Patentee before: Hangzhou Firestone Technology Co.,Ltd.

Country or region before: China

CP03 Change of name, title or address