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

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

新規登録して質問してみよう
ただいま回答率
85.50%
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1109閲覧

MLP: Python によるスクレイピング&機械学習 6-4

y.okajima

総合スコア12

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/11/29 13:44

Python によるスクレイピング&機械学習[開発テクニック]に関する質問です。
6-4 MLPでテキスト分類してみよう の「file: mlp2-seq」の実装が以下のとおりうまくいきません。
レンジを超えた要素数にアクセスしようとしているからだと思うのですが、
書籍の写経を行っており、間違いの要素が見当たりません。
解決策orヒントご教示いただけますと幸いです。

python

1 40 ids=text_to_ids(text) 2 41 for wid in ids: 3---> 42 cnt[wid] += 1 4 43 return cnt 5 44 6 7IndexError: list index out of range 8

python

1import os,glob,json 2 3root_dir="./newstext/text" 4dic_file=root_dir+"/word-dic.json" 5data_file=root_dir+"/data.json" 6data_file_min=root_dir+"/data-mini.json" 7 8word_dic={"_MAX":0} 9def text_to_ids(text): 10 text=text.strip() 11 words=text.split(" ") 12 result=[] 13 14 for n in words: 15 n = n.strip() 16 if n == "":continue 17 if not n in word_dic: 18 wid=word_dic[n]=word_dic["_MAX"] 19 word_dic["_MAX"]+=1 20 print(wid,n) 21 else: 22 wid=word_dic[n] 23 result.append(wid) 24 return result 25 26def file_to_ids(fname): 27 with open(fname,"r",encoding="utf-8") as f: 28 text = f.read() 29 return text_to_ids(text) 30 31def register_dic(): 32 files=glob.glob(root_dir+"/*/*.wakati",recursive=True) 33 for i in files: 34 file_to_ids(i) 35 36def count_file_freq(fname): 37 cnt=[0 for n in range(word_dic["_MAX"])] 38 with open(fname,"r",encoding="utf-8") as f: 39 text=f.read().strip() 40 ids=text_to_ids(text) 41 for wid in ids: 42 cnt[wid] += 1 43 return cnt 44 45def count_freq(limit=0): 46 X=[] 47 Y=[] 48 max_words=word_dic["_MAX"] 49 cat_names=[] 50 for cat in os.listdir(root_dir): 51 cat_dir=root_dir+"/"+cat 52 if not os.path.isdir(cat_dir):continue 53 cat_idx=len(cat_names) 54 cat_names.append(cat) 55 files=glob.glob(cat_dir+"/*.wakati") 56 i=0 57 for path in files: 58 print(path) 59 cnt=count_file_freq(path) 60 X.append(cnt) 61 Y.append(cat_idx) 62 if limit>0: 63 if i >limit: break 64 i += 1 65 return X,Y 66 67if os.path.exists(dic_file): 68 word_dic=json.load(open(dic_file)) 69else: 70 register_dic() 71 json.dump(word_dic,open(dic_file,"w")) 72 73X,Y=count_freq(20) 74json.dump({"X":X,"Y":Y},open(data_file_min,"w")) 75X,Y=count_freq() 76json.dump({"X":X,"Y":Y},open(data_file,"w")) 77print("ok")

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問