前提・実現したいこと
次のような、CSVファイルを作成し、Pytorchのtorchtext.data.TabularDataset.splitsでデータをロードします。
これから、機械学習を勉強します。,1
王様と、姫様が住んでいました。,2
あまり急ぎ過ぎないように。,3
時には、息抜きも大事です。,4
(これを、Pytorch-practice-val.csvと、Pytorch-practice-train.csvで保存しています)
実行してみた結果、エラーが出てしまいました。
発生している問題・エラーメッセージ
OverflowError Traceback (most recent call last) <ipython-input-24-9a4bbb84c330> in <module> 2 path='C:\Users\user1', train='Pytorch-practice-train.csv', 3 validation='Pytorch-practice-val.csv', format='csv', ----> 4 fields=[('Text', TEXT), ('Label', LABEL)]) ~\Anaconda3\lib\site-packages\torchtext\data\dataset.py in splits(cls, path, root, train, validation, test, **kwargs) 76 path = cls.download(root) 77 train_data = None if train is None else cls( ---> 78 os.path.join(path, train), **kwargs) 79 val_data = None if validation is None else cls( 80 os.path.join(path, validation), **kwargs) ~\Anaconda3\lib\site-packages\torchtext\data\dataset.py in __init__(self, path, format, fields, skip_header, csv_reader_params, **kwargs) 269 next(reader) 270 --> 271 examples = [make_example(line, fields) for line in reader] 272 273 if isinstance(fields, dict): ~\Anaconda3\lib\site-packages\torchtext\data\dataset.py in <listcomp>(.0) 269 next(reader) 270 --> 271 examples = [make_example(line, fields) for line in reader] 272 273 if isinstance(fields, dict): ~\Anaconda3\lib\site-packages\torchtext\utils.py in unicode_csv_reader(unicode_csv_data, **kwargs) 128 maxInt = int(maxInt / 10) 129 --> 130 csv.field_size_limit(sys.maxsize) 131 132 if six.PY2: OverflowError: Python int too large to convert to C long
該当のソースコード
python
1TEXT = torchtext.data.Field() 2LABEL = torchtext.data.Field() 3 4train_ds, test_ds = torchtext.data.TabularDataset.splits( 5 path='C:\Users\user1', train='Pytorch-practice-train.csv', 6 validation='Pytorch-practice-val.csv', format='csv', 7 fields=[('Text', TEXT), ('Label', LABEL)])
試したこと
下にある本のコードも動かしましたが、同じようなエラーが発生しました。(本は、tsv形式になっていました)
python
1from janome.tokenizer import Tokenizer 2j_t = Tokenizer() 3def tokenizer_janome(text): 4 return [tok for tok in j_t.tokenize(text, wakati=True)] 5 6import re 7def preprocessing_text(text): 8 # 改行、半角スペース、全角スペースを削除 9 text = re.sub('\r', '', text) 10 text = re.sub('\n', '', text) 11 text = re.sub(' ', '', text) 12 text = re.sub(' ', '', text) 13 14 # 数字文字の一律「0」化 15 text = re.sub(r'[0-9 0-9]', '0', text) # 数字 16 return text 17def tokenizer_with_preprocessing(text): 18 text = preprocessing_text(text) 19 ret = tokenizer_janome(text) 20 return ret 21 22import torchtext 23max_length = 25 24TEXT = torchtext.data.Field(sequential=True, tokenize=tokenizer_with_preprocessing, 25 use_vocab=True, lower=True, include_lengths=True, batch_first=True, fix_length=max_length) 26LABEL = torchtext.data.Field(sequential=False, use_vocab=False) 27train_ds, val_ds, test_ds = torchtext.data.TabularDataset.splits( 28 path='C:\Users\user1\pytorch_advanced-master\7_nlp_sentiment_transformer\data', train='text_train.tsv', 29 validation='text_val.tsv', test='text_test.tsv', format='tsv', 30 fields=[('Text', TEXT), ('Label', LABEL)]) 31
また、sysのmaxsizeを調べました。
python
1import sys 2print(sys.maxsize)
すると、
9223372036854775807
が結果として返されました。
OverflowErrorに関する項目も調べてみましたが、あまりいいのが見つかりませんでした。
10/29
以下のサイトを参考にすると、tsvファイルは動くようになりました。(csvは直っていません)
[OverflowError: Python int too large to convert to C long torchtext.datasets.text_classification.DATASETS'AG_NEWS'](https://stackoverflow.com/questions/57988897/overflowerror-python-int-too-large-to-convert-to-c-long-torchtext-datasets-text)
補足情報(FW/ツールのバージョンなど)
PCは、windows8.1です。
以下のサイト、本を参考にしました。
pytorchテキスト前処理(torchtext)【入門者向け】
つくりながら学ぶ!Pytorchによる、発展ディープラーニング 小川雄太郎 マイナビ出版 2019
どのように修正すれば、エラーが解消されるのでしょうか。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。