前提・実現したいこと
fasttextを用いて文書分類をおこなっております。
訓練データは2,714個、ラベルの数は132個です。
このデータを学習させて指定した文を適したラベルに分類されるようにしたいです。
発生している問題・エラーメッセージ
全く異なる文を指定しても同じラベル同じ精度が出てしまいます Read 0M words Number of words: 2655 Number of labels: 132 Progress: 100.0% words/sec/thread: 184768 lr: 0.000000 avg.loss: 0.689235 ETA: 0h 0m 0s __label__100:0.23908661305904388 __label__100:0.23908661305904388 __label__100:0.23908661305904388
該当のソースコード
pythonを使用してます
1 2making_data.py 3 4#csv読み込み→分かち書き→txt保存 5import sys 6import MeCab 7import csv 8 9#csv読み込み 10csv_file = open("train_data.csv", "r", errors="", newline="" ) 11csv_data = csv.reader(csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True) 12header = next(csv_data) 13 14mecab = MeCab.Tagger ("-Owakati") #分かち書き設定 15list_row = [] #分かち書き結果を保存 16path_w = 'train_data.txt' #分かち書き済み学習用データ保存ファイル名 17 18#CSVファイルの訓練データを分かち書き 19#訓練データを名詞のみに絞る 20for row in csv_data: 21 meishi_count = 0 22 meishi_list=[] 23 node = mecab.parseToNode(row[1]) 24 while node: 25 if node.feature.split(",")[0] == "名詞": 26 meishi_count = meishi_count + 1 27 meishi_list.append(node.surface) 28 else:pass 29 node = node.next 30 res = ' '.join(map(str, meishi_list)) 31 list_row.append(('__label__'+row[0]+' '+res).replace("\n","",3)) 32 33f = open(path_w, 'w') 34for x in list_row: 35 f.write(str(x) + "\n") 36f.close() 37 38 39learning_data.py 40 41import fasttext as ft 42import pandas as pd 43 44#model作成 45model = ft.train_supervised("train_data.txt", label_prefix='__label__',epoch=250, loss="hs") 46model.save_model("model.bin") 47 48#指定した文がどこのラベルに当てはまるか 49result = model.predict('保健師、助産師、看護師として働くためには国家試験を、准看護師は都道府県の試験を受けて合格し、免許を得ることが必要です。') 50print(result[0][0] + ':' + str(result[1][0])) 51result = model.predict('eスポーツとは、エレクトロニックスポーツの略でPCゲームやコンシューマーゲーム、スマホゲームなどを用いて勝敗を争う競技です。') 52print(result[0][0] + ':' + str(result[1][0])) 53result = model.predict('会話が続かなくて変な空気が流れたり、無理に話をしようとして余計に疲れたことがある人も多いのではないでしょうか。') 54print(result[0][0] + ':' + str(result[1][0]))
試したこと
epoch数を変更しましたが結果は変わりませんでした
訓練データのノイズを取り除いたり、名詞のみにしましたが同じラベルに分類されました。
補足情報(FW/ツールのバージョンなど)
訓練データは公開できません。
プログラムが初心者でわかりづらくてすみません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。