【自然言語AI】日本語bert先生にMASKを使った質問で恋愛相談してみた!

写真は、ポートフォリオ撮影の未来様

bertは、Googleの検索で使われるなど、自然言語処理の分野ではよく使われています。

文章の一部をMASKする(隠す)ことにより、MASKした単語を文章の前後関係から予測することができます。

では、MASKを使って恋愛に関する問題を解決できるのか?

検証してみました。

bertとは

bertとは、「Bidirectional Encoder Representations from Transformers 」の略で、

日本語に置き換えると「Transformerによる双方向のエンコード表現」と訳されます。

現在、自然言語の中では最も予測精度が高いとされています。

bertが使われる前は、RNNが主流だったのですが、長い文章の記憶が苦手で、短めの文章しか処理できないという問題がありました。

bertが出てきたことにより、RNNの問題点を解決することができ、「文脈を読むことが可能になった」と言われています。

bertで予測させる準備をする

bertで予測させるための準備、および手順は以下のとおりです。

  1. mecabなどの形態素ライブラリーをインストールする
  2. pythonからmecabを呼び出せるようにmecab-python3をインストールする
  3. fugashi,ipadicのインストール
  4. huggingfaceよりtransformersのインストール
  5. 日本語の事前学習モデルを読み込む
  6. 入力文字列に対して、文の先頭に[CLS]、予測させたい単語を[MASK]、文章の区切りに[SEP]を設定する
  7. tokenizerを使って文字列をベクトル化する
  8. 学習済みモデルを使って予測(Predict)
  9. ベクトル化されたものを元の文字列に戻す
  10. 予測された単語を得ることが出来る

詳しくは、以下のブログを参考にしてください。

huggingfaceのtransformersを使うことにより、日本語のbertを比較的簡単に使うことが出来るようになりました! 今回は、colaboratoryにて、mecabなどの形態素ライブラリー、transformersのインストール方法例も記載しているので、colaboratoryにてすぐ使うことができます。

ソースコードは「実際に使ったソースコード」のところで公開しました。

事前学習モデル(日本語Wikipedia)について

事前学習モデル(日本語Wikipedia)は、東北大学の研究室で公開している訓練済み日本語BERTモデルを使用しました。

Pretrained Japanese BERT models released / 日本語 BERT モデル公開

本題!bert先生に「ロリータファッションの女性が気になった」という想定で相談してみる!

bert先生に「ロリータファッションの女性が気になった」という設定で恋愛相談させてみました。

入力文字列を以下のようにします。

「俺は、異業種交流会でロリータファッションの女性を見つけた。気になってしまった。だから、俺は※をしてみたんだ」

質問方法としては、予測させたい単語(今回は9つとした)をMASKする方法で質問を実現しました。具体的には、「※」のところに入る単語をMASKに置き換えて予測させます。

その結果、「※」のところには以下のような結果が出ました。

  1. それ
  2. 仕事
  3. 女装
  4. モデル
  5. アルバイト
  6. 化粧

文章に当てはめると以下のようになりました。

9つの回答


  1. だから、俺は何をしてみたんだ。
  2. だから、俺はそれをしてみたんだ。
  3. だから、俺は仕事をしてみたんだ。
  4. だから、俺は女装をしてみたんだ。
  5. だから、俺は恋をしてみたんだ。
  6. だから、俺はモデルをしてみたんだ。
  7. だから、俺はアルバイトをしてみたんだ。
  8. だから、俺は話をしてみたんだ。
  9. だから、俺は化粧をしてみたんだ。

出力結果の考察(というか感想)

「何」「それ」は、文章として成立しているか疑問という感想。

「女装」「化粧」が出てきたのは、実際に「女装」「化粧」してみて、まずは相手のことを理解するべきということか(←絶対に違う!)

「仕事」「アルバイト」が出てきた理由は、おそらく、恋愛云々の前にお金を稼いでないと、そもそも女性に相手にされないという意味でしょう。

「話」は、まずは相手と話をしないと恋愛が始まらないという意味と解釈。

予測結果の深堀り

なんで「女装」が候補に出てくるのだろう?

「女装」という予測結果が出てきた理由を深ぼってみます。

事前学習モデルは、「日本語Wikipedia」を使って学習されています。

ということで、事前学習元である日本語Wikipediaで「ロリータファッション」を調べてみた。

※なぜ「ロリータファッション」かというと、文章の中で特徴的な言葉になるから。

「ロリータファッション」で調べると、wikiの中で「女装」「モデル」が何度か使われていました。

「女装」が使われているケース4回

また、男性にもロリータ・ファッションの愛好者は存在しており、代表的な人物がMANAや嶽本野ばらである。男性のロリータ・ファッションの愛好者の場合、完全な女装で、なおかつコスプレではなくファッションとしてロリータを楽しんでいる場合と…

また、「人造美女は可能か?」のシンポジウム[98]で宝野アリカはメイド服で女装[99]したパネラーの1人である慶応義塾大学文学部教授の荻野アンナに…

さらに「モデル」が使われているケースも調べてみます。

しかし、服装自体は、ロココの時代以外の装飾が施されていることが多い(甘ロリやクラロリといったロリータ・ファッションのスタイルは、ヴィクトリア朝時代の貴族の子供服がモデル(原型)になっている)…

青木美沙子

モデル。ファッション雑誌KERAなどでロリータ・ファッションモデルとして活躍…

出典:日本語Wikipedia・「ロリータファッション」

上記の結果から、「ロリータファッション」に近い単語(位置的に近い)が、予測結果として出力される傾向があることがわかりました。

より精度が高い恋愛相談をbert先生にやらせたいなら

事前学習を恋愛小説、恋愛指南書にしたら、より精度の高い回答が来るかもしれません。

また、青空文庫の本を事前学習させたら、文豪の考える恋愛相談が得られるかもしれません(文豪が生きていた時代に「ロリータファッション」があったのかは不明ですが)。

実際に使ったソースコード

実際に使ったコードは以下の通りです。

今回は、ファインチューニングなしでトレーニング済みのモデルを使用するため、Mac BookなどノートPCで十分に動かすことができます。

当然のことながら、GPUも必要ないです。

まとめ

以上、bertを使った恋愛相談の例でした!

スポンサーリンク
PR




PR




シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
PR