NLP-transformer-分词库用法
NLP-transformer-分词库用法
参考文档: https://blog.csdn.net/orangerfun/article/details/124089467
1 pip install transformer
2 下载专有的vocab.txt词典
这个词典用于 把 单词-> id -> 词向量
https://github.com/google-research/bert

3 实例化分词实例

1 from transformers import BertTokenizer
2 import torch
3
4 token = r"vocab.txt"
5
6 bert_tokenizer = BertTokenizer(vocab_file=token)
4 分词任务
# 1 分词任务
res = bert_tokenizer.tokenize("山海关总兵官吴三桂")
print(res) ['山', '海', '关', '总', '兵', '官', '吴', '三', '桂']
5 转为id
# 2 转化为id
# 接受一个词或字列表
idres = bert_tokenizer.convert_tokens_to_ids("山海关总兵官吴三桂")
print(idres)
idres = bert_tokenizer.convert_tokens_to_ids(res)
print(idres)
# 一个字时候是否是准的? 准确id
idres = bert_tokenizer.convert_tokens_to_ids("山")
print(idres)
6 转文字

# id转字
wordres = bert_tokenizer.convert_ids_to_tokens([2255, 3862, 1068, 2600, 1070, 2135, 1426, 676, 3424])
# 可以成功转为对应汉字
print(wordres)
# 来看看 前面误操作的 100 能转为什么
wordres = bert_tokenizer.convert_ids_to_tokens(100)
print(wordres)
7 使用回调函数 实现批量等工程级别操作
text: 需要被编码的文本,可以是一维或二维list 最好是一维的padding: 是否需要padding,可选如下几个值truncation: 是否要进行截断
True or 'longest_first',保留由max_length指定的长度,或者当max_length没有指定时,截取保留模型最大能接受的长度,对于sentence pair,截取长度最大的句子
False or 'do_not_truncate (default) 不截取
only_first,截取到max_length, 但是只截取sentence pair中的第一个句子
'only_second',同理,只截取pair中第二个句子
max_length,句子最大长度,和padding及truncation相关
合理动态padding问题
注意 :因为需要添加 句子头和尾
['[CLS]', '我', '爱', '北', '京', '天', '[SEP]']
[101, 2769, 4263, 1266, 776, 1921, 102]
所以如果最大长度max_length,句子最大长度 设置为7的话, 注意5个位置来存实际的内容。
当max_length=10时候,填充为
{'input_ids': tensor([[ 101, 2769, 4263, 1266, 776, 1921, 2128, 7305, 102, 0],
[ 101, 2408, 1767, 1391, 4156, 7883, 102, 0, 0, 0]]), 在 标志位后面添加000
本质: 输出为 输入model的长度 词列表。
最大长度max_length即输入model的最大长度。

examples = [["我爱北京天安门", "广场吃炸鸡"],["苏德战争","俄罗"]]
res = bert_tokenizer(examples,
padding="max_length",
truncation=True,
max_length=10,
return_tensors="pt",
return_length=True)
print(res) {'input_ids': tensor([[ 101, 2769, 4263, 1266, 776, 102, 2408, 1767, 1391, 102],
[ 101, 5722, 2548, 2773, 751, 102, 915, 5384, 102, 0]]), 'token_type_ids': tensor([[0, 0, 0, 0, 0, 0, 1, 1, 1, 1],
[0, 0, 0, 0, 0, 0, 1, 1, 1, 0]]), 'length': tensor([10, 9]), 'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 0]])}
NLP-transformer-分词库用法的更多相关文章
- [NLP]Transformer模型解析
简介[2] Attention Is All You Need是2017年google提出来的一篇论文,论文里提出了一个新的模型,叫Transformer,这个结构广泛应用于NLP各大领域,是目前比较 ...
- 13.深度学习(词嵌入)与自然语言处理--HanLP实现
笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 13. 深度学习与自然语言处理 13.1 传统方法的局限 前面已经讲过了隐马尔可夫 ...
- [NLP] 相对位置编码(一) Relative Position Representatitons (RPR) - Transformer
对于Transformer模型的positional encoding,最初在Attention is all you need的文章中提出的是进行绝对位置编码,之后Shaw在2018年的文章中提出了 ...
- NLP学习(5)----attention/ self-attention/ seq2seq/ transformer
目录: 1. 前提 2. attention (1)为什么使用attention (2)attention的定义以及四种相似度计算方式 (3)attention类型(scaled dot-produc ...
- NLP与深度学习(四)Transformer模型
1. Transformer模型 在Attention机制被提出后的第3年,2017年又有一篇影响力巨大的论文由Google提出,它就是著名的Attention Is All You Need[1]. ...
- 中文分词库及NLP介绍,jieba,gensim的一些介绍
六款中文分词软件介绍: https://blog.csdn.net/u010883226/article/details/80731583 里面有jieba, pyltp什么的.另外下面这个博客有不少 ...
- [NLP] REFORMER: THE EFFICIENT TRANSFORMER
1.现状 (1) 模型层数加深 (2) 模型参数量变大 (3) 难以训练 (4) 难以fine-tune 2. 单层参数量和占用内存分析 层 参数设置 参数量与占用内存 1 layer 0.5Bill ...
- NLP入门学习中关于分词库HanLP导入使用教程
大家好,时隔多年再次打开我的博客园写下自己的经验和学习总结,开园三年多,文章数少得可怜,一方面自己技术水平局限,另一方面是自己确实想放弃写博客.由于毕业工作的原因,经常性的加班以及仅剩下少的可怜的休息 ...
- NLP之基于Transformer的句子翻译
Transformer 目录 Transformer 1.理论 1.1 Model Structure 1.2 Multi-Head Attention & Scaled Dot-Produc ...
- [NLP] The Annotated Transformer 代码修正
1. RuntimeError: "exp" not implemented for 'torch.LongTensor' class PositionalEncoding(nn. ...
随机推荐
- Echarts —自定义label标签的样式(formatter,rich,添加图标等操作)
最近公司项目中在使用 Echarts 绘制图表时,由于默认的 label 标签不能满足设计稿需求,所以研究了对 label标签进行格式化的方案,了解到可以使用 formatter 内容格式器对标签内容 ...
- CF1470E 题解 —— 询问分叉转构建虚树的复杂度证明
简要题意:给定一个长为 \(n\) 的排列 \(p\) 和一个整数 \(c\le 4\),称排列 \(p'\) 合法当且仅当 \(p'\) 可以通过 \(p\) 翻转若干个不交的区间 \([l,r]\ ...
- JavaScript之this、let、const关键字
各场景下的this this的意思:百度翻译为:这.这么.本 在JavaScript中,表示当前对象的引用关键字,没有特殊含义. 在一个方法中,this表示该方法所属的对象. 如果单独使用,this表 ...
- IIS部署WGCMS
一.下载所需的微软程序文件 安装插件:下载后直接安装就可以了,没有什么好说的. 安装1:点击下载 安装2:点击下载 二.在IIS上添加应用程序池 打开IIS,按照图片所示:在"应用程序池&q ...
- 在orangepi 3 lts上使用SmartCardReader(读卡器)
前期工作 orangepi 3 lts使用全志的H6芯片,通过查询该芯片的datasheet和user manual,可以发现H6有两个scr接口,分别为scr0和scr1,理论上是支持读卡器接口的, ...
- @NotNull,@NotBlank,@NotEmpty注解的区别
开发中常看见@NotNull,@NotBlank,@NotEmpty三个注解,但却没有深入了解过,下面介绍一下他们的应用场景和区别 @NotNull:主要用在基本数据类型上(Int,Integer,D ...
- element-ui动态表单验证
由于项目中固定标签的数据是由后端查询回来的数组,需要进行表单验证,代码如下: <template> <div class="form"> <el-fo ...
- vue3中reactive数据被重新赋值后无法双向绑定,使用reactive包裹数组如何正确赋值?
需求:将接口请求到的列表数据赋值给响应数据arr const arr = reactive([]); const load = () => { const res = [2, 3, 4, 5]; ...
- Tiup离线安装TIDB集群4.0.16版本
环境:centos7.6 中控机:8.213.8.25(内网) 可用服务器8.213.8.25-8.213.8.29 一.准备 TiUP 离线组件包 方法1:外网下载离线安装包拷贝进内网服务器 在Ti ...
- JavaWeb 验证码
package com.gen; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.s ...