知る人ぞ知るクイズ!脳ベルSHOW内「シャッフル人名」クイズの、クイズ問題を生成する AI で通称「シャッフル人名マシーン」を Windows10 環境で動かすための手順を紹介します。
20200416


大きく4つの段階に分かれています。最後の1つがシャッフル人名マシーン本体のインストールで、最初の3つはシャッフル人名マシーン・インストール前の前提条件となる部分のインストール作業です。



1. Linux/UNIX 環境の用意

「シャッフル人名マシーン」は Linux/UNIX 環境で動作します。Linux, macOS, ラズベリーパイなどを使っている場合、この 1 はすでに条件を満たしていることになるので飛ばして頂いて構いません。Windows 環境をお使いの場合はこの 1 を行う必要があります。

手順としては VirtualBox や VMWare などといった、いわゆる仮想マシン環境を構築して Linux をインストールしてもいいのですが、Windows 10 であれば WSL(Windows Subsystem for Linux) を使った方が(Linux 本体のインストールが不要で、初期設定も少ないので)楽だと思われ、おすすめです。

WSL を使って Ubuntu をインストールする手順については以下を参照してください:
http://www.aise.ics.saitama-u.ac.jp/~gotoh/HowToInstallUbuntu1804OnWSL.html#toc3


加えて2以降の作業を進める上での準備として、WSL を開いて以下の2つのコマンドを実行しておいてください:
$ sudo apt-get update -y

$ sudo apt install build-essential -y


なお、これ以降(2以降)の作業はすべて1で導入した Linux/UNIX 環境のターミナル画面を使って行います。


2. Node.js のインストール

「シャッフル人名マシーン」は Node.js(JavaScript) で記述されたプログラムです。というわけで、「シャッフル人名マシーン」を動かすには 1. で用意した Linux/UNIX 環境に Node.js をインストールする必要があります。これも済んでいる方は飛ばしていただいて構いません。

1. で用意した環境向けに Node.js をインストールしてください。なお Ubuntu に Node.js をインストールする手順については以下が詳しいので、こちらを参照してください:
https://qiita.com/seibe/items/36cef7df85fe2cefa3ea


3. Mecab のインストール

前提準備としては最後の段階です。ここから先の部分はプログラマーであっても既に準備済み、という方はかなり少ないと思っています。「シャッフル人名マシーン」はその内部で Mecab という日本語形態素解析エンジンを使います。したがって Mecab も事前に(UTF-8 エンコーディングで動くように)インストールしておく必要があります。

WSL の Ubuntu に Mecab をインストールする場合の手順は以下を参照ください:
https://qiita.com/ekzemplaro/items/c98c7f6698f130b55d53

なおラズベリーパイ環境に Mecab を UTF-8 エンコーディングでインストールする場合の手順は以下を参照してください:
http://dotnsf.blog.jp/archives/2019-01-25.html


この 1 ~ 3 までの準備が完了すると、いよいよ「シャッフル人名マシーン」をインストールして動かすことができるようになります。


4. 「シャッフル人名マシーン」の導入と動作確認

ではいよいよシャッフル人名マシーンをインストールします。

まずターミナルを開き、git コマンドで「シャッフル人名マシーン」をダウンロードします:
$ git clone https://github.com/dotnsf/shuffle_jinmei

続いて「シャッフル人名マシーン」のソースコードがあるフォルダへ移動します:
$ cd shuffle_jinmei

2. の Node.js 導入時に同時にインストールした npm コマンドを使って「シャッフル人名マシーン」の動作に必要な依存ライブラリを導入します(この操作は一度だけ行う必要があります):
$ npm install

これで「シャッフル人名マシーン」実行前のすべての準備が完了しました。


いよいよ「シャッフル人名マシーン」を Node.js で実行してみます。シャッフル人名マシーンの実行には「シャッフル人名マシーン」の解答となる人物名をひらがなで指定して、以下のように実行します(以下は「かわばたやすなり」さんを指定した実行例です):
$ node shuffle_jinmei かわばたやすなり

※なお、ここで指定する人物名の名前が長いほど実行に時間がかかります。実行マシンの性能によっても異なりますが、9文字以上になるあたりから相当な時間を要するようになります。

最後まで完了すると、同じフォルダ内に (実行した人物名).txt というファイルが出来ているはずです(上記例であれば かわばたやすなり.txt というファイルが出来ています)。この中に実行結果が格納されています。ここでの「実行結果」とはシャッフル人名マシーンが「ある程度意味をなす日本語としてシャッフルできた」と判断した文章です。

内容を確認するには
$ nano かわばたやすなり.txt

などと実行してください。以下、実行結果例の一部を紹介します:
[
  {
    "kanji": "や",
    "original": "や",
    "lexical": "名詞"
  },
  {
    "kanji": "なり",
    "original": "なり",
    "lexical": "助動詞"
  },
  {
    "kanji": "た",
    "original": "た",
    "lexical": "助動詞"
  },
  {
    "kanji": "ば",
    "original": "ば",
    "lexical": "助詞"
  },
  {
    "kanji": "わかす",
    "original": "わかす",
    "lexical": "動詞"
  }
]
[
  {
    "kanji": "ば",
    "original": "ば",
    "lexical": "名詞"
  },
  {
    "kanji": "や",
    "original": "や",
    "lexical": "助詞"
  },
  {
    "kanji": "たす",
    "original": "たす",
    "lexical": "動詞"
  },
  {
    "kanji": "わ",
    "original": "わ",
    "lexical": "助詞"
  },
  {
    "kanji": "かなり",
    "original": "かなり",
    "lexical": "名詞"
  }
]
   :
   :

"[" から "]" までが1つの答になっていて、ある程度意味を成すを判断されたシャッフル結果が複数表示されていると思われます。例えば上記青字例では
  場や足すわ、かなり
という文章が「かわばたやすなり」のシャッフル結果として得られたことを意味しています。


といった具合にシャッフル人名マシーンをある俳優さんの名前を指定して動かして、
$ node shuffle_jinmei ???????

この問題が生まれた、という経緯だったのでした。
20200416