前提・実現したいこと
開発環境はGoogle Colaboratory。
プログラム自体の目的:Twitterの発話文と返答文をデータセット(形式はtsv)に発話文から単語ベクトルを生成するプログラムの構築。
解決したい問題:
発話文と返答文をIDに変換するデーターローダーを作成していたのですが、データローダーの動作確認でエラーが出てしまい、解決方法がわかりません。教えていただけると助かります。
発生している問題・エラーメッセージ
ValueError Traceback (most recent call last) <ipython-input-17-e846a7ffd179> in <module>() 3 val_dataloader = torchtext.data.Iterator(val_dataset, batch_size=2, train=False, sort=False) 4 test_dataloader = torchtext.data.Iterator(test_dataset, batch_size=2, train=False, sort=False) ----> 5 batch = next(iter(train_dataloader)) 6 print(batch.query) 7 print(batch.response) 3 frames /usr/local/lib/python3.6/dist-packages/torchtext/data/field.py in numericalize(self, arr, device) 321 arr = self.postprocessing(arr, None) 322 --> 323 var = torch.tensor(arr, dtype=self.dtype, device=device) 324 325 if self.sequential and not self.batch_first: ValueError: too many dimensions 'str'
該当のソースコード
python3
1#読み込んだtsvファイル内の一行ごとの発話文と返答文への各処理 2max_length = 280 #1ツイートの文字数最大数 3QUERY = torchtext.data.Field(sequential=True, tokenize=tokenizer_with_preprocessing,use_vocab=True, 4 lower=False, include_lengths=True,batch_first=True, fix_length=True) 5RESPONSE = torchtext.data.Field(sequential=True, tokenize=tokenizer_with_preprocessing,use_vocab=False, 6 lower=False, include_lengths=True,batch_first=True, fix_length=True) 7 8#データセットの作成 9train_dataset,test_dataset = torchtext.data.TabularDataset.splits( 10 path="/content/drive/My Drive/Colab Notebooks/",train="tweet_pair_10493788(ver.min_noID).tsv",test="tweet_pair_10493788(test_min_noID).tsv", 11 format="tsv",fields=[("query", QUERY), ("response", RESPONSE)]) 12 13#ボキャブラリー(語彙)の作成 14QUERY.build_vocab(train_dataset,min_freq=1) 15 16#データローダーの作成 17train_dataloader = torchtext.data.Iterator(train_dataset, batch_size=2, train=True) 18#下記val_datasetは作成してありますが、エラーとは無関係と思われるため記載を省略してあります。 19val_dataloader = torchtext.data.Iterator(val_dataset, batch_size=2, train=False, sort=False) 20test_dataloader = torchtext.data.Iterator(test_dataset, batch_size=2, train=False, sort=False) 21#動作確認 22batch = next(iter(train_dataloader))#**※ここで上記のエラーが出てしまっているようです。** 23print(batch.query) 24print(batch.response)
試したこと
ボキャブラリの生成元をQUERYからRESPONSEに変えてみたりしましたが、同様のエラーが出ました。
あなたの回答
tips
プレビュー