「あなたにとってAIとは?」自然言語処理でAidemyに聞いてみた


1.概要

Aidemyの機械学習概論の文章にWord2Vecを使い、「AI」と関連性が高い単語を調べました。

2.はじめに

Aidemyで「自然言語処理でニュース記事をカテゴリ分けしてみよう!」の受講ルートを勉強したので、Aidemy noteへの投稿記事として書きました。

Word2Vecというツールを使えば、文章中のある単語と関連性が高い単語を調べることができます。

ところで、NHKの「プロフェッショナル 仕事の流儀」という番組で、「プロフェッショナルとは」という質問をするシーンがありますよね。Word2Vecを使えば、番組中での発言を解析してプロフェッショナルと関連性が高い単語を調べることができます。プロフェッショナルと関連性が高い単語が番組での答えと一致したらおもしろいなと思いました。

特に、本田圭佑さんの「プロフェッショナルとは、ケイスケ・ホンダ」という発言が話題になっていたのでそれを解析してみたかったのですが、文字起こしされているものを見つけられませんでした。

そこで、AIプログラミング学習サービス「Aidemy」で無料公開されている「機械学習概論」の文章を解析して、「AI」と関連性が高い単語を調べてみました。

3.データ集め

Aidemyの機械学習概論のサイトから左の説明文をコピペしました。

Webスクレイピングで文章をダウンロードすればスマートだったかもしれません。しかし、コピペでもそんなに大変ではなく直感的で初心者の方にもわかりやすいかなと思ったのでコピペにしました。

4.実行環境

Ubuntu 16.04.3 LTS
Python 3.5.5

5.コード

文章を変数に代入しておくファイルです。

text.py

#1ページ目の文章
#本当はもっと長い
text1 = "機械学習はそもそもなぜ大きく注目されるのでしょうか。主な・・・"

#2ページ目の文章
text2 = "そもそも機械学習の言葉の意味はなんでしょうか。簡単に・・・"

#省略

#22ページ目の文章
text22 = "まず、適合率と再現率について・・・"

text = text1 + text2 + ... + text22

Word2Vecを実行するファイルです。

word2vec.py

from gensim.models import word2vec
from janome.tokenizer import Tokenizer
from aidemy_document import *

t = Tokenizer()
tokens = t.tokenize(text)
word=[]

for token in tokens:
        part_of_speech = token.part_of_speech.split(",")[0]

        if part_of_speech == "名詞":
            word.append(token.surface)

documents = [word]
model = word2vec.Word2Vec(documents, size=200, min_count=3, window=15)
similar = model.most_similar(positive=["AI"])
print(similar)

関連性を調べる単語の品詞を名詞・動詞・形容詞・形容動詞にしていたら、「し」とか「する」とか抽象的な単語が多くなったので、名詞だけに限定しました。

6.結果

関連性が高い順に10個の単語が出力されます

  1. 教師  0.8957939743995667
  2. ラベル 0.8951122164726257
  3. 割合  0.894281804561615
  4. 人   0.8937101364135742
  5. 再現  0.893358588218689
  6. 以下  0.8926076292991638
  7. 状態  0.8924640417098999
  8. 必要  0.8920382261276245
  9. 顧客  0.8914119601249695
  10. クラス 0.8912531137466431

7.おわりに

「教師」は「教師あり学習」、「教師なし学習」の教師ですね。「AI」と関連性が高い単語で「人」が出てくるのもおもしろいですね。

Aidemyの「自然言語処理を用いた質問応答」を勉強すると、ニューラルネットワークを使った自然言語処理ができるようになり精度も高くなるようです。そこまで勉強したらまた記事を書いてみようと思います。

QiitaやTwitterに感想やアドバイスなどのコメントをいただけると嬉しいです。