本文参考自一个开源项目原文链接
改变mutil-label为句子对任务
文章指出,训练一个模型实现多标签分类任务是比较容易想到的,而且在预测的时候可以一次预测出多个标签,效率也比较高。但是在每个标签的样本数量很少时,模型表现的不太好(这个当然了,不用说多标签分类,就是多类别分类,样本的数量和质量也会直接影响模型的效果)。除了训练样本不够,文章给出的另一个主要原因是模型试图将样本直接映射到多个标签中而没有使用更多额外的信息。而通过将多标签分类任务转换成句子对任务可以很容易利用额外的信息,这些额外的信息包括:特定标签对应的训练样本中的部分输入文本,标签对应的关键词等信息,而且在组成句子对的过程中,可以产生更多数量的训练样本,弥补数据不足的缺点,很符合我们现在的情况。具体的:
首先,选取每个标签下一定数量样本,如随机的选取5个肺癌患者的病例,来代表这个标签,所以,对于任何一个标签,都构造了5个句子来代表这个标签,记为集合{representation_set}。需要注意的是,为了使得样本更有代表性,在随机选取样本过程中,优先选择那些只有一个标签的样本作为该标签的代表样本。
正样本的构造:
需要构造句子对任务:<sentence_1, sentence_2, label(0,1)>
句子对任务中的第一部分的输入为,原始的样本,还是以肺癌为例:肩背部疼痛1年,CT发现左上肺占位1月。,第二部分的输入是数据产生过程的关键所在:对于“肺癌”这个标签,如上所述得到5个句子,即representation_set[“肺癌”],并且对于原始输入与这里面的每个样本的组合,给label赋值为1。如:
<肩背部疼痛1年,CT发现左上肺占位1月, 体检发现右肺中叶占位1周, 1>
<肩背部疼痛1年,CT发现左上肺占位1月, 咳嗽10天,发现肺占位1天, 1>
<肩背部疼痛1年,CT发现左上肺占位1月, 间断胸痛6月,加重3天, 1>
<肩背部疼痛1年,CT发现左上肺占位1月, 咳嗽咳痰、血痰3个月, 1>
<肩背部疼痛1年,CT发现左上肺占位1月, 咳嗽、咯血伴胸痛2月, 1>
通过这个形式,可以将正样本扩大了5倍,当然也可以通过特定标签采样更多的例子,来进一步扩大正样本的集合。
负样本的构造:
对于一个标签集合,如“肺癌”下有5个标签,那么对于一个样本,只要没有被打上标签的,就是负样本。并通过随机样本的方式来得到需要的样本。如对于原始样本的输入文本:
“血痰2年,咳嗽加重1月”,
它被打上了标签[“肺癌”],那么其他标签[“胃癌”,“肝癌”,…,“肾癌”],都可以用来构造负样本。
这篇文章更像是特征工程的任务,与传统特征工程不同的是,该方法将样本整体看成了特征,也为数据量少的情况提供了一个新思路。
447



被折叠的 条评论
为什么被折叠?



