Github: https://github.com/pytorch/text
トーチテキスト
このリポジトリは、
- torchtext.data :テキスト用の一般的なデータローダー、抽象、イテレータ(語彙や単語ベクトルを含む)
- torchtext.datasets :一般的なNLPデータセット用のあらかじめ構築されたローダー
インストール
Python 2.7または3.5+およびPyTorch 0.4.0以降がインストールされていることを確認してください。 次に、pipを使用してtorchtextをインストールできます。
pip install torchtext
PyTorchバージョン0.4.0より前のバージョンでは、pip install torchtext == 0.2.3を使用してください。
オプション要件
SpaCyの英語トークナイザを使用するには、 SpaCyをインストールして英語モデルをダウンロードする必要があります。
pip install spacy python -m spacy download en
また、 NLTKの Moses トークナイザを使用することもできます。 NLTKをインストールし、必要なデータをダウンロードする必要があります。
pip install nltk python -m nltk.downloader perluniprops nonbreaking_prefixes
データ
データモジュールには次のものがあります。
-
「ノーマル」形式のカスタム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=lambda x: 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=lambda x: 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
他のものが計画されているか、進行中の作業:
- 質問に答える:SQuad
データセットの使用例については、 test
ディレクトリを参照してください。