🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

解決済

1回答

1019閲覧

torchtextでOverflowErrorが発生する

yama_kazu

総合スコア5

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

0グッド

0クリップ

投稿2019/10/28 03:01

編集2019/10/29 06:25

前提・実現したいこと

次のような、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

どのように修正すれば、エラーが解消されるのでしょうか。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

上の参考URLにあるように、

Python

1c:\users\Anaconda3\lib\site-packages\torchtext\utils.py in unicode_csv_reader(unicode_csv_data, **kwargs) 2 128 maxInt = int(maxInt / 10) 3 129 4--> 130 csv.field_size_limit(sys.maxsize) 5 131 6 132 if six.PY2:

のsys.maxsizeをmaxIntに変更して保存します。
なお、csvの問題ですが、utf-8で保存する必要がありました。(windowsだと自動的にcp932になるようです)
また、excel2016以降だと、保存形式の部分にutf-8で保存できるcsv形式があります。それで保存しました。

投稿2019/10/31 00:50

yama_kazu

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問