自然言語処理の一過程である形態素解析。
本稿では、日本語を形態素解析できるツールについてまとめました。
形態素解析とは?定義を解説
形態素解析とは、自然言語処理(NLP)の一部で、自然言語で書かれた文を言語上で意味を持つ最小単位(=形態素)に分け、それぞれの品詞や変化などを判別することです。
例えば 「庭には二羽ニワトリがいる」という文章を
庭(名詞)/に(助詞)/は(助詞)/二(数詞)/羽(助数詞)/ニワトリ(名詞)/が(助詞)/いる(動詞)
のように形態素に分解し、意味を割り出します。
形態素解析の用途と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製のテキスト解析では、唯一オンライン学習機能を持っています。
https://github.com/rakuten-nlp/rakutenma
言語:JavaScript
kuromoji
kuromojiは、Javaで開発したオープンソース日本語形態素解析エンジンです。
基本機能は、単語の分割、品詞タグ付け、 見出し化、漢字の読み方であり、複数の辞書のバックエンドをサポートしています。
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までとなっています。
http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html
その他テキスト解析機能
gooラボ
HTTPSリクエストでアクセスしリクエストパラメータはJSONで返されます。POSTのみの受付でGETは受け付けません。
GitHubでのアカウント取得が使用条件にあり、使う際にはクレジット画像の表示も必要になります。
https://labs.goo.ne.jp/api/jp/morphological-analysis/
その他テキスト解析機能
- 固有表現抽出API…人名や地名などの固有表現を抽出します
- 語句類似度算出API…発音をくらべて類似度を出します
- ひらがな化API…ひらがな、カタカナに変換します
- 商品評判要約API…商品レビューからインデックスを作成します
- キーワード抽出API…キーワードを抽出します
- 時刻情報正規化API…時刻情報を抽出し正規表現化します
日本語テキスト解析ライブラリ
janome
pythonで形態素解析をしたい場合。Mecab ⇒ mecab-ipadic ⇒ mecab-pythonをインストール。という面倒な手順がjanomeだとpipコマンドでインストールして使えます。
https://github.com/mocobeta/janome
TinySegmenter
『分かち書き』しかできません。がjsなのでブラウザ上で動作しわずか25バイトのソースコードで新聞記事だと95%の正解率で分かち書きしてくれます。
辞書を使用しないためブログなどのくだけた文の解析精度は低いです。
http://chasen.org/~taku/software/TinySegmenter/
形態素解析の課題
近年、重要性が叫ばれている機械学習やチャットbot開発などの最新技術を使うにあたり、前提として必要になるのが形態素解析の技術です。
すでにある程度成熟していますが、いつの時代も生まれる新しい言葉にも対応していかなければ、置いていかれてしまいます。
この分野においても、AIによる自律学習はすでに始まっており、今後の展開に期待です。