はじめに
自然言語処理関係のことを行う場合に必ずと言っていい程、形態素解析を用いる必要があります。
日本語を利用できる形態素解析器は「MeCab」と「JUMAN++」が有名です。
今回はJUMAN++を導入して形態素解析を行っていきます。
この記事で扱う内容は以下の通りです。
- Juman++の導入
- PythonからJuman++を利用する
自然言語処理とは
自然言語処理(しぜんげんごしょり、英語: natural language processing、略称:NLP)は、人間が日常的に使っている自然言語をコンピュータに処理させる一連の技術であり、人工知能と言語学の一分野である。
自然言語処理|Wikipedia
「一言で言うと」:人間が普段使っている言語をコンピュータで処理する技術
形態素解析とは
形態素解析(けいたいそかいせき、Morphological Analysis)とは、文法的な情報の注記の無い自然言語のテキストデータ(文)から、対象言語の文法や、辞書と呼ばれる単語の品詞等の情報にもとづき、形態素(Morpheme, おおまかにいえば、言語で意味を持つ最小単位)の列に分割し、それぞれの形態素の品詞等を判別する作業である。
形態素解析|Wikipedia
「一言で言うと」:与えられた文に対して、意味を持つ最小の単語に分けて品詞情報などを付与する処理
JUMAN++とは
JUMAN++は京都大学黒橋・河原研究室により開発された高性能な形態素解析システムです。言語モデルとしてRNNLMを用いることにより、単語の並びの意味的な自然さを考慮した解析を行います。
基本的な精度は変わりませんが、単語の繋がりの良さに加えて、幾つかの点においてMeCabよりも高い精度が確認されたようです。ですが速度が他に比べて遅いようなので、リアルタイム性が必要な場合はMeCabを利用するのがいいかもしれません。
「一言で言うと」:日本語の高性能な形態素解析器であり、MeCabをも上回る精度かもしれない
動作環境
- OS: Linux ( CentOS 6.7 で動作を確認 )
- 必要メモリ: 4GB 以上
- ディスク容量: 2GB 以上
JUMAN++の導入
それではJUMAN++の導入を始めます。
今回はLinuxにJUMAN++を導入していきます。
macの方はこちらを参考にしてください。
参考にしたサイトはこの二つです。
まずはJUMAN++を利用するための前提パッケージを2つインストールしてください。
- gcc (4.9 以降)
- Boost C++ Libraries (1.57 以降)
※gccはすでにインストール済みの方が多いので心配いりませんが、Boostが1.57以降ではないとエラーが出るので、要注意です。
次はJUMAN++本体をインストールします。
$ wget http://lotus.kuee.kyoto-u.ac.jp/nl-resource/jumanpp/jumanpp-1.01.tar.xz
$ tar xJvf jumanpp-1.01.tar.xz
$ cd jumanpp-1.01
$ ./configure
$ make
$ make install
これでJUMAN++がインストールされました!
デフォルトでは /usr/local/ にインストールされるので、インストール先を指定する場合は./configure
に--prefix=/path オプションを付加してください。
早速試してみます。
$ jumanpp
形態素解析の勉強を始めました
形態 けいたい 形態 名詞 6 普通名詞 1 * 0 * 0 "代表表記:形態/けいたい カテゴリ:形・模様"
素 そ 素 名詞 6 普通名詞 1 * 0 * 0 "代表表記:素/そ 漢字読み:音 カテゴリ:抽象物"
解析 かいせき 解析 名詞 6 サ変名詞 2 * 0 * 0 "代表表記:解析/かいせき カテゴリ:抽象物 ドメイン:教育・学習;科学・技術"
の の の 助詞 9 接続助詞 3 * 0 * 0 NIL
勉強 べんきょう 勉強 名詞 6 サ変名詞 2 * 0 * 0 "代表表記:勉強/べんきょう カテゴリ:抽象物 ドメイン:教育・学習"
を を を 助詞 9 格助詞 1 * 0 * 0 NIL
始め はじめ 始める 動詞 2 * 0 母音動詞 1 基本連用形 8 "代表表記:始める/はじめる 付属動詞候補(基本) 自他動詞:自:始まる/はじまる 反義:動詞:終える/おえる"
ました ました ます 接尾辞 14 動詞性接尾辞 7 動詞性接尾辞ます型 31 タ形 7 "代表表記:ます/ます"
。 。 。 特殊 1 句点 1 * 0 * 0 NIL
EOS
JUMAN++の実行ファイルは jumanppです。私の環境では、インストール先のフォルダ内/binにありました。
JUMAN++でうまく形態素解析されました!
PythonからJUMAN++を利用する
次はPythonからJUMAN++を利用していきます。
JUMAN++はPyKNPを使ってPythonから利用できます。
PyKNPを利用する際に、現在の環境にJUMANとKNPが入っていない場合はこの二つもインストールする必要があります。
以下のサイトを参考にしました。
JUMAN++をPythonから使う
- PyKNP(JUMANとKNPのPythonバインディング)
- JUMAN(形態素解析器)
- KNP(構文解析器)
以上3つのインストール方法は参考サイトで行ってください。
いよいよPythonからJUMAN++を呼び出してみます!
#-*- encoding: utf-8 -*-
from pyknp import Jumanpp
import sys
import codecs
sys.stdin = codecs.getreader('utf_8')(sys.stdin)
sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
# Use Juman++ in subprocess mode
jumanpp = Jumanpp()
result = jumanpp.analysis(u"自然言語処理始めました。")
for mrph in result.mrph_list():
print u"見出し:%s" % (mrph.midasi)
$ python python_jumanpp.py
見出し:自然
見出し:言語
見出し:処理
見出し:始め
見出し:ました
見出し:。
無事にPythonからJUMAN++を利用できました!
以上