95
68

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-10-19

はじめに

JUMAN++は黒橋・河原研究室から発表されたRNNを使用した形態素解析器です.
本記事ではPythonラッパーを通じてJUMAN++を使用する方法を紹介します.
単純にJUMAN(形態素解析器),KNP(構文解析器),PyKNP(JUMANとKNPのPythonバインディング)のインストール方法なので,これらの導入の参考にもなるかと思います.

導入方法

JUMAN++はPyKNPを通じて利用することができます.
PyKNPはJUMANとKNPに依存しているため,まず先にこれらをインストールしていきます.

前提

  • ubuntu-16.04
  • こちらを参考にJUMAN++をインストールしていること

JUMANのインストール

まず以下のコマンドでJUMANをインストールします.

$ wget http://nlp.ist.i.kyoto-u.ac.jp/nl-resource/juman/juman-7.01.tar.bz2
$ tar jxvf juman-7.01.tar.bz2
$ cd juman-7.01
$ ./configure
$ make
$ sudo make install

このままではパスが通っていないので,以下の通りパスを通していきます.

$ sudo vim /etc/ld.so.conf

ファイルが開けたら以下を追記します.

include /usr/local/lib

以下のコマンドでパスを読み込み直します.

$ sudo ldconfig

バージョンが確認できたらインストールに成功しています.

$ juman -v
juman 7.01

KNPのインストール

次にKNPをインストールします.
環境によっては解凍に時間がかかりますが,終わるまで待ちます.

$ wget http://nlp.ist.i.kyoto-u.ac.jp/nl-resource/knp/knp-4.16.tar.bz2
$ tar jxvf knp-4.16.tar.bz2
$ cd knp-4.16
$ ./configure
$ make
$ sudo make install

インストール完了です.
ついでに動作確認も行います.

$ echo "外国人参政権" | jumanpp | knp
# S-ID:1 KNP:4.16-CF1.1 DATE:2016/10/19 SCORE:-1.20047
外国──┐
          人──┐
                参政──┐
                          権
EOS

構文解析できました.
(jumanppの部分はjumanでも構いません)

PyKNPのインストール

前提環境ではsetuptoolsがインストールされていないため,以下の通りsetuptools(とpip)をインストールします.
ついでに,PyKNPの依存ライブラリsixも入れています.

$ sudo apt install python-pip
$ pip install six

以下のようにPyKNPをインストールします.

$ wget http://nlp.ist.i.kyoto-u.ac.jp/nl-resource/knp/pyknp-0.3.tar.gz
$ tar xvf pyknp-0.3.tar.gz
$ cd pyknp-0.3
$ sudo python setup.py install

完了です.

サンプルプログラム

では,PythonからJUMAN++を使用してみます.
以下のようなプログラムを作成します.

test.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)
# JUMAN++をsubprocessモードで使用
jumanpp = Jumanpp()
result = jumanpp.analysis(u"ケーキを食べる")
for mrph in result.mrph_list():
	print(u"見出し:{0}".format(mrph.midasi))
$ python test.py
見出し:ケーキ
見出し:を
見出し:食べる

PythonからJUMAN++を呼び出せました.

参考

JUMAN++ マニュアル v1.01
http://lotus.kuee.kyoto-u.ac.jp/nl-resource/jumanpp/jumanpp-manual-1.01.pdf
Ubuntu 日本語形態素解析システムJUMANのインストール方法
http://www.trifields.jp/how-to-install-juman-in-ubuntu-1404-1375
Ubuntu 日本語構文・格・照応解析システムKNPのインストール方法
http://www.trifields.jp/how-to-install-knp-in-ubuntu-1404-1382

95
68
2

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
95
68

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?