意外にあった!?日本語の形態素解析ツールまとめ

意外にあった日本語の形態素解析ツールまとめ
このエントリーをはてなブックマークに追加

おはようございます。アズマです。

SmartNewsの形態素解析って凄いですよね。

完璧に文章を細分化して、区切り良いところで改行したり文字数によっては行フォントサイズを変更したりとユーザーが読みやすいように最高のUIで提供してくれます。

凄すぎて気づいていない読者も多数いるとか…

今日はそんな日本語を形態素解析できるツールについてまとめてみました。

形態素解析って?

一応、知らない方の為に…形態素解析とは

例えば 『庭には二羽ニワトリがいる。』という文章を

『庭』『に』『は』『二』『羽』『ニワトリ』『が』『いる』『。』

と言語で意味を持つ最小の単位(=形態素)に分け、それぞれのパーツの品詞などを判別することを指します。

形態素解析することで、機械が文章の意味を読み取れるようになるというわけです。

形態素解析ツールの定義は

  • 分かち書き(文章を形態素で分ける)
  • 品詞わけ(名詞や動詞などに分類する)
  • 原型付与(単語の基本形をだす)例:食べた ⇒ 食べる、た

の機能があるものとされています。

1980年代から開発されている機能なので、ググるとすでに使われていないサイトなど数多く出てきますが、今回は実際”使える”と評判の『API』『エンジン』『ライブラリ』をご紹介したいと思います。

日本語形態素解析API

Yahoo! JAPAN テキスト解析 Web API

HTTPリクエストでアクセスしリクエストパラメータはxmlで返されます。HTTPメソッドはGETでもPOSTでも可能です。

制限は24時間で5万件まで。1リクエストの最大サイズ10KBまでとなってます。

yahoo

http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html

その他テキスト解析機能

gooラボ

HTTPSリクエストでアクセスしリクエストパラメータはJSONで返されます。POSTのみの受付でGETは受け付けません。

GitHubでのアカウント取得が使用条件にあり、使う際にはクレジット画像の表示も必要になります。

goo

https://labs.goo.ne.jp/api/jp/morphological-analysis/

その他テキスト解析機能

日本語形態素解析エンジン

MeCab

形態素解析エンジンではもっとも使われているので情報が豊富です。連結させる辞書もIPAdic、NAIST jdic、UniDicなど多種類で追加学習も可能です。

高速で言語も多いためMeCabから始めるってひとが多いです。

MeCab

http://taku910.github.io/mecab/

言語:C、C#、C++、 Java、 Perl、Python、Ruby、R

機能

  • 分かち書き、品詞
  • 読み、発音
  • 文字コード変更
  • 未知語推定…辞書にない単語でも品詞を推定します
  • パターン出し…色んなパターンで形態素解析します

RakutenMA

『原型付与』ができないので正確には形態素解析器ではないですが、JavaScriptで動くためスマホやタブレットでもページにアクセスすればテキスト解析ができます。

JavaScript製のテキスト解析では唯一学習機能を持っています。

RakutenMA

https://github.com/rakuten-nlp/rakutenma

言語:JavaScript

kuromoji

オープンソースの形態素解析エンジン。

全文検索ソフトウェアのLucene、Solr、elasticsearchに対応しているので使っているひとが多いですが学習機能がないのが残念です。

kuromoji

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

上記に紹介したエンジンと差異があまりないので割愛します。

日本語テキスト解析ライブラリ

janome

pythonで形態素解析をしたい場合。Mecab ⇒ mecab-ipadic ⇒ mecab-pythonをインストール。という面倒な手順がjanomeだとpipコマンドいっぱつでインストールして使えます。

janome

https://github.com/mocobeta/janome

TinySegmenter

『分かち書き』しかできません。がjsなのでブラウザ上で動作しわずか25バイトのソースコードで新聞記事だと95%の正解率で分かち書きしてくれます。

辞書を使用しないためブログなどのくだけた文の解析精度は低いです。

TinySegmenter

http://chasen.org/~taku/software/TinySegmenter/

まとめ

機械学習やチャットボット開発などなど。最近話題のアレコレを使うにあたって、前段でどうしても必要になってしまう形態素解析の技術。

すでにある程度成熟した業界ではあるんですが、いつの時代も生まれる新しい言葉(※『りょ』や『~わず』など)にも対応していかなければ、やっぱり使えなくなってしまうものなんですよね。

この分野でもAIによる自律学習は期待されている…というかもう始まってたりするので、今後の展開に期待。ですね。