DeepLearningの力を借りて、マイクラのプレイ中、ゲームに関係のある文章を読み上げてくれるソフトを作った話。
1つの記事にまとめるのが困難なため、いくつかの記事に分けます。
具体的な内容について書いた記事は待ってください。
この記事では、全体の流れを説明します。
動機
1人でマインクラフトをしていたある日......
「自然言語処理 × DeepLearning で面白いものはないか」
「1人でゲームするのも飽きてきたな」
「そうだ、ゲーム中AIが話せば、ボッチマイクラも寂しくないぞ!!」
やったこと
マイクラなら、ゲーム内の情報が取れる。
ゲーム内にいるモンスター等に関連した文章を持ってくれば良さそう。
データを集める
- とりあえず、スクレイピング ← 微妙な結果に
- ニコニココメントデータセット ← 量十分、目的にも合ってる
DeepLearningする
- 脳死でBERTをぶん回す(素晴らしいライブラリ)。
- いい感じに、文章のベクトル表現が得られる。
- ゲーム内オブジェクトの名前のベクトルと、集めたテキストデータのベクトルでcos類似度を計算。
- ゲーム内オブジェクトに関連してそうな文を取り出す。
- おまけにテキスト生成も試す。
マイクラmodで動かす
- マイクラmodで近くにいるオブジェクトの名前を取得。
- 取得した名前を、テキストを検索・生成するクラスに渡す。
- 生成にはdeep learning を使いたい。socket 通信で python に情報を渡す。(mcpiを改造)
分かったこと
文脈なんてなくても割と面白い。
頓珍漢な文章も、ツッコミしたくなるので面白い。
面白いかどうかに、文章や文脈の正しさは、必須ではない。
さいごに
ヤジが飛んでくるマインクラフトでは、極力人力でデータをいじらないようにしました。
これは、対応してほしいオブジェクトを後から増やしやすいようにするためです。
もっというと、ネット上のテキストが豊富で、modが作成できるゲームであれば、マイクラでなくても出来ます。
ヤジが飛んでくるマインクラフトが、自然言語処理の気軽な応用例の1つになれば良いなと思います。
みんなも、自然言語処理で面白いソフト作ろうぜ!!