30
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JUMAN++の導入からPythonで日本語を形態素解析するまで

Last updated at Posted at 2016-11-09

はじめに

自然言語処理関係のことを行う場合に必ずと言っていい程、形態素解析を用いる必要があります。
日本語を利用できる形態素解析器は「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++を呼び出してみます!

python_jumanpp.py
#-*- 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++を利用できました!

以上

30
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?