HuggingFace——Tokenizer的简单记录

本文围绕Tokenizer展开,介绍了不同预训练模型对应的分词工具及下载使用方法,展示了其输出结果。阐述了Tokenizer的工作流程,包括Normalization和Pre-tokenization。还探讨了分词底层原理,如BPE、WordPiece等。最后讲解了根据已有tokenizer训练新tokenizer的相关内容。

Tokenizer [ 中文Course | API|详述文档]

下载使用

针对AutoTokenizer来说,如果是从在线仓库中下载,其是要访问:

    commit_hash = kwargs.get("_commit_hash", None)
    resolved_config_file = cached_file(
        pretrained_model_name_or_path,
        TOKENIZER_CONFIG_FILE,
        cache_dir=cache_dir,
        force_download=force_download,
        resume_download=resume_download,
        proxies=proxies,
        use_auth_token=use_auth_token,
        revision=revision,
        local_files_only=local_files_only,
        _raise_exceptions_for_missing_entries=False,
        _raise_exceptions_for_connection_errors=False,
        _commit_hash=commit_hash,
    )
    if resolved_config_file is None:
        logger.info("Could not locate the tokenizer configuration file, will try to use the model config instead.")
        return {
   
   }
    commit_hash = extract_commit_hash(resolved_config_file, commit_hash)

    with open(resolved_config_file, encoding="utf-8") as reader:
        result = json.load(reader) # 加载"tokenizer_config.json"
    result["_commit_hash"] = commit_hash
    return result

其中TOKENIZER_CONFIG_FILE是指:

# Slow tokenizers used to be saved in three separated files
SPECIAL_TOKENS_MAP_FILE = "special_tokens_map.json"
ADDED_TOKENS_FILE = "added_tokens.json"
TOKENIZER_CONFIG_FILE = "tokenizer_config.json"

针对不同的预训练模型,分词工具是不同的,比如:

  • Byte-level BPE, 用于 GPT-2;
  • WordPiece, 用于 BERT;
  • SentencePiece or Unigram, 用于多个多语言模型
    一般来说,具体使用哪些分词工具是在repo里面的tokenizer.json文件中配置的,比如hfl/roberta-ext模型中的tokenizer.json中可以看到下面的配置信息:
"model":
    {
   
   
        "type": "WordPiece",
        "unk_token": "[UNK]",
        "continuing_subword_prefix": "##",
        "max_input_chars_per_word": 100,
        "vocab":
        {
   
   
            "[PAD]": 0,
            ……
        }       
    }

官方是建议使用Auto* 类,因为Auto* 类设计与架构无关。

Tokenizer的一些输出展示

tokenizer = AutoTokenizer.from_pretrained
### 如何对 Hugging Face 提供的模型进行微调 对于Hugging Face提供的模型,微调是指基于现有的预训练权重,在特定的任务上进一步优化这些权重以适应新的数据集或应用场景。这通常涉及到调整网络中的某些层或是整个网络的学习率等超参数设置。 #### 准备环境与安装依赖库 首先需要确保已经安装了`transformers`以及`datasets`这两个Python包,它们分别用于处理各种NLP任务所需的模型架构和支持快速访问大量公开可用的数据集合。 ```bash pip install transformers datasets ``` #### 加载预训练模型及分词器 通过指定想要使用的具体型号名称(例如bert-base-cased),可以从官方仓库中获取对应的Transformer结构及其初始化后的参数配置文件;与此同时还会得到配套的文字编码工具——即Tokenizer实例对象。 ```python from transformers import AutoModelForSequenceClassification, AutoTokenizer model_name = "bert-base-cased" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSequenceClassification.from_pretrained( model_name, num_labels=2 # 设置分类标签数量为二元情感分析服务 ) ``` #### 数据准备阶段 这里假设有一个CSV格式的小规模语料库作为输入源材料,并且每条记录都由两部分组成:“text”字段代表待解析字符串,“label”则表示其所属类别编号。接下来利用Dataset类完成读取操作并转换成适合喂给神经网络的形式。 ```python import pandas as pd from datasets import Dataset dataframe = pd.read_csv('path/to/your/dataset.csv') dataset = Dataset.from_pandas(dataframe) def preprocess_function(examples): return tokenizer(examples['text'], truncation=True, padding='max_length') tokenized_datasets = dataset.map(preprocess_function, batched=True) small_train_dataset = tokenized_datasets.shuffle(seed=42).select([i for i in list(range(10))]) ``` #### 微调过程概述 当一切就绪之后就可以着手于实际意义上的finetuning工作了。此时建议采用Trainer API简化流程控制逻辑,只需定义好TrainingArguments即可启动一轮完整的迭代更新周期[^2]。 ```python from transformers import TrainingArguments, Trainer training_args = TrainingArguments(output_dir='./results', evaluation_strategy="epoch") trainer = Trainer( model=model, args=training_args, train_dataset=small_train_dataset, eval_dataset=small_train_dataset ) trainer.train() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值