形態素解析とは | エンジン・API・ライブラリ等おすすめツールをご紹介

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

自然言語処理の一過程である形態素解析

本稿では、日本語を形態素解析できるツールについてまとめました。

 

形態素解析とは?

形態素解析とは、自然言語処理(NLP)の仕組みの一部です。

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

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

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

形態素解析の用途と3種類の形態素解析のツール

形態素解析は、大量のテキストの文法上の属性を明らかにすることで、そのテキストの意味理解に使われています。

SmartNewsはこの形態素解析を用いて、自動的に見出しを読みやすくなるように改行しています。Googleなどの検索エンジンでは、検索フォームに入力されたキーワードはそのまま処理されるのではなく、形態素解析によって最小単位にまで分割されています。

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

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

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

形態素解析ツールは大きく分けると、『エンジン』『API』『ライブラリ』があります。

形態素解析は、1980年代から開発されている機能なので、検索するとすでに使われていないサイトなど数多く出てきますが、今回は実際”使える”と評判のツールをご紹介したいと思います。

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

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

日本語形態素解析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/

その他テキスト解析機能

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

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/

形態素解析に今後も注目。新しい言葉にも対応していくことが必要

機械学習やチャットbot開発など。話題のものを使うにあたって、前段と必要になる形態素解析の技術。

すでにある程度成熟した業界ですが、いつの時代も生まれる新しい言葉にも対応していかなければ、使えなくなってしまいます。

この分野でもAIによる自律学習はすでに始まっているため、今後の展開に期待です。