【发布时间】:2020-09-30 16:53:15
【问题描述】:
有没有办法知道tokenizer.decode() 函数中从标记到原始单词的映射?
例如:
from transformers.tokenization_roberta import RobertaTokenizer
tokenizer = RobertaTokenizer.from_pretrained('roberta-large', do_lower_case=True)
str = "This is a tokenization example"
tokenized = tokenizer.tokenize(str)
## ['this', 'Ġis', 'Ġa', 'Ġtoken', 'ization', 'Ġexample']
encoded = tokenizer.encode_plus(str)
## encoded['input_ids']=[0, 42, 16, 10, 19233, 1938, 1246, 2]
decoded = tokenizer.decode(encoded['input_ids'])
## '<s> this is a tokenization example</s>'
目标是有一个函数将decode 进程中的每个标记映射到正确的输入单词,因为这里将是:desired_output = [[1],[2],[3],[4,5],[6]]
因为this 对应于 id @ 987654326@,而token 和ization 对应于ID [19244,1938],它们位于input_ids 数组的索引4,5。
【问题讨论】:
-
您能否补充一下您是如何创建分词器对象的以及您使用了哪些导入(可能是基于 BERT 的分词器)?
-
添加了完整的例子,谢谢!
标签: pytorch tokenize huggingface-transformers