前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BERT中文实战:文本相似度计算与文本分类

BERT中文实战:文本相似度计算与文本分类

作者头像
大数据技术与机器学习
发布2019-12-19 14:44:56
5.1K0
发布2019-12-19 14:44:56
举报
文章被收录于专栏:机器学习入门与实战
在CV问题中,目前已经有了很多成熟的模型供大家使用,我们只需要修改结尾的FC层或根据实际场景添加softmax层,也就是我们常说的迁移学习。那在NLP领域是否有这样泛化能力很强的模型呢,答案是肯定的,BERT是一个已经事先采用大量数据进行过训练的模型,泛化能力极强,使用时只需要针对特定领域进行微调即可使用。对于NLP的正常流程来说,我们需要做一些预处理,例如分词、W2V等,BERT包含所有的预训练过程,只需要提供文本数据即可,接下来我们会基于NLP常用的文本相似度计算问题来介绍如何使用BERT。

BERT中文实战:文本相似度计算与文本分类

代码下载:

关注微信公众号 datanlp 然后回复 bert 即可获取下载链接。

下载预训练模型

谷歌提供了以下几个版本的BERT模型,每个模型的参数都做了简单的说明,中文的预训练模型在11月3日的时候提供了,这里我们只需要用到中文的版本

https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip

下载下来的文件包括以下内容

  • TensorFlow 用来保存预训练模型的三个 checkpoint 文件(bert_model.ckpt.xxx)
  • 字典文件,用于做ID的映射 (vocab.txt)
  • 配置文件,该文件的参数是fine-tuning时模型用到的,可自行调整 (bert_config.json)

编写代码

模型准备好后就可以编写代码了,我们先把BERT的github代码clone下来,之后我们的代码编写会基于run_classifier.py文件,我们看下代码的结构

可以看到有好几个xxxProcessor的类,这些类都有同一个父类DataProcessor,其中DataProcessor提供了4个抽象方法,如图

顾名思义,Processor就是用来获取对应的训练集、验证集、测试集的数据与label的数据,并把这些数据喂给BERT的,而我们要做的就是自定义新的Processor并重写这4个方法,也就是说我们只需要提供我们自己场景对应的数据。这里我自定义了一个名叫SimProcessor的类,我们简单看一下

读取的数据需要封装成一个InputExample的对象并添加到list中,注意这里有一个guid的参数,这个参数是必填的,是用来区分每一条数据的。是否进行训练集、验证集、测试集的计算,在执行代码时会有参数控制,我们下文会讲,所以这里的抽象方法也并不是需要全部都重写,但是为了体验一个完整的流程, 建议大家还是简单写一下。

get_labels方法返回的是一个数组,因为相似度问题可以理解为分类问题,所以返回的标签只有0和1,注意,这里我返回的是参数是字符串,所以在重写获取数据的方法时InputExample中的label也要传字符串的数据,可以看到上图中我对label做了一个str()的处理。

接下来还需要给Processor加一个名字,让我们的在运行时告诉代码我们要执行哪一个Processor,如图我自定义的叫做sim

训练模型

ok,到这里我们已经把Processor编写好了,接下来就是运行代码了,我们来看下run_classifier.py的执行过程。

可以看到,在执行run_classifier.py时需要先输入这5个必填参数,这里我们对参数做一个简单的说明

当然还有一些其他的参数,这里给出官方提供的运行参数

这里再补充下以下三个可选参数说明

预测

执行以上的代码即可训练我们自己的模型了,如果需要使用模型来进行预测,可执行以下命令

当然,我们需要在data_dir下有测试数据,测试完成后会在output_dir路径下生成一个test_results.tsv文件,该文件包含了测试用例和相似度probabilities

总结

除了相似度计算,以上的代码完全能够用来做文本二分类,你也可以根据自己的需求来修改Processor,更多的细节大家可以参阅github源码。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习入门与实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码下载:
  • 训练模型
  • 预测
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档