位置: IT常识 - 正文
推荐整理分享tokenizer.encode、tokenizer.tokenize、tokenizer.encode_plus的用法差异,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
tokenizer.tokenize :先分词,再转成id,直接输出tensor
tokenizer.encode :直接输出id,需要转换为tensor
sentence = "Hello, my son is cuting."input_ids_method1 = torch.tensor(tokenizer.encode(sentence,add_special_tokens=True)) # tensor([ 101, 7592, 1010, 2026, 2365, 2003, 3013, 2075, 1012, 102])input_token2 = tokenizer.tokenize(sentence)# ['hello', ',', 'my', 'son', 'is', 'cut', '##ing', '.']input_ids_method2 = tokenizer.convert_tokens_to_ids(input_token2)# tensor([7592, 1010, 2026, 2365, 2003, 3013, 2075, 1012])# 并没有开头和结尾的标记:[cls]、[sep]二、tokenizer.encode和tokenizer.encode_plus的区别普通编码 tokenizer.encode()、增强编码 tokenizer.encode_plus()
tokenizer.encode_plus() 的编码方式比tokenizer.encode()在文本分类上的编码方式要好,在中文分类数据集上会有1个点左右的差别
1、tokenizer.encode仅返回input_ids
2、 tokenizer.encode_plus返回所有的编码信息,具体如下:
’input_ids:是单词在词典中的编码‘token_type_ids’:区分两个句子的编码(上句全为0,下句全为1)‘attention_mask’:指定对哪些词进行self-Attention操作# 编码错配! encode_plus 的编码方式比encode在文本分类上的编码方式要好import torch from transformers import BertTokenizermodel_name =" bert-base-uncase"tokenizer = BertTokenizener.from_pretrained(model_name)sentence= "hello,myson"-----------------------print(tokenizer.encode(sentence))[101, 7592, 1010, 2026, 2365, 2003, 5870, 1012, 102]当tokenizer.encode函数中的add_special_tokens设置为False时,同样不会出现开头和结尾标记:[cls], [sep]-----------------------print(tokenizer.encode_plus(sentence)){'input_ids': [101, 7592, 1010, 2026, 2365, 2003, 5870, 1012, 102], 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1]}上一篇:【创作赢红包】项目信息分析表
下一篇:【Vue 快速入门系列】Vue数据实现本地存储、自定义事件绑定、全局事件总线、$nextTick的使用(vue快速入门与实战开发)
友情链接: 武汉网站建设