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

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

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

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

解決済

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

g1721040
g1721040

総合スコア11

Python 3.x

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

1回答

0評価

0クリップ

117閲覧

投稿2022/06/22 02:44

編集2022/06/22 12:29

pythonに関するエラーの解決法をご教授いただきたく存じます。
Pythonに関してはほとんど素人で、参考書を読みつつわからない部分を調べながら学習をしております。参考書

PyTorchを使って、日本語ニュース記事を分類するプログラムを作成しております。
以下は、データセットの読み込みと必要な前処理を行うコードになります。
別に作成するコードからインポートする形で使用します。
torchtextのバージョンは0.8.1です。

python

import os import MeCab from torchtext.data import Dataset, Field, Example from torchtext.vocab import Vectors tagger = MeCab.Tagger() tagger.parse('') #mecab-python3の不具合に対応 def tokenize(text): """MeCabを用いて単語を分割して返す""" node = tagger.parseToNode(text) ret = [] while node: if node.stat not in (2, 3): #文頭と文末を表すトークンは無視する ret.append(node.surface) node = node.text return ret def load_data(data_dir, emb_file): """livedoorニュースコーパスと意味ベクトルをロードする""" # torchtextを用いてデータセットの各アイテムの持つフォールドを定義 # アイテムはtextとlabelの2つのフィールドを持つ text_field = Field(sequential = True, tokenize = tokenize) label_field = Field(sequential=False, unk_token=None) fields = [('text', text_field),('label', label_field)] exsamples = [] #データセット内のディレクトリを順に処理する for entry in os.scandir(data_dir): if entry.is_file(): continue #ディレクトリ名をラベル名として用いる label = entry.name #ディレクトリ内の記事を順に読み込む for doc_file in os.scandir(entry.path): if doc_file.name.startswith(label): with open(doc_file.path) as f: # 1-2行目はURLと日付のため3行目以降を用いる text = '\n'.join(f.read().splitlines()[2:]) # アイテム(torchtextのExsampleインスタンス)を作成 exsample = Example.fromlist([text, label], fields) exsamples.append(exsample) #アイテムのリストとフィールドの定義を用いてDatasetインスタンスを作成 data = Dataset(exsamples, fields) # 訓練、テスト用のデータセットを70%、30%の分割比率で作成する (train_data, test_data) = data.split(0.7) #フィールドごとに辞書を作成する text_field.build_vocab(train_data) label_field.build_vocab(data) #学習した意味ベクトルを読み込む vectors = Vectors(emb_file) text_field.vocab.load_vectors(vectors) return(train_data, test_data, text_field, label_field)

以下の部分にエラーがあります。

python

from torchtext.data import Dataset, Field, Exsample

どうやら、Exsampleというメソッドが存在しないようです。
torchtext.dataモジュールやExsampleメソッドについて個人的に調べてみましたが、思うような解決法を探し出すことができませんでした。

素人質問で恐縮ですが、「Exsampleメソッドが存在しないならば、どのメソッドを使えばいいか」、「そのメソッドを使用した場合、コードをどのように変更すればいいか」をご教授頂ければと存じます。
皆様お忙しいと存じますので、参考になると思われるホームページのURLを送っていただく形でも、嬉しく存じます。

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

can110

2022/06/22 02:57

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

2022/06/22 03:23

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

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