课程地址:【HuggingFace简明教程,BERT中文模型实战示例.NLP预训练模型,Transformers类库,datasets类库快速入门.】
什么是huggingface?
huggingface是一个开源社区,提供了先进的NLP模型、数据集以及工具。
主要模型:
安装环境:推荐pip安装
字典和分词工具
简单的编码
大于max_length截断,小于padding
返回列表,包括max_length长度的数字
bert_chinese对中文处理时,每个字作为一个词(token)
增强的编码函数
增强编码返回的input_ids和简单编码相同
多输出了几个mask
批量编码句子
函数名字加上了plus,参数传入的方式也改变了
批量成对编码
结果
字典操作
以字为词,每个字对应了一个词
数据集操作
加载一个情感分类的数据集
数据集有很多操作函数,但大多比较简单,也不是重点
使用评价函数
有很多评价指标
计算正确率和f1
使用管道函数
使用pipeline可以解决一些简单的NLP任务。不需要训练模型就能调用的工具。但是实用价值不高
如,情感分类
阅读理解。答案需要在文本中
完型填空
文本生成
命名实体识别,识别城市名,公司名,人名等等
文本总结
翻译
实战任务1:中文分类
定义数据集
数据集包括:酒店评价、书籍评价等,分为好评和差评(二分类)
训练集:9600句话
加载tokenizer
即加载字典和分词工具
采用bert-base-chinese分词工具,需要与预训练模型相匹配
定义批处理函数
数据一条一条的转化为一批,进行分词和编码,并将分词的结果取出来
定义数据加载器
加载bert中文模型
不调整预训练模型的参数,直接应用于下游的任务中
定义每句话500个词的长度,768是词编码的维度,将每个词编码为768维度的向量
定于下游任务模型
只是一个单层的全连接网路。
将预训练模型输出的数据特征,放到全连接网络中运算,只取第0个词的特征来进行分类,这与bert模型的设计有关
训练
简单算一个交叉熵损失
迁移学习:利用bert预训练模型迁移到下游任务中,可以在非常短的时间上得到非常高的正确率。以后的NLP任务都应该是基于预训练模型来抽取特征,极大节约训练的时间和精力