GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

pytorch

text – テキストとNLPのデータローダーと抽象

投稿日:

テキストとNLPのデータローダーと抽象

トーチテキスト

このリポジトリは、

  • 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ディレクトリを参照してください。







-pytorch
-, , , , ,

執筆者:

pytorch

text – テキストとNLPのデータローダーと抽象

投稿日:

(さらに…)







-pytorch
-, , , , ,

執筆者: