人工知能

形態素解析API自作 まずはMeCabインストール

更新日:

形態素解析

むかーしむかし、形態素解析器をC++で実装した記憶がある。文を「形態素がn個繋がったn-gram」の組み合わせに分割しようとしたとき、無数に考えられる分割の仕方の中から尤もらしい組み合わせを求める、みたいな問題だったと思う。

n-gramを構成する形態素の長さが一番大きいものを採用する、とか、無駄な探索を合理的にカットする、とか、バックトラック法としての工夫はあれど、基本的に馬鹿正直にコンピュータにやらせようとするとこうなる。みたいな。

図にするとこんな感じだろうか。確かラティスとか名前が付いていた。
fig_jpma_lattice1

新聞のような文であれば、こんな単純なアルゴリズムでも割とまともに分割できた。ただ、辞書を作ってみたら文字列がある塊に分類できて、もしその分類通りに分割するとすると、こういうつながりが正しい、という話なだけだ。話言葉をうまく分かち書きできない理由は、辞書が違うからではなく、話言葉を塊に分類できないから、という真面目な問題があった

何が正しくて何が正しくないか、辞書により高頻度で現れたか否か、というだけ。分類って難しいのだが、自然言語から単語が欲しいだけなら十分実用レベルだったな。

MeCab

形態素解析器の実装はとても面白かったけれど、今回はむかーしから有名な形態素解析器(MeCab)をWebAPIから叩けるようにしてみようと思う。

Yahoo API など、超高性能な形態素解析APIがあるのは知っているが、YahooAPIには有名な以下の制限がある。

日本語形態素解析Web APIは、24時間以内で1つのアプリケーションIDにつき50000件のリクエストが上限となっています。また、1リクエストの最大サイズを100KBに制限 しています。詳しくは「利用制限」をご参照ください。

クローラ作って24時間稼働させたり、など、自然言語処理を実用的な目的で使おうとするにはキツすぎるので。ライセンスはBSD,LGPL,GPLのトリプルライセンスだそうな。こんな話もあったり。単なる遊びなので十分。
設計上WebAPIだが、ローカルからも叩ける方が面白い。

まずは、昔から有名な形態素解析器をyumでインストールしてみる。

$ sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
$ sudo yum install mecab mecab-ipadic -y
$ mecab --version
mecab of 0.996

形態素解析のHelloWorldを叩いてみる!

$ mecah
こんにちは世界!
こんにちは	感動詞,*,*,*,*,*,こんにちは,コンニチハ,コンニチワ
世界	名詞,一般,*,*,*,*,世界,セカイ,セカイ
!	記号,一般,*,*,*,*,!,!,!
EOS

超懐かしい...。つづく。

-人工知能
-,

Copyright© ikuty.com , 2018 AllRights Reserved Powered by AFFINGER4.