作者:杨夕
论文:
论文地址:
github:
论文出处:
项目地址:https://github.com/km1994/nlp_paper_study
NLP 面经地址:https://github.com/km1994/NLP-Interview-Notes
推荐系统 百面百搭:https://github.com/km1994/RES-Interview-Notes
个人介绍:大佬们好,我叫杨夕,该项目主要是本人在研读顶会论文和复现经典论文过程中,所见、所思、所想、所闻,可能存在一些理解错误,希望大佬们多多指正。
- 标签类别较多:常规的分类模型只是预测10几个 label,但是真实工业界有时需要预测的 label 可能上百个,这种情况 一方面标注数据会存在严重不均衡现象,另一方面模型的预测结果也存在偏差性严重问题;
- 标签类别不固定:面对业务需求需要不断添加新标签时,容易导致每次新增标签都面临重新训练分类器模型问题;
- 语义信息丢失:以前的分类任务中,标签信息作为无实际意义,独立存在的one-hot编码形式存在,这种做法会潜在的丢失标签的语义信息;
那有什么方法可以解决该问题么?
答案:基于检索的方法做文本分类
把文本分类任务中的标签信息转换成含有语义信息的语义向量,将文本分类任务转换成向量检索和匹配的任务。
因为采用 检索的方法 去做 文本分类,首先就是需要考虑如果 构建 召回库 问题,构建方法:
- 把标签集作为召回库;
- 把训练数据作为召回库;
无论是 把标签集作为召回库 还是 把训练数据作为召回库,其训练阶段的方法都是相同的,都可以采用 双塔模型;
- 塔构建思路:
- 一个塔(模型):用于对 输入句子 进行 encoding;
- 一个塔(模型):用于对 输入标签 进行 encoding;
- 目标:通过训练拉近句子和标签的[CLS]输出特征表示之间距离;
把标签集作为召回库 和 把训练数据作为召回库 思路存在不同。
- 把标签作为召回集,每个标签的向量表示(也即[CLS]输出特征表示)是固定的;
- 然后构建一个标签向量库;
- 用待预测的句子的向量在标签向量库进行检索,找到特征相似度最大的标签,也即为待预测句子的标签。
- 把训练数据作为召回集,构建一个训练集文本的向量库;
- 用待预测的句子的向量表示(也即[CLS]输出特征表示)在文本向量库进行检索,找到特征相似度最大的训练集文本,待预测句子的标签也即召回文本的标签。
- 对于一些类别标签不是很固定的场景,或者需要经常有一些新增类别的需求的情况非常合适;
- 对于一些新的相关的分类任务,这种方法也不需要模型重新学习或者设计一种新的模型结构来适应新的任务。
总的来说,这种基于检索的文本分类方法能够有很好的拓展性,能够利用标签里面包含的语义信息,不需要重新进行学习。这种方法可以应用到相似标签推荐,文本标签标注,金融风险事件分类,政务信访分类等领域。