今回は前回実施した歌手分類の精度向上を目的にBertによる歌手分類を実施します。
※このブログの内容は個人の意見・見解となります。また、記事の内容の正確性については保証いたしません。本ブログの目的は分析結果をアウトプットしていくことによる自身のデータ分析力向上を主としています。誤りや違うアプローチの方が良いという事も多分にあると思います。後学のため、「もっとこうしたらいい」や誤りを見つけた場合はコメント欄などでお知らせいただけると有難いです。
○今回使用したコード
github : https://github.com/ryosuke-yakura/lyrics_classification
○Bertとは?
Bidirectional Encoder Representations from Transformer(Transformerによる双方向のエンコード表現)
RNNなどではそれぞれの層の中で文章の前方から順々に処理が行われ、処理を経るにつれ前方にあるトークンの情報を失っていましたが、Bertではトークンを処理する際に、他のトークンの情報を直接参照し、トークンの情報にどの程度注意を払うかを決めることで文脈に応じた処理が可能となっています。
現在の自然言語処理コンペなどではほとんどがBert、Bertの派生系であるroberta、debertaが使用されることが多いほど他のモデルと比べて精度が高いです。
では実際にBertを使ってみましょう。
Bertでは基本的に事前学習モデルを使用します。
事前学習モデルとは企業などが大量のデータを学習し作成したモデルになります。
この事前学習モデルを使用することで大量の学習を行わなくても精度の高い予測が可能となります。
○まとめ
今回は前回lightgbmを使用した歌手分類をBertで実施してみました。自然言語処理にはBertが有効という頭があったため、精度が上がることを期待していましたが結果としては精度は下がりました。一番の要因として考えているのは今回、文頭から512文字をトークナイザし使用しているため、歌詞のような文字数の長いものに対しては512文字の取得方法を検討する必要があると感じました。(サビを持ってくる、Aメロ、Bメロ、サビなどでデータを分割しても良いかも?)データ数が少なく、かつ文章が長い場合は文章をベクトル化し、lightgbmを使用するという手法も念頭に置いて色々と試してみることが重要と感じました。
○最後に
このような形で分析した結果や試してみたことを週に1回(目標)ペースで掲載しています。データ分析のキャリアを歩み始めたのですが、データの解釈、分析力が低いと感じ今回、このような形でアウトプットをしていくことにしたため、ぜひ、アドバイスやご指摘をいただけると幸いです。
○参考サイト、書籍
書籍 BERTによる自然言語処理入門:Transformersを使った実践プログラミング
サイト Hugging Face
1件のコメント