文本匹配方法系列––BERT匹配模型

公众号关注 “ML_NLP”
设为 “星标”,重磅干货,第一时间送达!
文本匹配方法系列––BERT匹配模型

来自 | 知乎
地址 | https://zhuanlan.zhihu.com/p/85506365
作者 | debuluoyi
编辑 | 机器学习算法与自然语言处理公众号
本文仅作学术分享,若侵权,请联系后台删文处理

1、概述

在介绍深层次交互匹配方法之前,本文接着多语义匹配方法[1]介绍基于BERT模型实现文本匹配的方法。将其单独介绍主要因为BERT实现文本匹配操作方便且效果优秀,比较适用于工业应用场景。关于bert模型,Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2018)[2]在论文中有较为详细的介绍,官方代码可以在以下GitHub网址中找到:github.com/google-resea[3]。

2、模型&实践

2.1 BERT模型介绍

BERT本质上是一个两段式的NLP模型。第一个阶段叫做:Pre-training,通过大规模无监督预料训练获得的模型,可以获取文本动态字符级语义embedding,简单地可以视为加强版的字符级word2vec。实际上由于bert预训练阶段在Masked LM之外的另一个pre-training任务就是Next Sentence Prediction,即成对句子构成的句子级问题,所以用BERT做文本匹配是有天然优势的。

第二个阶段叫做:Fine-tuning,利用预训练好的语言模型,完成具体的NLP下游任务,NLP下游任务下游任务多种多样,NLP在多种任务中当时都取得了SOTA的效果,其中之一就是文本匹配任务,只需要直接输入分割好的句子对就可以直接获取匹配结果。

当然除了直接使用bert的句对匹配之外,理论上还可以只用bert来对每个句子求embedding,之后再通过向Siamese Network这样的经典模式去求相似度也可以。但从实操来说是不可取的,使用bert获取embedding后再去接复杂的交互计算,整个模型会非常大,训练时耗也会很长,不适于工业常见。

2.2 文本匹配任务实践

实际BERT模型中的输入本身就是适应两段文本的,在常见的分类任务中,是令text_b=None,只输入了第一段文本,在文本匹配时正常输入text_a,text_b即可。

(1) 数据处理

输入数据格式:texta \t text_b \t label 。两个句子之间通过[SEP]分割,[CLS]的向量作为分类的输入,标签是两个句子是否相似,1表示正例,0表示负例。

(2)部分关键代码展示

example结构设计文本对输入:
文本匹配方法系列––BERT匹配模型
文本对编码处理
text_a,text_b合起来的输入编码长度是你设置的max_length;
文本匹配方法系列––BERT匹配模型
如果len(text_a)+len(text_b)>max_length,那么 在一对文本中,谁长就会截断谁。

模型训练
增加一个processor name 如text_matching,在sh文件里面按照GitHub上面样式设置参数即可 :sh run_train.sh

(3)实践效果

**由于bert预训练阶段任务之一就是Next Sentence Prediction,即成对句子构成的句子级问题,所以使用bert进行文本匹配任务可以非常轻易地达到很好的效果,**一般工业级数据效果可以达到80%甚至超过,比一般非预训练匹配模型所需训练数据少,训练模型效果好。

工业上推荐使用,如需解决上线平响问题,可以考虑减少bert中transformer层数,distill一下/混合精度/量化压缩等手段压缩至较小的模式上线。

参考文献

[1] 文本匹配方法系列––多语义匹配模型:zhuanlan.zhihu.com/p/85;

debuluoyi:文本匹配方法系列––多语义匹配模型 zhuanlan.zhihu.com

[2] Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2018). Bert:
Pre-training of deep bidirectional transformers for language
understanding.arXiv preprint arXiv:1810.04805.


重磅!忆臻自然语言处理-学术微信交流群已成立
可以扫描下方二维码,小助手将会邀请您入群交流,
注意:请大家添加时修改备注为 [学校/公司 + 姓名 + 方向]
例如 —— 哈工大+张三+对话系统。
号主,微商请自觉绕道。谢谢!

文本匹配方法系列––BERT匹配模型

文本匹配方法系列––BERT匹配模型

推荐阅读:
PyTorch Cookbook(常用代码段整理合集)
通俗易懂!使用Excel和TF实现Transformer!
深度学习中的多任务学习(Multi-task-learning)——keras实现

文本匹配方法系列––BERT匹配模型