bertは、Googleの検索で使われるなど、自然言語処理の分野ではよく使われています。
文章の一部をMASKする(隠す)ことにより、MASKした単語を文章の前後関係から予測することができます。
では、MASKを使って恋愛に関する問題を解決できるのか?検証してみました。
bertとは
bertとは、「Bidirectional Encoder Representations from Transformers 」の略で、
日本語に置き換えると「Transformerによる双方向のエンコード表現」と訳されます。
現在、自然言語の中では最も予測精度が高いとされています。
bertが使われる前は、RNNが主流だったのですが、長い文章の記憶が苦手で、短めの文章しか処理できないという問題がありました。
bertが出てきたことにより、RNNの問題点を解決することができ、「文脈を読むことが可能になった」と言われています。
bertで予測させる準備をする
bertで予測させるための準備、および手順は以下のとおりです。
- mecabなどの形態素ライブラリーをインストールする
- pythonからmecabを呼び出せるようにmecab-python3をインストールする
- fugashi,ipadicのインストール
- huggingfaceよりtransformersのインストール
- 日本語の事前学習モデルを読み込む
- 入力文字列に対して、文の先頭に[CLS]、予測させたい単語を[MASK]、文章の区切りに[SEP]を設定する
- tokenizerを使って文字列をベクトル化する
- 学習済みモデルを使って予測(Predict)
- ベクトル化されたものを元の文字列に戻す
- 予測された単語を得ることが出来る
詳しくは、以下のブログを参考にしてください。
huggingfaceのtransformersが日本語の事前学習モデルを追加してくれました。 そのおかげで日本語のbertを簡単に試す出来るようになりました。 今回は、colaboratory上で日本語のbertを使って、元の[…]
ソースコードは「実際に使ったソースコード」のところで公開しました。
事前学習モデル(日本語Wikipedia)について
事前学習モデル(日本語Wikipedia)は、東北大学の研究室で公開している訓練済み日本語BERTモデルを使用しました。
Pretrained Japanese BERT models released / 日本語 BERT モデル公開
本題!bert先生に「ロリータファッションの女性が気になった」という想定で相談してみる!
bert先生に「ロリータファッションの女性が気になった」という設定で恋愛相談させてみました。
入力文字列を以下のようにします。
「俺は、異業種交流会でロリータファッションの女性を見つけた。気になってしまった。だから、俺は※をしてみたんだ」
質問方法としては、予測させたい単語(今回は9つとした)をMASKする方法で質問を実現しました。具体的には、「※」のところに入る単語をMASKに置き換えて予測させます。
その結果、「※」のところには以下のような結果が出ました。
- 何
- それ
- 仕事
- 女装
- 恋
- モデル
- アルバイト
- 話
- 化粧
文章に当てはめると以下のようになりました。
9つの回答
- だから、俺は何をしてみたんだ。
- だから、俺はそれをしてみたんだ。
- だから、俺は仕事をしてみたんだ。
- だから、俺は女装をしてみたんだ。
- だから、俺は恋をしてみたんだ。
- だから、俺はモデルをしてみたんだ。
- だから、俺はアルバイトをしてみたんだ。
- だから、俺は話をしてみたんだ。
- だから、俺は化粧をしてみたんだ。
出力結果の考察(というか感想)
「何」「それ」は、文章として成立しているか疑問という感想。
「女装」「化粧」が出てきたのは、実際に「女装」「化粧」してみて、まずは相手のことを理解するべきということか(←絶対に違う!)
「仕事」「アルバイト」が出てきた理由は、おそらく、恋愛云々の前にお金を稼いでないと、そもそも女性に相手にされないという意味でしょう。
「話」は、まずは相手と話をしないと恋愛が始まらないという意味と解釈。
予測結果の深堀り
なんで「女装」が候補に出てくるのだろう?
「女装」という予測結果が出てきた理由を深ぼってみます。
事前学習モデルは、「日本語Wikipedia」を使って学習されています。
ということで、事前学習元である日本語Wikipediaで「ロリータファッション」を調べてみた。
※なぜ「ロリータファッション」かというと、文章の中で特徴的な言葉になるから。
「ロリータファッション」で調べると、wikiの中で「女装」「モデル」が何度か使われていました。
「女装」が使われているケース4回
また、男性にもロリータ・ファッションの愛好者は存在しており、代表的な人物がMANAや嶽本野ばらである。男性のロリータ・ファッションの愛好者の場合、完全な女装で、なおかつコスプレではなくファッションとしてロリータを楽しんでいる場合と…
また、「人造美女は可能か?」のシンポジウム[98]で宝野アリカはメイド服で女装[99]したパネラーの1人である慶応義塾大学文学部教授の荻野アンナに…
さらに「モデル」が使われているケースも調べてみます。
しかし、服装自体は、ロココの時代以外の装飾が施されていることが多い(甘ロリやクラロリといったロリータ・ファッションのスタイルは、ヴィクトリア朝時代の貴族の子供服がモデル(原型)になっている)…
青木美沙子
モデル。ファッション雑誌KERAなどでロリータ・ファッションモデルとして活躍…
上記の結果から、「ロリータファッション」に近い単語(位置的に近い)が、予測結果として出力される傾向があることがわかりました。
より精度が高い恋愛相談をbert先生にやらせたいなら
事前学習を恋愛小説、恋愛指南書にしたら、より精度の高い回答が来るかもしれません。
また、青空文庫の本を事前学習させたら、文豪の考える恋愛相談が得られるかもしれません(文豪が生きていた時代に「ロリータファッション」があったのかは不明ですが)。
実際に使ったソースコード
実際に使ったコードは以下の通りです。
今回は、ファインチューニングなしでトレーニング済みのモデルを使用するため、Mac BookなどノートPCで十分に動かすことができます。
当然のことながら、GPUも必要ないです。
まとめ
以上、bertを使った恋愛相談の例でした!
\IT未経験者からのサポートあり!転職サービス3選!!/
サービス名 | |||
---|---|---|---|
未経験 | 未経験OK | 未経験の転職専用 | 経験者向け |
公開の求人数 | ITエンジニア全体で1万件以上 ITエンジニア未経験で600件以上 |
未公開 | 5,000件以上 |
利用対象 | 全職種 | IT特化 | IT特化 |
特徴 | ✓誰もが知る転職サービス ✓経歴を登録しておくとオファーが来る |
✓企業担当者と条件交渉 ✓スキルの身につく企業を紹介 |
✓IT専門のエージェントが対応 ✓転職成功すると年収200万円以上の大幅アップがある |
転職サポート内容 |
|
|
|
公式サイト | リクナビネクスト | テックゲート | レバテックキャリア |