おはようございます。アズマです。
SmartNewsの形態素解析って凄いですよね。
完璧に文章を細分化して、区切り良いところで改行したり文字数によっては行フォントサイズを変更したりとユーザーが読みやすいように最高のUIで提供してくれます。
凄すぎて気づいていない読者も多数いるとか…
今日はそんな日本語を形態素解析できるツールについてまとめてみました。
一応、知らない方の為に…形態素解析とは
例えば 『庭には二羽ニワトリがいる。』という文章を
『庭』『に』『は』『二』『羽』『ニワトリ』『が』『いる』『。』
と言語で意味を持つ最小の単位(=形態素)に分け、それぞれのパーツの品詞などを判別することを指します。
形態素解析することで、機械が文章の意味を読み取れるようになるというわけです。
形態素解析ツールの定義は
の機能があるものとされています。
1980年代から開発されている機能なので、ググるとすでに使われていないサイトなど数多く出てきますが、今回は実際”使える”と評判の『API』『エンジン』『ライブラリ』をご紹介したいと思います。
HTTPリクエストでアクセスしリクエストパラメータはxmlで返されます。HTTPメソッドはGETでもPOSTでも可能です。
制限は24時間で5万件まで。1リクエストの最大サイズ10KBまでとなってます。
http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html
HTTPSリクエストでアクセスしリクエストパラメータはJSONで返されます。POSTのみの受付でGETは受け付けません。
GitHubでのアカウント取得が使用条件にあり、使う際にはクレジット画像の表示も必要になります。
https://labs.goo.ne.jp/api/jp/morphological-analysis/
形態素解析エンジンではもっとも使われているので情報が豊富です。連結させる辞書もIPAdic、NAIST jdic、UniDicなど多種類で追加学習も可能です。
高速で言語も多いためMeCabから始めるってひとが多いです。
http://taku910.github.io/mecab/
言語:C、C#、C++、 Java、 Perl、Python、Ruby、R
『原型付与』ができないので正確には形態素解析器ではないですが、JavaScriptで動くためスマホやタブレットでもページにアクセスすればテキスト解析ができます。
JavaScript製のテキスト解析では唯一学習機能を持っています。
https://github.com/rakuten-nlp/rakutenma
言語:JavaScript
オープンソースの形態素解析エンジン。
全文検索ソフトウェアのLucene、Solr、elasticsearchに対応しているので使っているひとが多いですが学習機能がないのが残念です。
https://www.atilika.com/ja/products/kuromoji.html
言語:Java、JavaScript
KyTea…読みの推定ができます。
http://www.phontron.com/kytea/index-ja.html
JUMAN…代表表記を正規化できます。バインディングはperlかpython。
http://nlp.ist.i.kyoto-u.ac.jp/index.php?JUMAN
上記に紹介したエンジンと差異があまりないので割愛します。
pythonで形態素解析をしたい場合。Mecab ⇒ mecab-ipadic ⇒ mecab-pythonをインストール。という面倒な手順がjanomeだとpipコマンドいっぱつでインストールして使えます。
https://github.com/mocobeta/janome
『分かち書き』しかできません。がjsなのでブラウザ上で動作しわずか25バイトのソースコードで新聞記事だと95%の正解率で分かち書きしてくれます。
辞書を使用しないためブログなどのくだけた文の解析精度は低いです。
http://chasen.org/~taku/software/TinySegmenter/
機械学習やチャットbot開発などなど。最近話題のアレコレを使うにあたって、前段でどうしても必要になってしまう形態素解析の技術。
すでにある程度成熟した業界ではあるんですが、いつの時代も生まれる新しい言葉(※『りょ』や『~わず』など)にも対応していかなければ、やっぱり使えなくなってしまうものなんですよね。
この分野でもAIによる自律学習は期待されている…というかもう始まってたりするので、今後の展開に期待。ですね。