本文首先讲解了TorchText库的安装,建议新建一个虚拟环境来学习NLP,并在安装pytorch的时候,一并安装TorchText。本教程使用的是PyTorch 1.11+torchtext 0.12.0环境。接着,介绍了TorchText内置的数据集,包括文本分类数据集、语言模型、机器翻译、序列标注和问答等。然后,讲解了torchtext中的分词工具,如get_tokenizer函数,它支持多种分词规则,如basic_english、spacy、moses、toktok、revtok和subword等。通过示例展示了如何使用basic_english规则进行分词。
小陶个人建议新建一个虚拟环境来学习NLP。并且在安装pytorch的时候,一并安装TorchText。
本教程使用的是PyTorch 1.11+torchtext 0.12.0环境。
pip install torchtext==0.12.0 torchdata transformers -i https://pypi.tuna.tsinghua.edu.cn/simple
TorchText库的版本与Torch的版本是强关联的。适配关系如下(来源于torchtext的官方文档:GitHub - pytorch/text: Models, data loaders and abstractions for language processing, powered by PyTorch)
PyTorch version | torchtext version | Supported Python version |
---|---|---|
nightly build | main | >=3.8, <=3.11 |
2.3.0 | 0.18.0 | >=3.8, <=3.11 |
2.2.0 | 0.17.0 | >=3.8, <=3.11 |
2.1.0 | 0.16.0 | >=3.8, <=3.11 |
2.0.0 | 0.15.0 | >=3.8, <=3.11 |
1.13.0 | 0.14.0 | >=3.7, <=3.10 |
1.12.0 | 0.13.0 | >=3.7, <=3.10 |
1.11.0 | 0.12.0 | >=3.6, <=3.9 |
1.10.0 | 0.11.0 | >=3.6, <=3.9 |
1.9.1 | 0.10.1 | >=3.6, <=3.9 |
1.9 | 0.10 | >=3.6, <=3.9 |
1.8.1 | 0.9.1 | >=3.6, <=3.9 |
1.8 | 0.9 | >=3.6, <=3.9 |
1.7.1 | 0.8.1 | >=3.6, <=3.9 |
1.7 | 0.8 | >=3.6, <=3.8 |
1.6 | 0.7 | >=3.6, <=3.8 |
1.5 | 0.6 | >=3.5, <=3.8 |
在torchtext的数据集中,里面有很多的数据集。具体可以用下面的代码测试一下。
在本文中,将使用IMDB数据集进行演示。
里面一些数据集的介绍可以看看这篇文章:PyTorch torchtext中带有的自然语言处理数据集
1.AG_News
2.SogouNews
3.DBpedia
4.YelpReviewPolarity
5.YelpReviewFull
6.YahooAnswers
7.AmazonReviewPolarity
8.AmazonReviewFull
9.IMDB
1.WikiText-2
2.WikiTest103
3.PennTreebank
1.Multi30k
2.IWSLT2016
3.IWSLT2017
1.UDPOS
2.CoNLL2000Chunking
1.SQuAD 1.0
2.SQuAD 2.0
1.EnWik9
在torchtext中,里面提供了一个get_tokenizer分词工具。
get_tokenizer函数的作用是创建一个分词器,分词器支持’basic_english’,‘spacy’,‘moses’,‘toktok’,‘revtok’,'subword’等规则。其中basic_english是可以直接使用的,spacy需要使用到spacy模块,moses需要使用到sacremoses模块,toktok需要使用到nltk模块,revtok和subword需要使用到revtok模块。
以basic_english来举个例子展示一下用法:
# 分词工具
from torchtext.data.utils import get_tokenizer
# 实体化
tokenizer = get_tokenizer('basic_english')
tokenizer('You are so handsome') #自动转为小写