Pythonの機械学習で言語判定するWebアプリを作ってみた

artificial-intelligence

最近、何かと流行の人工知能(AI)ですが、皆さん使いこなすことができていますか?

実用するためには、学習アルゴリズムやモデル構築、サービスへの組込み手法など幅広い知識が必要になってきます。そこで、今回は「人工知能」について簡単な解説を行い、実際に私が作った機械学習を活用したWebサービスを紹介します。

(※ネット環境ではまだ公開していません。今後の課題とします。)

1. 人工知能とは

最近、人工知能という言葉を聞く機会が増えてきたと思います。その一方で、機械学習やディープラーニング(深層学習)といった言葉も聞いたことがあるかもしれません。この辺りを混同し、正しく理解できていない人が多いと思われます。これらの用語の関係性を簡単に示すと、下図のようになります。

ai relationship

A.人工知能

「人工知能」を簡単に説明すると、人の頭脳による複雑な情報処理をコンピュータ上で模して実現させる技術です。従って、普通に書かれたプログラミングでも、人並みの情報処理を実現することができます。

ただ、「Aといった事象が発生した場合は〇〇を実行する」、「Bといった事象が発生した場合は××を実行する」といったルールを、事細かにすべて記述しなければいけません。これをルールベースの人工知能と呼びます。これではすべての事象に対して、網羅的なルールを設定しなければいけなく、かなり大変で実用的ではありません。

B.機械学習

そこで、ブレークスルーとなった技術として注目を集めているのが「機械学習」です。この技術においては、人がすべての事象に対してルールを設定する必要はありません。その代わり、膨大で多様なデータを機械に与えてあげます。機械学習を簡単に説明すると、機械自身がデータからその振る舞いを学習する技術です。

つまり、機械がデータを学習する際に、人手は必要なく、機械が勝手に学習してデータを分析してくれます。そして、学習済みの機械(モデルと呼びます)を用いて、将来の予測を行ったり、未知のデータを分類したりします。学習させるだけでなく、その結果を将来のために活用させるのがポイントです。

機械学習の学習方法(アルゴリズム)には多くの種類があります。パーセプトロン、ニューラルネットワーク、サポートベクタマシーン、ランダムフォレスト、勾配ブースティングなど。どのアルゴリズムを使用すればよいのかは、解決したい問題やデータの特徴により異なります。この辺りを理解するには数学の知識が必要になってきます。

C.ディープラーニング(深層学習)

ここ数年でかなりメジャーな存在になったのがディープラーニング(深層学習)です。これは、上記の機械学習のアルゴリズムの1つである「ニューラルネットワーク」を改良し、発展させたものだと覚えておきましょう。

私もまだ勉強中で詳しくはありませんが、ニューラルネットワークの中間層のニューロンを多層化させたものがディープラーニングです。主に画像認識の分野にて、識別性能を飛躍的に高めることに成功したことでブームになりました。今では、音声認識や自然言語処理など様々な分野でも活用されています。

因みに、私は大学時代に「ニューラルネットワーク」を専攻していました。どちらかと言えば、機械学習分野の論理的モデルではなく、もっと生物学的な神経細胞モデルを研究していました。ただ、モデリングやデータ分析の経験があったので、少し勉強するだけで機械学習の分野にもすぐキャッチアップすることができました。

2. 機械学習を使ったWebサービス

では、ここからは実際に機械学習を使って、どのようなことができるのかの例を1つ紹介したいと思います。今回、私が作ってみたのは、言語を判定する簡易サービスです。

本サービスの機能は、英語、スペイン語、ドイツ語の何れかの文章を入力してボタンを押すと、その文章がどの言語か推測してくれます。このサービス自体に意味があるかは置いておいて、機械学習を使って言語を自動判定することができました。

language presumption

英語、スペイン語、ドイツ語はアルファベットを使用した言語ですが、それぞれ使用頻度の高いアルファベットの文字が異なります。例えば英語は「e」、ドイツ語は「z」の使用頻度が高いなどの特徴があります。

今回は事前にWikipedia上の各言語の文章データを学習させておきました。なので、私は機械に対して何も教えていません。機械が勝手に文章データを学習し、身につけた知能で言語を推測してくれました。

学習させたデータ数は少ないですが、アルファベットの使用頻度という特徴量で精度よく分類できました。なお、機械学習ライブラリ「scikit-learn」を使用すれば、誰でも簡単なサービスを作ることができます。

3. 参考図書

今回のサービスを作る上で参考にした書籍を紹介しておきます。

すぐに使える! 業務で実践できる! Pythonによる AI・機械学習・深層学習アプリのつくり方

まとめ

今回は下記について書きました。

  • 人工知能、機械学習、ディープラーニング(深層学習)の用語解説
  • 機械学習を使用したWebサービスの紹介(言語の自動判定)