博客
关于我
BERT开源代码分析(一)——dataset数据加载模块
阅读量:799 次
发布时间:2023-04-16

本文共 1186 字,大约阅读时间需要 3 分钟。

dataset模块

以下是对代码的详细解读和分析:

1. vocab.py

在这个模块中,我们定义了一个名为`TorchVocab`的类,主要用于处理词汇表(vocabulary)的构建与管理。以下是类的初始化方法及其相关实现细节:

def init(self, counter, max_size=None, min_freq=1, specials=['

', '
'], vectors=None, unk_init=None, vectors_cache=None):

**参数说明:**

  • counter:类型为collections.Counter的对象,用于存储数据集中每个单词的频率统计结果。通常通过在数据集上进行词频统计得到。

  • max_size:类型为intNone,默认值为None。表示词汇表的最大容量。如果设置为None,则没有大小限制;如果设置为具体数字,词汇表的大小将限制为不超过这个数字。

  • min_freq:类型为int,默认值为1。表示包含在词汇表中的单词的最低频率阈值。低于该阈值的单词将被剔除。小于1的值将被自动调整为1

  • specials:类型为字符串列表,默认值为['<pad>', '<oov>']。表示一些特殊标记,会被自动添加到词汇表中。这些标记通常用于填充(<pad>)、表示未知单词(<oov>)等特殊用途。

  • vectors:类型为预训练向量,可以是字符串列表或None,默认值为None。用于指定预训练词向量的路径或名称。支持加载外部预训练模型的词向量。

  • unk_init:类型为回调函数,默认值为torch.Tensor.zero_。用于初始化未知单词(OOV)的向量,默认情况下初始化为零向量。

  • vectors_cache:类型为字符串,默认值为'.vector_cache'。用于指定预训练向量的缓存目录路径。若指定了路径,预训练向量将被下载或加载到该目录中。

**初始化逻辑:**

  • 首先,将specials列表中的所有特殊标记从counter中删除,以避免这些标记被误算入频率统计中。

  • 根据max_size的值,计算最终的词汇表容量。如果max_sizeNone,则词汇表容量为len(specials);否则,容量为max_size + len(specials)

  • 对频率进行排序,首先按单词的字母顺序排序,然后按频率从大到小排序。这样可以确保高频单词优先被包含在词汇表中。

  • 遍历排序后的结果,将单词及其频率进行处理。如果单词的频率低于min_freq,则不会被包含在词汇表中。为了确保min_freq至少为1,在处理过程中会对min_freq进行调整。

  • 最后,将特殊标记添加到词汇表中,并确保这些标记不会被频率过滤淘汰。未知单词(OOV)的向量初始化函数由unk_init参数决定,默认使用零向量初始化。

  • 转载地址:http://rigfk.baihongyu.com/

    你可能感兴趣的文章
    Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
    查看>>
    Webpack 之 basic chunk graph
    查看>>
    Mysql5.7版本单机版my.cnf配置文件
    查看>>
    mysql5.7的安装和Navicat的安装
    查看>>
    mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
    查看>>
    Mysql8 数据库安装及主从配置 | Spring Cloud 2
    查看>>
    mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
    查看>>
    MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
    查看>>
    MYSQL8.0以上忘记root密码
    查看>>
    Mysql8.0以上重置初始密码的方法
    查看>>
    mysql8.0新特性-自增变量的持久化
    查看>>
    Mysql8.0注意url变更写法
    查看>>
    Mysql8.0的特性
    查看>>
    MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    查看>>
    MySQL8修改密码的方法
    查看>>
    Mysql8在Centos上安装后忘记root密码如何重新设置
    查看>>
    Mysql8在Windows上离线安装时忘记root密码
    查看>>
    MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
    查看>>
    mysql8的安装与卸载
    查看>>
    MySQL8,体验不一样的安装方式!
    查看>>