お遊びアプリとして
BertとWord2vecを組み合わせて謎かけWEBサイトを作ってみた。
謎かけって何
以下のようなもの
お題:野球
「野球」とかけて「システム」と説く
その心は!どちらも「捕手/保守(ホシュ)」がつきものです。
謎かけAIでやるには
- ×ねずっちの回答を学習させるにはデータ量が足りない。
- 〇既存の学習済みモデルを使う。
使った技術は
- Bert(2018年:Googleの自然言語処理モデル)
文章としての正しさを特定 - Word2Vec(単語をベクトル化し類似度を推測)
単語の類似度を特定
アルゴリズム
XXXにYYYは必要です
XXXはYYYが課題です
2.定型文のXXX(例:利根川)の部分にお題をいれる。YYYをマスクする。
利根川に[MASK]は必要です
3.上記をBERTを使って、複数の[MASK]の候補リスト(100個ほど)する。
4.上記だけだと、お題と無関係な単語も出てきやすいので、(「僕」とか、「それ」が)
word2vecを使って、候補リストで、お題と関係性の強い単語に
絞り込む
(今回は用水(ようすい)が候補の一つ)
5.上記で絞り込んだ候補リストのうち、同音異義語のDB に該当する単語があるか
求めて、同音異義語の候補リストを求める(今回は羊水(ようすい)が候補の一つ)。
6.候補リストを定型文のYYYにおいてXXXをマスクする。
[MASK]に羊水は必要です
7.上記をさらにBERTを使って、複数の[MASK]の候補リストを求める(100個ほど)。
8.上記だけだと、候補と無関係な単語も出てきやすいので、
word2vec.most_similarを使って、候補と関係性の強い単語に
絞り込む(この場合:出産)
9.上記で複数候補がでてくるので,一定の判断基準で並べ変えて出てきたものを解答する。(BertのスコアとWord2Vecのスコアでソート、多少ランダム要素を入れています。)
同音異義語のDB
こちらのVocabulary Database for Reading Japanese (VDRJ) Ver. 1.1
重要度順語彙データベース (Top 60894) 重要度順位 00001-60894 (42MB)
から作成
http://tatsuma2010.web.fc2.com/VDRJ_Ver1_1_Research_Top60894.xlsx
感謝です。
今後の課題
- 時事問題に弱い。BERTや同音異義語の辞書を改める。
- いくつかの候補の中から、何が最適解かを判断するのが難しい。