質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.47%
Python 3.x

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

Q&A

解決済

1回答

899閲覧

【python】torchtextのモジュールにおけるインポートエラーの解決法

g1721040

総合スコア11

Python 3.x

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

0グッド

0クリップ

投稿2022/06/22 02:44

編集2022/06/22 03:25

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を送っていただく形でも、嬉しく存じます。

お忙しい中恐縮ですが、ご対応頂ければ幸いです。

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

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

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

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

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

can110

2022/06/22 02:57

誤字では?「Exsample」→「Example」
g1721040

2022/06/22 03:23

ご指摘ありがとうございます。 修正いたします。
guest

回答1

0

自己解決

can110さんから頂いたご指摘を修正して無事解決いたしました。
皆さん、ご協力感謝いたします。

投稿2022/06/22 03:29

g1721040

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問