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

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

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

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

受付中

fastTextで文書分類、同じラベルに分類される

player456
player456

総合スコア0

Python

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

1回答

0評価

1クリップ

328閲覧

投稿2021/12/27 12:25

前提・実現したいこと

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を使用してます

making_data.py #csv読み込み→分かち書き→txt保存 import sys import MeCab import csv #csv読み込み csv_file = open("train_data.csv", "r", errors="", newline="" ) csv_data = csv.reader(csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True) header = next(csv_data) mecab = MeCab.Tagger ("-Owakati") #分かち書き設定 list_row = [] #分かち書き結果を保存 path_w = 'train_data.txt' #分かち書き済み学習用データ保存ファイル名 #CSVファイルの訓練データを分かち書き #訓練データを名詞のみに絞る for row in csv_data: meishi_count = 0 meishi_list=[] node = mecab.parseToNode(row[1]) while node: if node.feature.split(",")[0] == "名詞": meishi_count = meishi_count + 1 meishi_list.append(node.surface) else:pass node = node.next res = ' '.join(map(str, meishi_list)) list_row.append(('__label__'+row[0]+' '+res).replace("\n","",3)) f = open(path_w, 'w') for x in list_row: f.write(str(x) + "\n") f.close() learning_data.py import fasttext as ft import pandas as pd #model作成 model = ft.train_supervised("train_data.txt", label_prefix='__label__',epoch=250, loss="hs") model.save_model("model.bin") #指定した文がどこのラベルに当てはまるか result = model.predict('保健師、助産師、看護師として働くためには国家試験を、准看護師は都道府県の試験を受けて合格し、免許を得ることが必要です。') print(result[0][0] + ':' + str(result[1][0])) result = model.predict('eスポーツとは、エレクトロニックスポーツの略でPCゲームやコンシューマーゲーム、スマホゲームなどを用いて勝敗を争う競技です。') print(result[0][0] + ':' + str(result[1][0])) result = model.predict('会話が続かなくて変な空気が流れたり、無理に話をしようとして余計に疲れたことがある人も多いのではないでしょうか。') print(result[0][0] + ':' + str(result[1][0]))

試したこと

epoch数を変更しましたが結果は変わりませんでした
訓練データのノイズを取り除いたり、名詞のみにしましたが同じラベルに分類されました。

補足情報(FW/ツールのバージョンなど)

訓練データは公開できません。
プログラムが初心者でわかりづらくてすみません。

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Python

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