【发布时间】:2022-01-06 00:11:13
【问题描述】:
我似乎可以毫无问题地添加标记,但如果我尝试添加后缀(即.. 前面没有初始化字符 'Ġ' 的后缀),标记器不会在其中添加空格正确的位置。这是一些非常简化的测试代码。
from copy import deepcopy
from transformers import BartTokenizer
# Get the different tokenizers
tokenizer = BartTokenizer.from_pretrained('facebook/bart-base')
tokenizer_ext = deepcopy(tokenizer)
# Note that putting Ġ after the token causes the token not to be used
num_added = tokenizer_ext.add_tokens(['-of', '_01', 'WXYZ'])
# Original sentence
print('Original')
serial = ':ARG0-of ( sense_01 :ARG1 ( urgencyWXYZ )'
print(serial)
print()
# Baseline tokenizer
print('Bart default tokenizer')
tokens = tokenizer.tokenize(serial)
out_str = tokenizer.convert_tokens_to_string(tokens)
print(tokens)
print(out_str)
print()
# extended tokenizer
print('Extended tokenizer')
tokens = tokenizer_ext.tokenize(serial)
out_str = tokenizer_ext.convert_tokens_to_string(tokens)
print(tokens)
print(out_str)
这给了...
Original
:ARG0-of ( sense_01 :ARG1 ( urgencyWXYZ )
Bart default tokenizer
[':', 'AR', 'G', '0', '-', 'of', 'Ġ(', 'Ġsense', '_', '01', 'Ġ:', 'AR', 'G', '1', 'Ġ(', 'Ġurgency', 'W', 'XY', 'Z', 'Ġ)']
:ARG0-of ( sense_01 :ARG1 ( urgencyWXYZ )
Extended tokenizer
[':', 'AR', 'G', '0', '-of', '(', 'Ġsense', '_01', ':', 'AR', 'G', '1', 'Ġ(', 'Ġurgency', 'WXYZ', ')']
:ARG0-of( sense_01:ARG1 ( urgencyWXYZ)
请注意,默认的 bart 分词器会产生与原始句子相同的输出,但扩展的分词器不会在新的后缀分词之后放置空格。即.. 它选择'(' 而不是'Ġ('。知道为什么会这样以及添加后缀标记的正确方法是什么?
【问题讨论】:
标签: python huggingface-transformers