pythonに関するエラーの解決法をご教授いただきたく存じます。
Pythonに関してはほとんど素人で、参考書を読みつつわからない部分を調べながら学習をしております。参考書
PyTorchを使って、日本語ニュース記事を分類するプログラムを作成しております。
以下は、データセットの読み込みと必要な前処理を行うコードになります。
別に作成するコードからインポートする形で使用します。
torchtextのバージョンは0.8.1です。
python
1import os 2import MeCab 3from torchtext.data import Dataset, Field, Example 4from torchtext.vocab import Vectors 5 6tagger = MeCab.Tagger() 7tagger.parse('') #mecab-python3の不具合に対応 8 9def tokenize(text): 10 """MeCabを用いて単語を分割して返す""" 11 node = tagger.parseToNode(text) 12 ret = [] 13 while node: 14 if node.stat not in (2, 3): #文頭と文末を表すトークンは無視する 15 ret.append(node.surface) 16 node = node.text 17 return ret 18 19def load_data(data_dir, emb_file): 20 """livedoorニュースコーパスと意味ベクトルをロードする""" 21 # torchtextを用いてデータセットの各アイテムの持つフォールドを定義 22 # アイテムはtextとlabelの2つのフィールドを持つ 23 text_field = Field(sequential = True, tokenize = tokenize) 24 label_field = Field(sequential=False, unk_token=None) 25 fields = [('text', text_field),('label', label_field)] 26 27 exsamples = [] 28 #データセット内のディレクトリを順に処理する 29 for entry in os.scandir(data_dir): 30 if entry.is_file(): 31 continue 32 33 #ディレクトリ名をラベル名として用いる 34 label = entry.name 35 36 #ディレクトリ内の記事を順に読み込む 37 for doc_file in os.scandir(entry.path): 38 if doc_file.name.startswith(label): 39 with open(doc_file.path) as f: 40 # 1-2行目はURLと日付のため3行目以降を用いる 41 text = '\n'.join(f.read().splitlines()[2:]) 42 # アイテム(torchtextのExsampleインスタンス)を作成 43 exsample = Example.fromlist([text, label], fields) 44 exsamples.append(exsample) 45 46 #アイテムのリストとフィールドの定義を用いてDatasetインスタンスを作成 47 data = Dataset(exsamples, fields) 48 49 # 訓練、テスト用のデータセットを70%、30%の分割比率で作成する 50 (train_data, test_data) = data.split(0.7) 51 52 #フィールドごとに辞書を作成する 53 text_field.build_vocab(train_data) 54 label_field.build_vocab(data) 55 56 #学習した意味ベクトルを読み込む 57 vectors = Vectors(emb_file) 58 text_field.vocab.load_vectors(vectors) 59 60 return(train_data, test_data, text_field, label_field)
以下の部分にエラーがあります。
python
1from torchtext.data import Dataset, Field, Exsample
どうやら、Exsampleというメソッドが存在しないようです。
torchtext.dataモジュールやExsampleメソッドについて個人的に調べてみましたが、思うような解決法を探し出すことができませんでした。
素人質問で恐縮ですが、「Exsampleメソッドが存在しないならば、どのメソッドを使えばいいか」、「そのメソッドを使用した場合、コードをどのように変更すればいいか」をご教授頂ければと存じます。
皆様お忙しいと存じますので、参考になると思われるホームページのURLを送っていただく形でも、嬉しく存じます。
お忙しい中恐縮ですが、ご対応頂ければ幸いです。
回答1件
あなたの回答
tips
プレビュー