Nlp 如何使用transformer模型获取词汇表外单词的单词嵌入?

Nlp 如何使用transformer模型获取词汇表外单词的单词嵌入?,nlp,huggingface-transformers,transformer,huggingface-tokenizers,Nlp,Huggingface Transformers,Transformer,Huggingface Tokenizers,当我尝试使用bio_临床bert获取一个句子的单词嵌入时,对于一个包含8个单词的句子,我得到了11个标记ID(+开始和结束),因为“嵌入”是一个词汇表外的单词/标记,被分为em,bed,ding,s 我想知道,除了计算这些向量的平均值外,是否还有任何可用的聚合策略是有意义的 来自transformers进口自动煮锅,AutoModel #下载和加载模型 代币器=来自预训练(“emilyalsentzer/Bio”)的自动代币器 模型=自动模型。来自预训练(“emilyalsentzer/Bio”

当我尝试使用bio_临床bert获取一个句子的单词嵌入时,对于一个包含8个单词的句子,我得到了11个标记ID(+开始和结束),因为“嵌入”是一个词汇表外的单词/标记,被分为
em
bed
ding
s

我想知道,除了计算这些向量的平均值外,是否还有任何可用的聚合策略是有意义的

来自transformers进口自动煮锅,AutoModel
#下载和加载模型
代币器=来自预训练(“emilyalsentzer/Bio”)的自动代币器
模型=自动模型。来自预训练(“emilyalsentzer/Bio”)
句子=['此框架为每个输入句子生成嵌入']
#标记化句子
encoded_input=tokenizer(句子,padding=True,truncation=True,max_length=128,return_tensors='pt')
#计算令牌嵌入
使用手电筒。无梯度()
模型_输出=模型(**编码_输入)
打印(编码的_输入['input_id'].shape)
输出:
火炬尺寸([1,13])

对于编码的\u输入['input\u id'][0]中的令牌:
打印(标记器.解码([token]))
输出:

[CLS]
this
framework
generates
em
##bed
##ding
##s
for
each
input
sentence
[SEP]

据我所知,平均聚合是这里最常用的工具,事实上,甚至有科学文献,从经验上证明它工作得很好: 由赵、穆德加尔和梁创作。公式1也准确地描述了您的提议

理论上可以采用的一种替代方法是对整个输入进行平均聚合,基本上对所有单词(可能除了“
嵌入”
”)进行“上下文预测”,因此在变压器模型的训练期间模拟类似于
[MASK]
的内容。但这只是我的一个建议,没有任何科学证据证明它是有效的(无论是好是坏)