形態素解析について
車の買取価格を提示してくれるチャットbot作成、第3弾。今回は形態素解析についてです。
形態素解析とは、「車種はトヨタのプリウスです」といった入力文を品詞毎に分類し、
車種: 名詞
は: 助詞
トヨタ: 名詞
の: 助詞
プリウス: 名詞
です: 助動詞
という風にパーツごとにラベルをつけてくれるツールです。つまり、これを使えば、チャットbotが受け取った情報を簡単に解析できるわけです。
形態素解析ツールにはどのようなものがあるのでしょうか?
おおまかにわけて、
- ウェブサービスとして利用できるもの
- 呼び出し元のプログラムと同じコンピューターに設置するもの
の2種類があります。
前者には、Yahoo! Japanが運営する「Yahoo!形態素解析API」や、gooラボが提供するもの、NTTドコモが提供するものがありますが、いずれも商用利用は要問合せとなっています。
Web API呼び出しではなくサーバー内で利用する後者のタイプとしては、
- MeCab(定番ツールです)http://taku910.github.io/mecab/
- Juman++(表記の揺れを代表表現に置き換える機能がある)http://nlp.ist.i.kyoto-u.ac.jp/index.php?JUMAN++
- Janome(MeCabと同等の結果が得られるPythonモジュール)http://mocobeta.github.io/janome/
などがあります。今回はPythonから利用しやすいこから、Janomeを利用することにします。サーバーにJanomeのモジュールをインストールしておきます
sudo pip install janome
これでJanomeを利用する準備は完了です。
下記のプログラムをtest.pyとして保存して、サーバーで走らせてみましょう。
import requests
from janome.tokenizer import Tokenizer
phrase = u’車種はトヨタのプリウスです’
t = Tokenizer()
for token in t.tokenize(phrase):
print(token.surface + ‘:’ + token.part_of_speech)
python test.pyで下記のような結果が表示されるはずです。
車種:名詞,一般,,
は:助詞,係助詞,,
トヨタ:名詞,固有名詞,組織,*
の:助詞,連体化,,
プリウス:名詞,一般,,
です:助動詞,,,*
形態素解析が使えるようになったので、これで利用者の問い合わせから、車種や色の情報を簡単に抽出することができます。例えば、
「車種を教えてください」
という質問をbotが返したときに利用者が入力した内容を解析し、名詞の部分を取り出せば、それが車種の情報を推測することができます。このようにして車種、年式、走行距離、色の情報を収集できるようになったら、いよいよ機械学習にとりかかります。
Error, group does not exist! Check your syntax! (ID: 1)