NLP masked_tokens[]、token_masks[]是什么?

1、masked_tokens[]、token_masks[]介绍

masked_tokenstoken_masks两个列表用于存储mask处理后的token(分词)结果和对应的mask标志。

  • masked_tokens列表存储经过mask处理后的分词结果。

  • token_masks列表存储与每个分词结果对应的mask标志。

2、示例说明:

例如一个 masked_tokens[0]是:

'C', 'N', '\[C@H\]', '(', 'c', '1', 'c', 'c', '(', 'Br', ')', 'c', 'c', 'c', '1', 'F', ')', '**\**', '(', **'\', '\', '\'**, 'C', '1'

token_masks[0]是:

False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, **True**, False, **True, True, True**, False, False

它们的长度都是28

3、代码示例:

下面代码就是先对句子进行了token处理,然后进行了mask处理:

python 复制代码
# 通过正则匹配对第一个句子(sents1)进行分词,得到tokens。
tokens = self._regex_match(sents1)
# 对tokens进行mask处理
m_tokens, token_masks = self._mask_tokens(tokens, empty_mask=mask)

4、mask的类型

span mask

python 复制代码
    def _mask_span(self, ts):
        curr_token = 0
        masked = []
        token_mask = []

        mask_bools = [True, False]
        weights = [self.mask_prob, 1 - self.mask_prob]
        sampled_mask = random.choices(mask_bools, weights=weights, k=len(ts))

        while curr_token < len(ts):
            # If mask, sample from a poisson dist to get length of mask
            if sampled_mask[curr_token]:
                mask_len = torch.poisson(torch.tensor(self.span_lambda)).long().item()
                masked.append(self.mask_token)
                token_mask.append(True)
                curr_token += mask_len

            # Otherwise don't mask
            else:
                masked.append(ts[curr_token])
                token_mask.append(False)
                curr_token += 1

        return masked, token_mask

随机对某些位置进行mask,从泊松区取样得到mask的长度,mask前后序列的长度可能会发生变化

replace mask

python 复制代码
    def _mask_replace(self, ts):
        mask_bools = [True, False]
        weights = [self.mask_prob, 1 - self.mask_prob]
        token_mask = random.choices(mask_bools, weights=weights, k=len(ts))
        masked = [self._mask_token(ts[i]) if m else ts[i] for i, m in enumerate(token_mask)]
        return masked, token_mask

根据权重Weight随机对某些位置进行mask,mask前后序列的长度不会发生变化

权重Weight:例如,如果设定 self.mask_prob = 0.7,则掩码标记 True 的权重为 0.7,掩码标记 False 的权重为 0.3

相关推荐
一个处女座的程序猿41 分钟前
LLMs之SLMs:《Small Language Models are the Future of Agentic AI》的翻译与解读
人工智能·自然语言处理·小语言模型·slms
档案宝档案管理3 小时前
档案宝:企业合同档案管理的“安全保险箱”与“效率加速器”
大数据·数据库·人工智能·安全·档案·档案管理
IT_Beijing_BIT4 小时前
TensorFlow Keras
人工智能·tensorflow·keras
mit6.8244 小时前
[手机AI开发sdk] 安卓上的Linux环境
人工智能·智能手机
张较瘦_5 小时前
[论文阅读] AI + 教育 | AI赋能“三个课堂”的破局之道——具身认知与技术路径深度解读
论文阅读·人工智能
小雨青年5 小时前
Cursor 项目实战:AI播客策划助手(二)—— 多轮交互打磨播客文案的技术实现与实践
前端·人工智能·状态模式·交互
西西弗Sisyphus5 小时前
线性代数 - 初等矩阵
人工智能·线性代数·机器学习
王哈哈^_^6 小时前
【数据集】【YOLO】【目标检测】共享单车数据集,共享单车识别数据集 3596 张,YOLO自行车识别算法实战训推教程。
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计
仙人掌_lz6 小时前
Multi-Agent的编排模式总结/ Parlant和LangGraph差异对比
人工智能·ai·llm·原型模式·rag·智能体
背包客研究6 小时前
如何在机器学习中使用特征提取对表格数据进行处理
人工智能·机器学习