700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > bert模型可以做文本主题识别吗_文本匹配方法系列––BERT匹配模型

bert模型可以做文本主题识别吗_文本匹配方法系列––BERT匹配模型

时间:2022-07-05 00:56:26

相关推荐

bert模型可以做文本主题识别吗_文本匹配方法系列––BERT匹配模型

1、概述

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

text_a,text_b合起来的输入编码长度是你设置的max_length;

如果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一下/混合精度/量化压缩等手段压缩至较小的模式上线。

参考文献debuluoyi:文本匹配方法系列––多语义匹配模型​

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

[3] bert模型官方代码及TensorFlow BERT模型下载地址:google-research/bert​

【注:下一节为 文本匹配方法系列–– 深层次交互匹配方法,都是比较近的文章了】

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。