- 出品:贪心科技AI
- 作者:高阶NLP6期学员,吕工匠
最近小编在做一个文本分类的项目,相比一般的文本分类任务,其挑战之处在于:
1)特征很少:训练数据的文本很短,3~5个字符
2)类别很多:>3000个
3)部分文本包含某垂直领域中具有长尾特性、不易理解的知识
本项目目前的SOTA效果基于BERT实现,但是由于BERT没有有效融入外部知识,因此,对于部分冷门文本,特别是包含某一垂直领域结构化知识信息的文本,模型很难学习到理想的语义表示。所以本项目下一步的优化方向,主要是考虑将知识融入到模型中联合去训练,以提高模型在专业知识领域的泛化能力。为此,小编做了一些调研,附带源码解析等干货,打包分享给大家~
说在前面
谷歌BERT等这种基于大规模语料,先通过无监督预训练方式,再通过垂直领域的业务数据进行微调,训练出的语言模型可以自适应的解决许多特定的业务问题,在很多领域取得了不错的效果。这种预训练+微调的方式,几乎成为了各大厂解决NLP、CV等特定业务问题的标配方案。但即便是如此高级的语言模型,对着这些一串串冰冷的字符和标签,也难以100%理解透彻,模型“肚子”里没有点墨水,能学习到的语义相当有限。
这个时候,我们很有必要为模型请上一名教师,而这名老师呢,刚好对该垂直领域的业务数据十分了解,他会在模型进行训练的时候,手把手的教学,直接告诉模型某个重要单词(实体)的意思,甚至会告诉它有哪些相关的单词(上下位的实体,近义实体等),单词和单词之间有着什么样的关系等等。在老师的教导下,模型可以很快理解这些冰冷的字符串,并且会作出更理智的判断,当然就能更完美的完成下游任务啦。
所以接下来我们要“创造”出拥有以上技能的老师,幸运的是,得益于过去一年NLP技术井喷式的发展,学术界和工业界的大佬们,基于BERT提出了一些结合知识图谱的混合模型方案,为我们量身打造出了这样“老师”:比如北大-腾讯联合推出知识赋能的K-BERT模型、百度提出的通过知识集成增强语义表示的模型ERNIE、清华和华为提出的信息实体的增强语义模型ERNIE。
模型及代码浅析
K-BERT的思路很简单,主要是对于数据集的丰富改造,并且创新性地提出了Visible Matrix机制来决定token间的attention系数,采用Mask-Transformer实现特征抽取。具体来说就是:对于文本中的实体,首先在知识库中链接相关知识(三元组)加入到文本中,并使用一定的策略:软位置(Soft-position)和可见矩阵(Visible Matrix),两者作用分别是标记token的位置和标记token之间是否相互影响,然后通过Tranformer编码器微调完成训练,其模型架构如下。