テキストファイルを使ってLDAモデルを作成しテキストファイルのカテゴリをしたいと考えています。
「学習データのカテゴリ番号」リストと
LDAモデル作成によって得られた「各トピック番号が最大トピックだったファイル番号の一覧」リストを使って
「各トピック番号がそれぞれどのカテゴリを表しているのか」を決定したいと考えています。
まず、関数に用いるデータです。
python
1#学習データのカテゴリ番号 2category_list = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9] 3 4#学習データの最大トピック 5topic_result = [[11, 13, 26, 34, 37, 41, 46], 6 [7, 30], 7 [61], 8 [8, 10, 19, 27, 39, 48, 55, 62, 71], 9 [3, 14, 17, 24, 32, 51, 56, 60, 70], 10 [1, 9, 23, 25, 33, 38, 43, 44, 49, 57, 63], 11 [2, 6, 12, 21, 31, 32, 35, 50, 52, 58, 65], 12 [5, 16, 22, 42, 45, 59, 66, 67], 13 [18, 29, 53, 68], 14 [0, 4, 15, 20, 28, 36, 40, 47, 54, 64, 69]] 15 16#入力データのトピック(最大3つ) 17top3 = [9, 6, 4]
このtop3[]場合、トピック9,6,4についてcategory_listとtopic_listを用いて
入力データのカテゴリを推定します。
以下にカテゴリの推定に用いる関数を記します。
python
1def decide_category(category_list,topic_result,top3): 2 test_data_category = [] 3 for i in top3: 4 test_topic_list = topic_result[i] 5 a = [] 6 for j in test_topic_list: 7 a[category_list[j]] += 1 8 test_data_category.append(max(a)) 9 return test_data_category
イメージとしては学習データの各ファイルがそれぞれ
「自分の最大トピックの番号」に1票投票し、
トピック番号毎に最も票数が多かったトピック番号をそのトピックのカテゴリとする
といったところです。
分かりづらかったら申し訳ありません。
この関数で出てしまったエラーは以下の通りです。
a[category_list[j]] += 1 IndexError: list index out of range
a[] += 1という表現がまずかったということなのですが、解決策を教えていただきたいです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。