主页

Hugging Face 的 Transformers 库快速入门(七):翻译任务

本文我们将运用 Transformers 库来完成翻译任务。翻译是典型的序列到序列 (sequence-to-sequence, Seq2Seq) 任务,即对于每一个输入序列都会输出一个对应的序列。翻译在任务形式上与许多其他任务很接近,例如: 文本摘要 (Summarization):将长文本压缩为短文本,并且还要尽可能保留核心内容。 风格转换 (Style transfer):将文本转换为另一种书写风格,例如将文言文转换为白话文、将古典英语转换为现代英语; 生成式问答 (Generative question answering):对于给定的问题,基于上下文生成对应的答案。 理论上我们也可以将本文的操作应用于完成这些 Seq2Seq 任务。 翻译...

阅读更多

Hugging Face 的 Transformers 库快速入门(六):序列标注任务

我们的第一个实战任务是序列标注 (Sequence Labeling/Tagging),其目标是为文本中的每一个 token 分配一个标签,因此 Transformers 库也将其称为 token 分类任务。常见的序列标注任务有命名实体识别 NER (Named Entity Recognition) 和词性标注 POS (Part-Of-Speech tagging)。 命名实体识别 NER 旨在识别出文本中诸如人物、地点、组织等实体,即为所有的 token 都打上实体标签(包含“非实体”)。词性标注 POS 旨在为文本中的每一个词语标注上对应的词性,例如名词、动词、形容词等。 下面我们以 NER 为例,运用 Transformers 库手工构建一个基于 BERT 的模型...

阅读更多

Hugging Face 的 Transformers 库快速入门(五):快速分词器

通过第一部分的介绍,我们已经对 Transformers 库有了基本的了解,并且上手微调了一个句子对分类模型。从本章开始,我们将通过一系列的实例向大家展示如何使用 Transformers 库来完成目前主流的 NLP 任务。 在开始之前,我们先回顾一下在《模型与分词器》中已经介绍过的分词器 (Tokenizer),进一步了解分词器的一些高级功能。 1. 快速分词器 前面我们已经介绍过如何使用分词器将文本编码为 token IDs,以及反过来将 token IDs 解码回文本。 实际上,Hugging Face 共提供了两种分分词器: 慢速分词器:Transformers 库自带,使用 Python 编写; 快速分词器:Tokenizers 库提供,使用 Rust 编...

阅读更多

同指消解任务简介

同指消解 (Coreference Resolution),又称指代消解,是自然语言处理中的一个基础任务,即判断两个描述 (mention) 是否指向现实世界中的同一个对象。根据描述类型的不同,可以分为: 实体同指消解 实体就是我们常说的人物、组织机构、时间、地点等元素,在自然语言处理中通过专门的命名实体识别 (Named Entity Recognition, NER) 任务进行研究,更宽泛意义上的实体定义还包括代词,例如他、该公司、这些机构等。 实体同指消解任务就负责将指向现实世界中同一实体的所有实体描述连接起来,形成同指簇(或同指链),在同一个簇中(链上)的所有实体描述都互相同指。 事件同指消解 事件是指由某些参...

阅读更多

Hugging Face 的 Transformers 库快速入门(四):微调预训练模型

在上一篇《必要的 Pytorch 知识》中,我们介绍了使用 Transformers 库必须要掌握的 Pytorch 知识。 本文我们将正式上手微调一个句子对分类模型,并且保存验证集上最好的模型权重。 1. 加载数据集 我们以同义句判断任务为例(每次输入两个句子,判断它们是否为同义句),带大家构建我们的第一个 Transformers 模型。我们选择蚂蚁金融语义相似度数据集 AFQMC 作为语料,它提供了官方的数据划分,训练集 / 验证集 / 测试集分别包含 34334 / 4316 / 3861 个句子对,标签 0 表示非同义句,1 表示同义句: {"sentence1": "还款还清了,为什么花呗账单显示还要还款", "sentence2": "花呗全额还清怎么显示没有还款"...

阅读更多

Hugging Face 的 Transformers 库快速入门(三):必要的 Pytorch 知识

在上一篇《模型与分词器》中,我们介绍了 Model 类和 Tokenizers 类,尤其是如何运用分词器对文本进行预处理。 Transformers 库建立在 Pytorch 框架之上(Tensorflow 的版本功能并不完善),虽然官方宣称使用 Transformers 库并不需要掌握 Pytorch 知识,但是实际上我们还是需要通过 Pytorch 的 DataLoader 类来加载数据、使用 Pytorch 的优化器对模型参数进行调整等等。 因此,本文将介绍 Pytorch 的一些基础概念以及后续可能会使用到的类,让大家可以快速上手使用 Transformers 库建立模型。 1. Pytorch 基础 Pytorch 由 Facebook 人工智能研究院于 2017 ...

阅读更多

Hugging Face 的 Transformers 库快速入门(二):模型与分词器

在上一篇文章《开箱即用的 pipelines》中,我们通过 Transformers 库提供的 pipeline 函数展示了 Transformers 库能够完成哪些 NLP 任务,以及这些 pipelines 背后的工作原理。 本文将深入介绍 Transformers 库中的两个重要组件:模型(Models 类)和分词器(Tokenizers 类)。 1. 模型 在之前介绍 pipeline 模型时,我们使用 AutoModel 类根据 checkpoint 名称自动加载模型。当然,我们也可以直接使用对应的 Model 类。例如加载 BERT 模型(包括采用 BERT 结构的其他模型): from transformers import BertModel model = ...

阅读更多

Hugging Face 的 Transformers 库快速入门(一):开箱即用的 pipelines

Transformers 是由 Hugging Face 开发的一个 NLP 包,支持加载目前绝大部分的预训练模型。随着 BERT、GPT 等大规模语言模型的兴起,越来越多的公司和研究者采用 Transformers 库来构建 NLP 应用,因此熟悉 Transformers 库的使用方法很有必要。 注:本系列教程只专注于处理文本模态,多模态方法请查阅相关文档。 1. 开箱即用的 pipelines Transformers 库将目前的 NLP 任务归纳为几下几类: 文本分类:例如情感分析、句子对关系判断等; 对文本中的词语进行分类:例如词性标注 (POS)、命名实体识别 (NER) 等; 文本生成:例如填充预设的模板 (prompt)、预测文本中被遮掩掉...

阅读更多