Python

PythonのJanomeで形態素解析を行ってみた

以前、PHPで形態素解析を行ったときにはMecabを直接利用して解析を行いました。Pythonで行うときにはJanomeを利用するとインストールから実行までとても簡単に行うことができました

実行した環境

  • Python 3.5.2
  • Janome 0.2.8 (最新ではないです)

参考にしたサイト

Janome公式

インストール

まあ、これだけです

本家サイトに紹介されているような簡単な例

実行結果

圧倒的に簡単ですね

個別のTokenオブジェクト

実行結果

アプリケーションへの組み込むためには、辞書の拡張、文章の揺らぎへの対応など、さらなる工夫が必要です。しかし、ライブラリにMecab自体が組み込まれており、導入から実行まであっというまに実現できます。また、解析自体はとても簡単にできます。

「Happy 形態素解析」

手書き文字認証を作ってみよう!~第1弾~

実行環境

・Python3.6.1
・JetBrains PyCharm Community Edition
・Windows10

学習データおよびテストデータについて

学習データおよびテストデータとして手書き文字を何万データ分作るのは大変なので今回はMNISTという手書き数字のデータベースを用いてやります。
以下のサイトよりデータを入手できます
学習データ
テストデータ

※このデータは学習データで60000件、テストデータで10000件のデータセットになっている。いかに今回のソースを示すがもしソースコードを修正し自分なりに
アレンジを加えたいと思う方がいればより小さいデータセットが以下になる
学習データ(100件)
テストデータ(10件)

ニューラルネットワークの初期化

詳しい概念はページの下に参考書籍を載せておいたのでそちらを参考に!まず最初にニューラルネットワークで使う値の設定を行う。
ニューラルネットワークで重要になってくるのは入力層、隠れ層、出力層のノード数、リンクの重み付、学習率の設定を行う必要がある。
また活性化関数としてシグモイド関数(sig(a)=1/(1+exp(−a)))を用いる。シグモイド関数の公式を書いているがこれを多言語でやるとなかなか大変そうに感じるが、
Pythonは数学関係のライブラリーが多数存在し、シグモイド関数も一行で示すことができる。

以下初期化のメソッドである

ニューラルネットワークへの照会

ブログの概念を書くのには限界があるためよりくわしい概念を知りたい方はページの下に参考書籍を載せているので参考に!
このメソッドではニューラルネットワークへの入力を受け取り、そのネットワークへの出力を返す役割を果たすメソッドです。出力を行うためには
初期化で設定した内容を用いて計算する必要があります。入力層から隠れ層へ、隠れ層から出力層へ信号を送っていきます。

隠れ層へはまずニューラルネットワークへの入力に対し、隠れ層の重みを掛け合わせます。
式ではX(hidden) = W(input_hidden) ・ I
となります。以下で求めた値を出力層へ送るために活性化関数を用います。
式では O(hidden) = sigmoid(X(hidden)) となる。
同じ流れで隠れ層から出力層も行い出力された値がニューラルネットワークからの出力となる

以下メソッドの全貌である

ニューラルネットワークの学習

出力結果が実際の結果と違ったとき、重みを調整する必要性がある。それを繰り返しすることによりニューラルネットワークの精度を上げていく必要がある。
誤差を計算し最適な値を求めていく必要があるがそれが以下となる

早速やってみよう

入力層のノード数を784、隠れ層を200、出力層を10とする。隠れ層のノードは調整する必要があるが残りについてはまず、
入力層:784についてはMNISTのテストデータのピクセル配列が28×28=784であるところからきている。出力層:10は今回の手書き数字は0~9の
一桁を対象に行うもので0~9の計10数を対象にしていることからきている。

いかに学習からテストまでの内容を書いている

今回のまとめ

以上でテストしてみると正答率が約96%という結果が出た。今回はscikit-learnやtensorflowといったライブラリーを使わずにやったが高い正答率がでるものが
完成できた。
以下もっと詳しい概念を知りたい人がいれば以下の本をお勧めします

〇マイナビ出版 ニューラルネットワーク自作入門 Tariq Rashid[著]親納浩幸[監訳]

TensorFlow・Keras導入

〇環境
Ubunts16.04.3

〇Anacondaの導入
・AnnacondaとはPythonで使うことができる便利なライブラリがあらかじめインストールされた状態のPython。インストールの手間を省くことができる。Anacondaは特に数値計算を行うための主要なライブラリを網羅している

・インストール方法
①pyenvが導入されていない場合はpyenvを導入する

でインストールされ

とすると読み込みが完了される。インストールできたかの確認は

でインストール可能なPython一覧が表示されておればpyenvはインストールされている
② listの中からインストールしたいAnacondaのバージョンが見つかれば

でインストールされる

でインストールされたAnacondaが表示されていればインストール完了。

でAnacondaのPythonに切り替えができる

〇TensorFlowの導入
上記でAnacondaをインストールされていればpip(Pythonライブラリの管理ツール)もインストールされているはず

でインストール完了
Pythonインタプリタを起動し

と入力しエラーが表示されなければインストール完了

〇Kerasの導入
KerasはTensorFlowのラッパーライブラリである。ディープラーニング向けライブラリ。

でインストール完了。インタプリタを開き

と入力し、Using TensorFlow backend. と表示されればインストール完了

〇導入してみて
前回OpenCVを導入したが手間取った。今回思った以上に簡単にインストールでき拍子抜けであった。
TensorFlowを使い今後ディープラーニングについて勉強および実装していく予定である

〇参考文献
詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~ 巣籠 悠輔 (著)

ディープラーニングに興味がある人がいれば読んでみる価値あるかも