首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >伯特的mask_token_id与attention_mask的关系

伯特的mask_token_id与attention_mask的关系
EN

Stack Overflow用户
提问于 2022-06-15 14:56:27
回答 1查看 440关注 0票数 0

我试图使用BERTforMaskedLM来获取文本中特定标记的概率。

代码语言:javascript
复制
from transformers import BertTokenizerFast, BertForMaskedLM

text = "George came home late last night"
spans = [(0,6), (27,33)]

model = BertForMaskedLM.from_pretrained('bert-base-uncased')
tokeniser = BertTokenizerFast.from_pretrained('bert-base-uncased')

tokens = tokeniser(text, return_offsets_mapping=True)
input_ids = tokens["input_ids"]
attention_mask = tokens["attention_mask"]

然后,对于跨度列表中的每一个跨度,我掩盖了我想要预测的标记。我将他们的attention_mask索引更改为0,将input_id索引更改为tokeniser.mask_token_id。

代码语言:javascript
复制
attention_mask[idx] = 0
input_ids[idx] = tokeniser.mask_token_id

我的问题是,如果注意掩码与所有1s保持原样以给模型提供更多的上下文,这是否意味着input_ids也需要修改?或者它们在这个意义上没有关系?

EN

回答 1

Stack Overflow用户

发布于 2022-06-15 15:59:47

attention_mask == 1表示注意到令牌时。强迫它为零有效地使令牌不可见。这和掩蔽毫无关系。

您不应该直接替换令牌,因为有些单词可以转换成几个标记,掩蔽一半的单词是无用的。最好用标记器特定的“掩码”字替换单词。对于bert-base-uncased,它是[MASK]。然后令牌程序将负责翻译。见HF 示例

此外,掩蔽连续几个单词会对预测质量产生负面影响。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72633607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档