1030
文章
828055
访问
暂无分类
暂无标签
暂无数据
发布于2019-08-22 17:05 阅读(2138) 评论(0) 点赞(8) 收藏(3)
Bert模型全称Bidirectional Encoder Representations from Transformers,主要分为两个部分:1训练语言模型(language model)的预训练(pretrain)部分,2训练具体任务(task)的fine-tune部分。Bert在NLP领域横扫了11项任务的最优结果,可以说是现今最近NLP中最重要的突破。
相比之前的Word Embedding模型,Bert 模型具有双向,多层,随机Mask,并且融合了自然语言处理前沿技术transformer 权重处理多种优点,可以说是ELMO、GPT、Word2Vec的集大成者。具体原理上的理解各位可以移步至 张俊林博士解读BERT非常详尽清晰,有助于各位从理论上加深理解Bert的原理。本文主要从Bert实践角度,拎出实用的代码片段,来完成文本情感分类。
google公布了一个参数较小的BERT预训练模型, 点击下载。文件里有五个文件,其中bert_model.ckpt开头的文件是负责模型变量载入的,而vocab.txt是训练时中文文本采用的字典,最后bert_config.json是BERT在训练时,可选调整的一些参数。
def get_train_examples(self, data_dir):
file_path = os.path.join(data_dir, 'train.csv')
with open(file_path, 'r') as f:
reader = f.readlines()
examples = []
for index, line in enumerate(reader):
guid = 'train-%d'%index
split_line = line.strip().split(',')
text_a = tokenization.convert_to_unicode(split_line[1])
text_b = tokenization.convert_to_unicode(split_line[2])
label = split_line[0]
examples.append(InputExample(guid=guid, text_a=text_a,
text_b=text_b, label=label))
return examples
同时对应判断label为三分类标签,get_labels函数可以写成如下的形式:
def get_labels(self):
return ['0','1',‘2’]
在对get_dev_examples和get_test_examples函数做类似get_train_examples的操作后,便完成了对processor的修改。其中get_test_examples可以传入一个随意的label数值,因为在模型的预测(prediction)中label将不会参与计算。
修改完成processor后,需要在在原本main函数的processor字典里,加入修改后的processor类,即可在运行参数里指定调用该processor。
processors = {
"cola": ColaProcessor,
"mnli": MnliProcessor,
"mrpc": MrpcProcessor,
"xnli": XnliProcessor,
"WeiboProc": WeiboProcessor #添加自己的processor
}
之后就可以直接运行run_classsifier.py进行模型的训练。在运行时需要制定一些参数,一个较为完整的运行参数如下所示:
python run_classifier.py \
--task_name=selfsim \ #自己添加processor在processors字典里的key名
--do_train=true \
--do_eval=true \
--dopredict=true \
--data_dir=$MY_DATASET \
--vocab_file=$BERT_BASE_DIR/vocab.txt \
--bert_config_file=$BERT_BASE_DIR/bert_config.json \
--init_checkpoint=$BERT_BASE_DIR/bert_model.ckpt \
--max_seq_length=128 \ #模型参数
--train_batch_size=32 \
--learning_rate=5e-5 \
--num_train_epochs=2.0 \
--output_dir=/tmp/selfsim_output/ #模型输出路径
配置的阿里云ESC云服务器,大概跑了几个小时,部分过程图如下:
train 和 dev 验证结果如下:
eval_accuracy = 0.9049439
eval_loss = 0.30998465
global_step = 1605
loss = 0.30991942
实现预测的话,在python run_classifier.py \中修改相应参数,设置do_predict=true。
如果想要将bert模型的编码和其他模型一起使用,将bert模型作为句子向量使用很有意义。我们可以使用bert-as-service来完成这个目标。
安装完bert-as-service以后,就可以利用bert模型将句子映射到固定长度的向量上。在终端中用一下命令启动服务:
bert-serving-start -model_dir /media/ganjinzero/Code/bert/chinese_L-12_H-768_A-12 -num_worker=4
model_dir后面的参数是bert预训练模型所在的文件夹。num_worker的数量应该取决于你的CPU/GPU数量。
这时就可以在Python中调用如下的命令:
from bert_serving.client import BertClient
bc = BertClient()
bc.encode(['一二三四五六七八', '今天您吃了吗?'])
由于GPU深度学习整套装备还没有配置,本人采用了阿里云ESC服务器,选用NGC镜像,配置tf1.0-GPU-TP4,安装了jupyter notebook,整体完成的。
如何各位对配置深度学习环境有疑问,可以留下阿里云账号,我把已经建立好的深度学习环境镜像(包含[tf1.0-gpu,anaconda,])在阿里云站发送给留言的童鞋。
附赠个人的 阿里云优惠券目前我是按量和按周,土豪可以包月包年~~任性。
后面我也会更博,专门拆解下如何快速搭建快速可用的深度学习环境。目前以tf1.0-gpu为主。
感谢本文参考来源:
作者:GjZr
https://blog.csdn.net/weixin_43837634/article/details/88049783
作者:奇点机智
链接:https://www.jianshu.com/p/aa2eff7ec5c1
程序员说:42岁了,突然觉得研发前途渺茫
中国程序员数量达755万,全球排名第二
为什么都说程序员找不到女朋友,但是身边程序猿的却没一个单身的?
程序员说:30岁以上你还死磕技术,别说拿高薪,可能你连饭碗都会保不住
程序员被开除,老板:“有你参与的项目全黄了!”
笑话:一个测试工程师走进一家酒吧
笑话:面试官:请拿出一段体现你水平的代码。我: sudo rm -rf /*面试官:这体现了你哪方面能力?
python精选:Python 办公实战!按姓名拆分 Excel 为单独文件,微信自动发给相应联系人
网友说:做开发,不被领导喜欢怎么办?
网友说:我奉劝各位,一定不能在职场透露自己的家庭条件
作者: 232hdsjdh
链接: https://www.pythonheidong.com/blog/article/53133/49c4cfa3e2c93ff25a31/
来源: python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!
关于本站/关于站长
深圳SEO优化公司下城区网站优化排名平台电商网站seo优化方案莆田网站seo优化策略锦州网站做优化铜陵网站优化怎么收费多少寿光优化网站软件淮北网站优化网站推广优化优化网站分手工优化吗沈阳怎么做网站优化黄石本地网站优化公司排名整站优化公司网站多少钱巴青网站优化江苏网站关键词优化哪家好通化网站优化哪家好出名的服装行业网站优化咨询热线专业的网站如何seo优化推广郑州网站优化推广排名呈贡区网站seo优化怎样银川网站优化一般流程网站优化的关键字怎么添加龙口网站优化选哪家宁国网络推广网站优化排名怎么选青岛网站关键词优化价格邯郸网站优化电池许昌实力网站优化公司地址乐山网站自然优化广东专业网站优化快照钟楼区网站优化渠道怀化网站搜索引擎优化歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运