前沿追踪|基于TorchText的PyTorch文本分类

文本分类是自然语言处理的重要应用之一 。 在机器学习中有多种方法可以对文本进行分类 。 但是这些分类技术大多需要大量的预处理和大量的计算资源 。 在这篇文章中 , 我们使用PyTorch来进行多类文本分类 , 因为它有如下优点:

  • PyTorch提供了一种强大的方法来实现复杂的模型体系结构和算法 , 其预处理量相对较少 , 计算资源(包括执行时间)的消耗也较少 。
  • PyTorch的基本单元是张量 , 它具有在运行时改变架构和跨gpu分布训练的优点 。
  • PyTorch提供了一个名为TorchText的强大库 , 其中包含用于预处理文本的脚本和一些流行的NLP数据集的源代码 。

前沿追踪|基于TorchText的PyTorch文本分类在本文中 , 我们将使用TorchText演示多类文本分类 , TorchText是PyTorch中一个强大的自然语言处理库 。
对于这种分类 , 将使用由EmbeddingBag层和线性层组成的模型 。 EmbeddingBag通过计算嵌入的平均值来处理长度可变的文本条目 。
这个模型将在DBpedia数据集上进行训练 , 其中文本属于14个类 。 训练成功后 , 模型将预测输入文本的类标签 。
DBpedia数据集DBpedia是自然语言处理领域中流行的基准数据集 。 它包含14个类别的文本 , 如公司、教育机构、艺术家、电影等 。
它实际上是从维基百科项目创建的信息中提取的结构化内容集 。 TorchText提供的DBpedia数据集有63000个属于14个类的文本实例 。 它包括5600个训练实例和70000个测试实例 。
用TorchText实现文本分类首先 , 我们需要安装最新版本的TorchText 。
!pip install torchtext==0.4
前沿追踪|基于TorchText的PyTorch文本分类之后 , 我们将导入所有必需的库 。
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)
前沿追踪|基于TorchText的PyTorch文本分类下载数据集后 , 我们将验证下载数据集的长度和标签数量 。
print(len(train_dataset))print(len(test_dataset))
前沿追踪|基于TorchText的PyTorch文本分类print(len(train_dataset.get_labels()))print(len(test_dataset.get_labels()))
前沿追踪|基于TorchText的PyTorch文本分类我们将使用CUDA架构来加速运行和执行 。


推荐阅读