形態素解析とは | 意味・用途・3種のツール・ライブラリを解説

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

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

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

 

形態素解析とは?定義を解説

形態素解析とは、自然言語処理(NLP)の一部で、自然言語で書かれた文を言語上で意味を持つ最小単位(=形態素)に分け、それぞれの品詞や変化などを判別することです。

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

庭(名詞)/に(助詞)/は(助詞)/二(数詞)/羽(助数詞)/ニワトリ(名詞)/が(助詞)/いる(動詞)

のように形態素に分解し、意味を割り出します。

–自然言語処理(Natural Language Processing)とは、言葉や文章などコミュニケーションで用いる「話し言葉」や論文のような「書き言葉」など、自然言語の持つ意味を解析する処理技術です。

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

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

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

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

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

の3つの機能があるものです。

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

今回はその中でも、実際に「使える」と評判のツールをご紹介します。

形態素解析エンジン

MeCab

「MeCab」は、オープンソースの形態素解析エンジンです。辞書やコーパスに依存しない汎用的な設計なため、連結可能な辞書も、IPAdic、NAIST jdic、UniDicなど多数あり、追加学習も可能です。

高速かつ使用できる言語も多いため、初心者はMeCabから始める人が多い傾向があります。

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

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

機能

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

RakutenMA

RakutenMAは、100% JavaScript で書かれた、日本語・中国語用の形態素解析ツールです。
JavaScriptで動くため、スマホやタブレットでもページにアクセスすればテキスト解析ができます。

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

RakutenMA

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

言語:JavaScript

kuromoji

kuromojiは、Javaで開発したオープンソース日本語形態素解析エンジンです。

基本機能は、単語の分割、品詞タグ付け、 見出し化、漢字の読み方であり、複数の辞書のバックエンドをサポートしています。

kuromoji

https://www.atilika.com/ja/products/kuromoji.html

言語:Java、JavaScript

機能

  • 分かち書き、品詞
  • 読み
  • 見出し表示

その他

  • KyTea

KyTea(京都テキスト解析ツールキット)は、日本語など、単語(形態素)分割を必要とする言語のための一般的なテキスト解析器です。
読みの推定ができる特徴があります。
http://www.phontron.com/kytea/index-ja.html

  • JUMAN

JUMANは、計算機による日本語の解析の研究を目指す多くの研究者に共通に使える形態素解析ツールです。
使用者によって文法の定義,単語間の接続関係の定義などを容易に変更できるように配慮されている特徴があります。
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による自律学習はすでに始まっており、今後の展開に期待です。