まとめ
- ユースケースがハマるならautoTrainはかなり便利
- 文章要約タスクとして、タイトル取得問題が解ける
- 正解率 93.81% (515/549)
やりたいこと
歌ってみた動画のタイトルと説明文からタイトルだけを抜き出したい
例: https://www.youtube.com/watch?v=X4IvjtfivNk
入力: ドクター=ファンクビート/nyanyannya feat.レオス・ヴィンセント\nvo.レオス・ヴィンセント...(以下略
出力: ドクター=ファンクビート
今までの流れ
- 正規表現で頑張る編: https://qiita.com/miyatsuki/items/cb0ce6ae0e48cf42b1c8
- OpenAI(GPT-3)編: https://qiita.com/miyatsuki/items/6429340dae118392f117
やったこと
HuggingFace autoTrainのsummarization(文章要約)タスクとして、楽曲名取得タスクを解く
HuggingFace autoTrain
HuggingFaceが提供しているAutoMLサービス
自然言語処理、画像認識、テーブルデータ処理に対応
学習データと元となるモデルを指定することで学習データに合わせたfine-tuningを実施してくれる
(デフォルトだと元のモデルも自動で選んでくれる)
具体的な使い方はこちらの記事などを参考にしてください
https://qiita.com/relu/items/129de82967d99ee4c398
学習データの準備
以下のようなjsonlファイルを用意する
正解データ(今回はsong_title)と入力データ(今回はtext)のカラムを用意してデータを入れておく
カラム名は任意に設定可能で、学習に不要なカラムが入っていても良い
{"video_id": "kZ2dYR9ustU", "song_title": "トンデモワンダーズ", "text": "『トンデモワンダーズ』ハモリに合わせて歌って? #shorts..."}
{"video_id": "yU5_w__2FBo", "song_title": "secret base〜君がくれたもの〜", "text": "【ロボ子さん】secret base〜君がくれたもの〜【VTuberコンピレーションアルバム「IMAGINATION vol.1」】\nみんなが幸せな気持ちになってくれるように..."}
{"video_id": "6liKX4gI-68", "song_title": "ヴァンパイア", "text": "【ハロウィン2021】ヴァンパイア/DECO*27 踊ってみた♦歌ってみた【相羽ういは/にじさんじ】\n吸っち..."}
なお、trainとvalidationのsplitは自動で実行してくれるので、分けて準備する必要はない
(個別に指定することも可能)
学習後モデルの利用
画像のように、普通のhuggingface モデルとして利用できる
精度
正解率 93.81% (515/549)
推定に成功した例
推定に失敗した例
コスト
学習
- 通常アカウント: 3000行まで無料
- Proアカウント: 10000行まで無料
推定
- 通常のhuggingfaceモデルの利用料金に準拠(なので、基本的に無料)
- inferenceAPIも利用可能
所感
- コスト・精度ともに、一旦満足できる水準
- ただ、ハロ/ハワユは相変わらず認識できず
- 既存のtokenizerが利用されるので、全角->半角変換が勝手に行われる問題がある
- 次は他の情報とまとめて取得できないかを検討していきたい
- 例: 歌い手の名前抽出、カバー元のアーティスト名の抽出 など