我想使用拥抱脸的填充蒙版管道来猜测被屏蔽的令牌,然后仅将猜测的令牌提取为单词。此代码应执行以下操作:
!pip install -q transformers
model = pipeline('fill-mask')
outcome = model("Kubernetes is a container orchestration <mask>")[0]
#Prints: "Kubernetes is a container orchestration platform"
print(outcome['sequence'])
token = outcome['token']
#Prints: 1761
print(token)
#Prints: Ġplatform
print(model.tokenizer.convert_ids_to_tokens(token))
但是我发现它给了我"Ġplatform"
而不是"platform"
的回响-有人知道这是为什么还是发生了什么?
答案 0 :(得分:0)
这只是基础模型的特殊性(请参阅here以检查它是否为distilroberta-base
)。
具体来说,提炼模型使用与其“教师模型”相同的标记器(在本例中为RoBERTa)。反过来,RoBERTa的令牌生成器在没有任何形式的空格的情况下完全可以正常工作,另请参见this thread关于OpenAI的GPT-2模型,该模型使用相同的令牌化策略(请参见here)。>
具体来说,您可以注意到,表示新单词的开头始终是相同的Unicode字符\u0120
。相对而言,由多个子词组成的词在以后的子词中将没有这样的起始字符。
即complication
将被分解为两个虚构的子词Ġcompli
cation
。
因此,如果Ġ
出现在单词中,则只需将其删除。