読者です 読者をやめる 読者になる 読者になる

おいしいとこはすこしだけ

文系出身SE見習いの備忘録。

Doc2VecでMTGの類似カードを探すソフトができた

C# Python プログラミング マジック・ザ・ギャザリング 機械学習 自然言語処理

文系出身SE見習いの北白川キリコです。

 

Doc2VecでMTGの類似カードを探してみた - おいしいとこはすこしだけ

Doc2VecでMTGの類似カードをかなり探せるようになった - おいしいとこはすこしだけ

連続で記事にしてましたが、ついにフリーソフトの形式にできたので公開します。

 

ソフト概要

MTGのカード名を入力すると、それに似たカードを探してきてくれるソフトです。

機械学習でカードの特徴を見つけることで、似たカードかどうかを判断しています。

 

Similar Gathererという名前を付けました。

似たカードを集めるというのと、マジック・ザ・ギャザリングに引っ掛けて、あと語呂を良くしたみたいなネーミングで……説明するの恥ずかしいですね……

 

ダウンロード

下記DropBoxからどうぞ。

www.dropbox.com

※動作確認済みですが、未知のバグが存在する可能性があります。自己責任のもとで試してください。このソフトを使用したことにより発生したいかなる問題・損害にも、当方は一切の責任を負いません。

 

画面仕様・使い方

f:id:kitashirakawakiriko:20160827133530p:plain

上のテキストボックスにカードの名前を入力してボタンをポチーするだけです。

 

類似度計算の仕組み

カードテキストを単語ごとに分割し、Word2Vecという機械学習ニューラルネットワーク)の手法を使って単語を200次元のベクトルに変換しています。と同時に、一枚のカードのテキスト全体にもベクトルを割り振っています。まとめてDoc2Vecという手法になるそうです。

ちなみに、Doc2Vecの中でも、文章全体(カード全体)の特徴を正しく捉えやすいPV-DBOWという手法を採用しています。

Doc2Vecの実行は、Pythonライブラリgensimのモジュールで行なっています。

 

このDoc2Vecで生成されたベクトルを一旦テキストで書き出し、それをC#.NETで読み込ませて、ベクトル同士のコサイン類似度を計算→上位10件を表示しています。

zipファイル内に入っているcard_vecs.d2vがテキスト化されたベクトルデータです。

 

その他

C#.NETによるGUI側の開発環境はVisual C#。対応環境はWindows Vista以降とさせていただきます。

PythonによるDoc2Vec実行はSpyder(Python2.7.10)で行いました。

 

カードデータは、現状イニストラードを覆う影まで対応しています。今後も更新予定です。

 

 

よろしければ是非触ってみてください!