paddlenlp调用ERNIE、使用ERNIEKIT
目录
- paddle调用ERNIE
- 安装paddle和paddlenlp
- (下载)加载ERNIE预训练模型
- tokenizer
- 获取文本语义特征向量表示
- ERNIEKIT实践
- 安装、配置nltk
- 下载ERNIEKIT源码
- 运行ERNIEKIT
paddle调用ERNIE
安装paddle和paddlenlp
pip安装paddlepaddle和paddlenlp:
版本:
paddle.version: 2.2.2
paddlenlp.version: 2.4.5
pip install paddlepaddle
pip install paddlenlp
(下载)加载ERNIE预训练模型
import paddlenlp # 加载ERNIE预训练模型
MODEL_NAME = "ernie-3.0-medium-zh"
ernie_model = paddlenlp.transformers.ErnieModel.from_pretrained(MODEL_NAME)
tokenizer
类似于BERT,vocab中几个特殊符号如下:
[PAD] 0:
[CLS] 1:位于整个输入的首尾
[SEP] 2:位于每个句子的句尾
[MASK] 3
[UNK] :表示unk_token,其不存在与vocab中,在每个task的配置文件中可以自定义,默认是[UNK]
对文本进行tokenizer处理
model_dir = 'C:\\Users\\cqf\\.paddlenlp\\models\\ernie-3.0-medium-zh' # 上一步下载模型时,默认下载到该地址
tokenizer = paddlenlp.transformers.ErnieTokenizer.from_pretrained(model_dir) # MODEL_NAME,第一次加载(本地没有模型)时可以直接指定模型名,会自动下载保存
encoded_text = tokenizer(text=["冬天来了,春天还会远吗?", '秋天来了,一群大雁往南飞。']) # text参数可以是字符串,也可以是多个字符串组成的列表
print(encoded_text) # 结果:{'input_ids': [[1, 196, 1296, 125, 61, 15, 4, 740, 125, 201, 32, 629, 1114, 12045, 2], [1, 1050, 125, 61, 15, 4, 7, 626, 19, 2665, 638, 219, 706, 12043, 2]], 'token_type_ids': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]}
结果:
获取文本语义特征向量表示
# 将tokenizer的input_ids、token_type_ids转化为tensor
input_ids = paddle.to_tensor(encoded_text['input_ids']) # padding后作为输入
token_type_ids = paddle.to_tensor(encoded_text['token_type_ids'])# 将tensor形式的input_ids、token_type_ids输入到ERNIE模型,得到输出:
# sequence_output:每个输入token的语义特征表示,shape=(batch_size, seq_len, hidden_size)
# pooled_output:整个句子的语义特征表示,shape=(batch_size, hidden_size)
sequence_output, pooled_output = ernie_model(input_ids, token_type_ids)print("Token wise output: {}, Pooled output: {}".format(sequence_output.shape, pooled_output.shape)) # Token wise output: [2, 15, 768], Pooled output: [2, 768]
print(sequence_output, pooled_output)
特征向量结果:
中文官方说明文档:https://paddlenlp.readthedocs.io/zh/latest/get_started/quick_start.html
文本分类模型(ErnieForSequenceClassification)实操文档:https://aistudio.baidu.com/aistudio/projectdetail/1294333
ERNIEKIT实践
需要已经安装了paddlepaddle、paddlenlp。
安装、配置nltk
① 安装nltk模块(在conda环境中):
conda install nltk
② 下载nltk数据包:nltk_data
直接在网上手动下载(我的网盘中):
链接:https://pan.baidu.com/s/1VrWiG3orbQanK917540rxw
提取码:1xpu
解压后(保证文件夹名为nltk_data)保存到:C:\Users[你的用户名]\AppData\Roaming
③ 进入python,下载数据包:
import nltk
from nltk.book import *
结果显示如下,nltk安装成功。
下载ERNIEKIT源码
GitHub下载地址:https://github.com/PaddlePaddle/ERNIE
也可以使用git命令下载:
git clone https://github.com/PaddlePaddle/ERNIE.git
运行ERNIEKIT
按照GitHub上步骤一步步执行。
注意:(目前测试了 text_classification 和 text_matching 两个任务,text_classification 会报UnicodeDecodeError
错误)
(1)下载的模型会保存在:.\ERNIE-ernie-kit-open-v1.0\applications\models_hub
(2)各个task中example文件下是对应的配置文件(_infer后缀的是预测配置文件,不带的为训练配置文件),根据自身设备情况,需要修改对应的 cpu 或者 gpu
如:“PADDLE_PLACE_TYPE”: “cpu”
(3)训练时,读取数据过程会报UnicodeDecodeError
错误,需要修改
① 需修改文件:erniekit\data\data_set_reader\basic_dataset_reader.py
修改位置,第120行:with open(file_path, "r+") as f:
修改后代码:with open(file_path, "r+", encoding='utf-8') as f:
② 需修改文件:erniekit\data\vocabulary.py
修改位置,第30行:file_vocab = open(self.vocab_path)
修改后代码:file_vocab = open(self.vocab_path, 'r+', encoding='utf-8')
(4)预测时,配置文件中读取的模型文件路径(“inference_model_path”)需要根据自身情况进行修改:
如:“inference_model_path”: “./output/cls_ernie_3.0_base_fc_ch_dy/save_inference_model/inference_step_251/”
paddlenlp调用ERNIE、使用ERNIEKIT相关推荐
- 试试在transformers中调用ERNIE
ERNIE是什么 ERNIE发展路径 文心大模型ERNIE是百度发布的产业级知识增强大模型,涵盖了NLP大模型和跨模态大模型.在中文场景下,ERNIE有明显的优势,目前已经发布了一系列模型,包括ERN ...
- 【PaddleNLP实战】对话意图分类方案
基于预训练模型ERNIE 3.0 和CrossWOZ数据的意图识别分类任务 AI Studio平台默认安装了Paddle和PaddleNLP,并定期更新版本. 如需手动更新Paddle,可参考飞桨安装 ...
- ERNIE源码学习与实践:为超越ChatGPT打下技术基础!
★★★ 本文源自AlStudio社区精品项目,[点击此处]查看更多精品内容 >>> ERNIE学习与实践:为超越ChatGPT打下技术基础! ERNIE是BERT相爱相杀的好基友,由 ...
- 文心ERNIE源码学习与实践:为超越ChatGPT打下技术基础!
ERNIE学习与实践:为超越ChatGPT打下技术基础! ERNIE是BERT相爱相杀的好基友,由ERNIE发展起来的文心大模型,是GPT3.0的强劲竞争对手,未来还会挑战ChatGPT的江湖地位! ...
- 【Paddle打比赛】基于PaddleNLP法研杯2022 -犯罪事实实体识别
一.第五届中国法研杯 LAIC2022 司法人工智能挑战赛 [犯罪事实实体识别] 比赛地址: http://data.court.gov.cn/pages/laic.html 1.任务介绍 本赛道由中 ...
- 基于ERNIR3.0文本分类:(KUAKE-QIC)意图识别多分类(单标签)
PaddleNLP基于ERNIR3.0文本分类以中医疗搜索检索词意图分类(KUAKE-QIC)为例[多分类(单标签)] 0.前言:文本分类任务介绍 文本分类任务是自然语言处理中最常见的任务,文本分类任 ...
- 2022年iFLYTEKA.I.开发者大赛疫情微博情绪识别挑战赛
自然语言技术 零基础入门NLP - 新闻文本分类 基于word2vec的word相似度 疫情微博情绪识别挑战赛 自然语言技术 背景 一.赛事任务 二.使用步骤 1.README 2.数据下载 3.模型 ...
- 基于Ernie-3.0 CAIL2019法研杯要素识别多标签分类任务
相关项目: Paddlenlp之UIE模型实战实体抽取任务[打车数据.快递单] Paddlenlp之UIE分类模型[以情感倾向分析新闻分类为例]含智能标注方案) 应用实践:分类模型大集成者[Paddl ...
- 『NLP经典项目集』06: 使用预训练模型ERNIE-GEN自动写诗
使用PaddleNLP预训练模型ERNIE-GEN生成诗歌 诗歌,是中国文化的瑰宝,它饱含作者的思想感情与丰富的想象,语言凝练而形象性强,具有鲜明的节奏,和谐的音韵,富于音乐美.诗歌语句一般分行排列, ...
最新文章
- Subsonic设置--新手上路
- 【iCore3 双核心板】例程二十一:LAN_TCPS实验——以太网数据传输
- [转载] 英语科技论文写作——Difference between APAMLA
- Linux中的Screen命令使用技巧详解
- 串口接收标志位语句_如何获取串口的发送和接收的标志位?
- 触发器初接触-同步两个表的指定字段
- c++Numerical string sort数字字符串排序的实现算法(附完整源码)
- 经典C语言程序100例之五零
- Firefox UI已迁移至Web Components
- ModelCoder中的代数环问题
- DBUtils结果集处理
- 优秀Python学习资源收集汇总
- MySQL_DBA整理
- 未解决:fatal error: wasm.h: 没有那个文件或目录 #include <wasm.h>
- java 浏览器 爬虫_[Java教程]在浏览器客户端进行爬虫开发
- 帆软报表更新到服务器控件展示不出来_帆软报表问题汇总
- 服务器运行速度测试方法,服务器如何测试运行速度
- 解决MySQL5.7在MAC下登录ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
- Hbase_Hbase 中 bloom filter 的设计与概念
- Chrome谷歌浏览器的快捷键:
热门文章
- 商用密码应用与安全性评估之(二)商用密码管理法律法规
- 使用BURP时,ca证书已经安装,谷歌浏览器总是提示“您的连接不是私密连接”或者是设置一些正常,就是抓不到数据包,网页可以正常打开,BURP拦截不到数据包。火狐浏览器一切正常。
- 特朗普荣获医学教育奖!2020年搞笑诺贝尔奖出炉,还有有味道的一系列研究......
- go juju/ratelimit 简单使用
- TP6 TP5 Db‘ not found
- 如何将英文文献完整翻译?公式都可以快速完整插入,比淘宝上的机翻要强一百倍!
- 算法练习——判断链表是否有环 leetcode.141 python
- 《电脑音乐制作实战指南:伴奏、录歌、MTV全攻略》——1.3 将下载的MIDI歌曲制作成MIDI音乐伴奏...
- 转:静态网和动态网的区别
- 《人工智能》机器学习 - 第5章 逻辑回归(二 二元逻辑回归实战)