Bert 文本相似度实战(使用详解)
大家好!其实 BERT 的实战代码已经很多了,也被诸多大佬引用和实验过。这篇主要用来记录自己在使用与处理时注意到的点,私以为比较适合BERT小白快速上手。
当修改模型后,并没有跑通,或查看完整代码,欢迎大家查看我的github (lixuanhng)
参考资料
这篇笔记主要参考了一个智能客服的项目,项目地址请点击这里。其中主要借鉴了该项目的子项目chatbot_retrieval中的文本相似度计算代码。
另外还想说明的是在本篇笔记中,我不打算再详细说明如何下载代码和预训练模型了,请随机找一篇讲述bert的博客,就能找到这部分内容。总结来说,对于将要使用bert模型的使用者,首先应该下载bert代码,其中主要包含了
modeling.py
optimization.py
tokenization.py
run_classifier.py
等代码。当我们做文本相似度模型时,主要改造的是 run_classifier.py。
同时,我们还应当下载bert中文预训练模型, chinese_L-12_H-768_A-12.zip 解压后可以看到
bert_config.json 是BERT在训练时可选调整参数
bert_model.ckpt.meta 开头的文件是负责模型变量载入的
bert_model.ckpt.data-00000-of-00001
bert_model.ckpt.index
vocab.txt 中文词表文件
至此,我们的准备工作就算是完成了。
代码准备
能够完整的跑完bert的代码,需要准备以下几个文件。
数据
首先,我们需要准备一份数据。对于文本相似度的任务,数据格式为每行是一组句子对,并使用0或1标注句子对中两个句子是否相似,0表示不相似,1表示相似。
如果在自己场景下的数据并没有那么多,可以寻找一些开源的数据集。这里我们以蚂蚁金服的智能客服对话数据集作为测试数据集。数据结构为句子1,句子2,标签,三项之间由制表符隔开。例如:
为什么我申请额度输入密码就一直是那个页面 为什么要输入支付密码来验证 0
数据相关检查与下载,请移步github (lixuanhng)
参数配置文件
在跑通代码之前,我们需要对代码的超参数进行配置。这里选择新建一个python文件,将超参数全部指定在该文件中。在 run_classifier.py 中只要将超参数python文件导入进去即可。在超参数python文件中,我们主要关注的是以下几个方面的参数值。
bert_config_file bert配置文件bert_config.json的路径
vocab_file 词表文件vocab.txt的路径
data_dir 数据路径,要分成train, test, dev三个文件,类型为csv
out_put 模型输出地址
init_checkpoint 预训练模型bert_model.ckpt的路径
task_name 任务名称为 sim
其余参数不变,完整的参数设置代码可见下图(使用时需修改自己的各文件路径):
class Config():
def __init__(self):
self.bert_config_file = '/bert_dir/bert_config.json'
self.vocab_file = 'bert_dir/vocab.txt'
self.data_dir = os.path.join(basedir2, 'data/bert_sim/')
self.output_dir = basedir2 + '/Bert_sim/results'
self.predict_file = basedir2 + '/data/bert_sim/dev.txt'
self.test_file = basedir2 + '/data/bert_sim/test.txt'
self.init_checkpoint = '/bert_dir/bert_model.ckpt'
self.train_checkpoint = basedir2 + '/Bert_sim/results'
self.do_lower_case = True
self.verbose_logging = False
self.master = None
self.version_2_with_negative = False
self.null_score_diff_threshold = 0.0
self.use_tpu = False
self.tpu_name = None
self.tpu_zone =

最低0.47元/天 解锁文章
2077

被折叠的 条评论
为什么被折叠?



