Skip to content

Word2Vec を用いた加減算単語当てゲーム

Notifications You must be signed in to change notification settings

takatea/word2vec_game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Word2Vec を用いた加減算単語当てゲーム

大学院の自然言語処理に関する講義の最終課題で作成したオリジナルアプリケーションです. 初めて作成したWebアプリケーションなのでいろいろ修正ポイントなどがありますが,現状動くものをアップロードしています.

技術要素

  • フロント:HTML,CSS(+ Bootstrap4),Javascript(+ jQuery)
  • サーバサイド:Python3 (+ Flask)
  • Word2Vecの学習 : Gensim

実行環境

ローカル

実行に必要なPythonのモジュールなどはrequirements.txtにまとめていますので,参照していただければ幸いです.モジュールなどのインストールが終わった方は実行手順に従って実行してください.

仮想コンテナ(Docker)

Dockerコンテナ上で実行できるようにDockerfileとdocker-compose.ymlも同時にアップロードしています. dockerやdocker-composeのインストールに関してはGet Dockerを参照ください.MacOSの場合はDocker Desktop on Macを入れた段階でdocker-composeも同時に入ります.Linuxの方は追加でインストールが必要かと思いますので,Install Docker Composeを参考にインストールしてください.

※ docker-composeを使わずにDockerfileをビルドして出来たイメージを実行していただいても構いません.その場合,実行時にvolume($PWD/app:/usr/src/app)の指定とポートの指定(自ポート:8888)を忘れずにしてください.

word2vec_gameディレクトリ内で以下のコマンドを叩いていただけるとコンテナ上へ入ることができます. また,コンテナ内での操作はローカル環境と同じになりますので,詳細は実行手順に従ってください.

$ docker-compose build
$ docker-compose up -d
$ docker-compose exec w2v_app /bin/bash

実行手順

  • python webserver.py でサーバ起動
  • localhost:8888に接続

また,実際に実行するためにはWord2Vecのモデルが必要です.こちらはGoogleドライブ上にアップロードしていますので,詳細は/word2vec_game/app/dataREADME.mdを見ていただけると幸いです.

アプリケーション概要

このアプリケーションは,Word2Vecの特徴である「単語間の加減算ができる」という点に着目したゲームです.

具体的にはWord2Vecは単語をベクトル空間上で表現することで単語間の意味関係を表現します.そのため,有名な例として日本 - 東京 + パリ = フランスといった単語の加減算ができます. このような特徴を活かして,問題として与えられる2単語の加減算単語を当てましょうというゲームとなっています. 先ほどの例(日本 - 東京 + パリ = フランス)で説明すると,日本(開始単語)とフランス(目標単語)の2単語がもし与えられた場合,その加減算単語「- 東京」と「+ パリ」を当てる(考える)といったゲームとなります.

さらに,今回はアプリケーションに対して以下の理由からいくつか制約を与えています.

  • ランダムに2単語生成するとその単語間の関係性がほとんど無く,ゲームとして成り立たない
    • 開始単語のみランダムに生成し,開始単語に類似した単語を目標単語として選定する
    • 類似度の閾値として類似度の高さが6番目から15番目の中から選定する(6番目からとしている理由はルールを参照してください.)
  • 全く知らない単語が出てくるとその加減算単語を当てにくく,ゴールへ遠ざかる
    • 分からない単語があるとその意味を調べるはずなので,Wikipediaの結果をあらかじめヒントとして与える

ルール

スタート単語からゴール単語までどのような単語で加減算を行えばいいか10手以内に求める.

  • Word2Vecの学習で構築した語彙の中からランダムでスタート単語が決定されます.
  • 難易度が高すぎたため,スタート単語との類似度が上位6位から15位までの単語をゴール単語としてランダム選択しています.
  • 加減算が行われた段階で現段階の類似度ランキングが表で出力されます.ランダムで出題されるため難しい単語があった場合のためにWikipediaAPIを用いて概要を抜き出したものがボタンを押すことで見ることができます.
  • 1タームごとのクリア条件は,計算結果の単語が類似度ランキングで上位5位以内に入ることです.

まとめると,クリア条件は10手以内に開始単語に加減算を行い,目標単語の類似度順位が上位5位以内に入ることです.

About

Word2Vec を用いた加減算単語当てゲーム

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published