2016年1月20日水曜日

日本が夏の時、オーストラリアは?

うちの会社にはとても面白い若手社員がいまして、「日本が夏の時、オーストラリアは?」と聞くと自信満々に「夏」という社員がいます。
理由を聞くと、「日本が8月だとオーストラリアも8月だから」と言われました。

おじさん、最近の若者の考え方わからないあるよ。
おじさん、最近の若者の考え方本当にわからないあるよ。

やっぱりこの問題、難しいからなぁ。
なので、このとっても難しい問題をコンピュータで解くことにしました。
解く必要ないって?

いえいえ、こんな難しい問題はコンピュータでないと解けないんです。
この問題を自然言語処理で解こうというのが今回のブログなんです。
おじさん、集中力がないので画像処理のブログを書くのはあきてしまいました。


そこで今回はGoogleの超天才研究者が開発したWord2Vecというライブラリで単語の演算というのをやってみます。

単語の演算というのは

A->BならばC->?
というのを解く問題です。
A-B+C
などと書く場合もあります。記号だとよくわからないですね。
A、B、Cそれぞれに日本、東京、フランスという単語を当てはめて説明しますね。

日本と東京のような関係があるとき、フランスの対に当たる単語を見つける問題です。
日本と東京は国と首都という暗黙の関係で結ばれているので、フランスの場合はパリが答えです。

すごいですね。コンピュータのくせにクイズが解けちゃうんです。
このクイズを解いちゃうライブラリに(日本)-(夏)+(オーストラリア)を入れてみたいのです。

いままでブログで書いてきた画像処理のような、コンピュータでいろいろなものを認識することをやるときには必ずなんでもデータをベクトル化しないといけないのですが、自然言語処理にはいままで効率の良いベクトル化の方法がなかったのです。この研究者が画期的な方法で単語のベクトル化ができたんです。ほんとうにすごいです。

しかももっとすごいのはそのソースコード。
C言語のファイルが一つしかないんです。しかも答えを求める部分の全てのソースがたったの140行。
なので手軽に遊ぶことができます。

ソースコードはこちらです。
https://code.google.com/p/word2vec/

LinuxかMacOSXでしか動かないのですが、せっかくなのでWindows用に移植してみました。ファイル一つしかないので移植も超簡単です。


コンパイルもめんどくさいという人はここにサービスがあるので、簡単に実験することができます。

http://deeplearner.fz-qqq.net/ja.html

そして、ついに答えがでました。



日本が夏の時、オーストラリアは冬だそうです。
すげー。うちの会社の社員のレベルを超えている。
理由教えて欲しいんですが、コンピュータ理由はわからないみたいです。

1 件のコメント:

  1. 日本が夏の時イギリスは・・・?

    https://dl.dropboxusercontent.com/u/532053/images/uk.png

    迷いはあるようですが,どうやら冬のようです.


    ・・・年中どんよりと身も心も冷え切っているので,
    ある意味正しいですね.
    深い・・・

    返信削除