transformer--使用transformer构建语言模型

什么是语言模型?

以一个符合语言规律的序列为输入,模型将利用序列间关系等特征,输出一个在所有词汇上的概率分布.这样的模型称为语言模型.

# 语言模型的训练语料一般来自于文章,对应的源文本和目标文本形如:
src1="Ican do",tgt1="can do it"
src2="can do it", tgt2="do it <eos>"

语言模型能解决哪些问题?

  1. 根据语言模型的定义,可以在它的基础上完成机器翻译,文本生成等任务,因为我们通过最后输出的概率分布来预测下一个词汇是什么.
  2. 语言模型可以判断输入的序列是否为一句完整的话,因为我们可以根据输出的概率分布查看最大概率是否落在句子结束符上,来判断完整性
  3. 语言模型本身的训练目标是预测下一个词,因为它的特征提取部分会抽象很多语言序列之间的关系,这些关系可能同样对其他语言类任务有效果.因此可以作为预训练模型进行迁移学习.

整个案例的实现可分为以下五个步骤

  1. 第一步: 导入必备的工具包
  2. 第二步:导入wikiText-2数据集并作基本处理。
  3. 第三步: 构建用于模型输入的批次化数据
  4. 第四步: 构建训练和评估函数
  5. 第五步: 进行训练和评估(包括验证以及测试) 

torchtext

torchtext 是一个用于文本处理的库,专为PyTorch设计。它提供了处理文本数据的多种工具,旨在简化自然语言处理(NLP)任务的数据预处理过程,并且可以与PyTorch无缝配合。以下是 torchtext 的一些主要功能:

  1. 数据加载torchtext 包含了许多预加载的数据集(如IMDb电影评论、语言建模数据集等),这使得加载和处理这些数据集变得简单。

  2. 文本预处理:库包含预处理功能,如分词、词干提取、停用词过滤。

  3. 构建词汇表:可以自动根据文本数据构建词汇表,并将单词转换为整数索引。

  4. 文本编码:提供了一种将单词转换为整数或向量表示(比如通过Word Embeddings)的机制。

  5. 批处理:提供了便捷的批处理功能,例如,可以将单词替换为对应的整数索引,并自动填充或截断使得批内的样本具有相同的长度,这对于训练循环非常有用。

  6. 迭代器torchtext 提供了几种迭代器(如BucketIterator)用于生成mini-batch,这些迭代器可以将长度相似的样本分到同一个批次中,以减少填充的数量,使训练更加高效。

  7. 集成学习词嵌入:可以轻松加载预训练的词向量,如GloVe或FastText,并将它们集成到模型中。

以下是一个使用torchtext的基本流程示例,包括加载数据集、构建词汇表和创建数据加载器迭代器:

import torchtext
from torchtext.datasets import IMDB
from torchtext.data import Field, LabelField, BucketIterator

# 定义字段处理
TEXT = Field(tokenize="spacy", tokenizer_language="en_core_web_sm")
LABEL = LabelField(dtype=torch.float)

# 加载IMDB电影评论数据集
train_data, test_data = IMDB.splits(TEXT, LABEL)

# 构建词汇表
TEXT.build_vocab(train_data, max_size=25000, vectors="glove.6B.100d")
LABEL.build_vocab(train_data)

# 创建批处理迭代器
train_iterator, test_iterator = BucketIterator.splits(
    (train_data, test_data), 
    batch_size=64, 
    device=device) # 'device' can be 'cpu' or 'cuda'

# 迭代数据
for batch in train_iterator:
    text, labels = batch.text, batch.label
    # 应用到模型训练...

主要有以下数据集:

Text Classification
AG_NEWS、AmazonReviewFull、AmazonReviewPolarity、CoLA、DBpedia、IMDb、MNLI、MRPC、QNLI、QQP、RTE、SogouNews、SST2、STSB、WNLI、YahooAnswers、YelpReviewFull、YelpReviewPolarity

Language Modeling
PennTreebank、WikiText-2、WikiText103

Machine Translation
IWSLT2016、IWSLT2017、Multi30k

Sequence Tagging
CoNLL2000Chunking、UDPOS

Question Answer
SQuAD 1.0、SQuAD 2.0

Unsupervised Learning
CC100、EnWik9

 wikiText-2数据集的体量中等,训练集共有600篇短文,共208万左右的词汇,33278个不重复词汇,OvV(有多少正常英文词汇不在该数据集中的占比)为2.6%,数据集中的短文都是维基百科中对一些概念的介绍和描述.

具体做法我就不写了,大家去这个网站看:这个网站还有这个可能需要翻墙软件

  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值