文本实用工具和数据集,用于通用的深度学习,fork from torchtext,但使用numpy存储数据集以供更通用的使用。
pytexttool的Python项目详细描述
此存储库包括:
- pytext.data:文本(包括词汇和词向量)的通用数据加载器、抽象和迭代器
- pytext.datasets:用于普通nlp数据集的预构建加载程序
它是TorchText的一个分支,但对数据集使用numpy ndarray而不是torch.tensor或variable,以便使它成为NLP用户更通用的工具箱。
安装
确保您有python 2.7或3.5+和pytorch 0.4.0或更新版本。然后可以使用pip:
pip install pytexttool
数据
数据模块提供以下功能:
能够以声明方式描述如何加载“普通”格式的自定义NLP数据集:
>>>pos=data.TabularDataset(...path='data/pos/pos_wsj_train.tsv',format='tsv',...fields=[('text',data.Field()),...('labels',data.Field())])...>>>sentiment=data.TabularDataset(...path='data/sentiment/train.json',format='json',...fields={'sentence_tokenized':('text',data.Field(sequential=True)),...'sentiment_gold':('labels',data.Field(sequential=False))})
能够定义预处理管道:
>>>src=data.Field(tokenize=my_custom_tokenizer)>>>trg=data.Field(tokenize=my_custom_tokenizer)>>>mt_train=datasets.TranslationDataset(...path='data/mt/wmt16-ende.train',exts=('.en','.de'),...fields=(src,trg))
批处理、填充和数字化(包括构建词汇表对象):
>>># continuing from above>>>mt_dev=datasets.TranslationDataset(...path='data/mt/newstest2014',exts=('.en','.de'),...fields=(src,trg))>>>src.build_vocab(mt_train,max_size=80000)>>>trg.build_vocab(mt_train,max_size=40000)>>># mt_dev shares the fields, so it shares their vocab objects>>>>>>train_iter=data.BucketIterator(...dataset=mt_train,batch_size=32,...sort_key=lambdax:data.interleave_keys(len(x.src),len(x.trg)))>>># usage>>>next(iter(train_iter))<data.Batch(batch_size=32,src=[LongTensor(32,25)],trg=[LongTensor(32,28)])>
数据集拆分包装器(训练、验证、测试):
>>>TEXT=data.Field()>>>LABELS=data.Field()>>>>>>train,val,test=data.TabularDataset.splits(...path='/data/pos_wsj/pos_wsj',train='_train.tsv',...validation='_dev.tsv',test='_test.tsv',format='tsv',...fields=[('text',TEXT),('labels',LABELS)])>>>>>>train_iter,val_iter,test_iter=data.BucketIterator.splits(...(train,val,test),batch_sizes=(16,256,256),>>>sort_key=lambdax:len(x.text),device=0)>>>>>>TEXT.build_vocab(train)>>>LABELS.build_vocab(train)
数据集
数据集模块当前包含:
- 情绪分析:SST和IMDB
- 问题分类:trec
- 蕴涵:snli
- 语言建模:抽象类+wikitext-2
- 机器翻译:抽象类+multi30k,iwslt,wmt14
- 序列标记(例如pos/ner):抽象类+udpos
其他已计划或正在进行的工作:
- 回答问题:班
有关数据集使用的示例,请参见test目录。