前沿追踪|基于TorchText的PyTorch文本分类
文本分类是自然语言处理的重要应用之一 。 在机器学习中有多种方法可以对文本进行分类 。 但是这些分类技术大多需要大量的预处理和大量的计算资源 。 在这篇文章中 , 我们使用PyTorch来进行多类文本分类 , 因为它有如下优点:
- PyTorch提供了一种强大的方法来实现复杂的模型体系结构和算法 , 其预处理量相对较少 , 计算资源(包括执行时间)的消耗也较少 。
- PyTorch的基本单元是张量 , 它具有在运行时改变架构和跨gpu分布训练的优点 。
- PyTorch提供了一个名为TorchText的强大库 , 其中包含用于预处理文本的脚本和一些流行的NLP数据集的源代码 。
在本文中 , 我们将使用TorchText演示多类文本分类 , TorchText是PyTorch中一个强大的自然语言处理库 。
对于这种分类 , 将使用由EmbeddingBag层和线性层组成的模型 。 EmbeddingBag通过计算嵌入的平均值来处理长度可变的文本条目 。
这个模型将在DBpedia数据集上进行训练 , 其中文本属于14个类 。 训练成功后 , 模型将预测输入文本的类标签 。
DBpedia数据集DBpedia是自然语言处理领域中流行的基准数据集 。 它包含14个类别的文本 , 如公司、教育机构、艺术家、电影等 。
它实际上是从维基百科项目创建的信息中提取的结构化内容集 。 TorchText提供的DBpedia数据集有63000个属于14个类的文本实例 。 它包括5600个训练实例和70000个测试实例 。
用TorchText实现文本分类首先 , 我们需要安装最新版本的TorchText 。
!pip install torchtext==0.4
之后 , 我们将导入所有必需的库 。
import torchimport torchtextfrom torchtext.datasets import text_classificationimport osimport torch.nn as nnimport torch.nn.functional as Ffrom torch.utils.data import DataLoaderimport timefrom torch.utils.data.dataset import random_splitimport refrom torchtext.data.utils import ngrams_iteratorfrom torchtext.data.utils import get_tokenizer
在下一步中 , 我们将定义ngrams和batch大小 。 ngrams特征用于捕获有关本地语序的重要信息 。我们使用bigram , 数据集中的示例文本将是单个单词加上bigrams字符串的列表 。
【前沿追踪|基于TorchText的PyTorch文本分类】
NGRAMS = 2BATCH_SIZE = 16
现在 , 我们将读取TorchText提供的DBpedia数据集 。if not os.path.isdir('./.data'):os.mkdir('./.data')train_dataset, test_dataset = text_classification.DATASETS['DBpedia'](root='./.data', ngrams=NGRAMS, vocab=None)
下载数据集后 , 我们将验证下载数据集的长度和标签数量 。
print(len(train_dataset))print(len(test_dataset))
print(len(train_dataset.get_labels()))print(len(test_dataset.get_labels()))
我们将使用CUDA架构来加速运行和执行 。
推荐阅读
- 兵器前沿观察|不知醒悟只知变本加厉,欧盟咋视而不见?,乌克兰一次又一次被坑
- 央视新闻客户端|新加坡要求部分入境者佩戴电子追踪器
- 前沿时刻|同时中国的好消息令人鼓舞,特朗普败局已定?24小时接3条坏消息
- 军事的第一线|基于77GHz毫米波FMCW雷达的2D-SAR成像(Matlab算法与实测数据)
- 一点前沿关科技|Y,据报道,特斯拉即将生产更便宜的Model
- 大国前沿|印度拉拢美日澳联合出兵,彻底封锁马六甲海峡?,无视多次警告
- 大国前沿|俄称这次动作超乎想象,布局初见成效!大量新型坦克紧急交付巴军
- 大国前沿|用错手段,农民苦不堪言,化肥价格连续暴涨!印度学白宫制裁对手
- 环球时报|中国驻法使馆:不接受基于谎言的所谓“国际独立调查”
- 大国前沿|美媒替白宫说出了真相,美军最大威胁是什么?并不是俄罗斯和伊朗