Python2系
まずはKNP – KUROHASHI-KAWAHARA LABよりpyknp-0.1.zipをダウンロードしておきます。ダウンロードしたあと、端末を開いてダウンロードしたディレクトリに移動します。あとは、次のコマンドを順に実行すればインストールは完了します。
# zip解凍
unzip pyknp-0.1.zip
# カレントディレクトリの移動
cd ku_nlp-pyknp-a32529dbce0d/
# pyknpのインストール
sudo python setup.py install
pyknpは「/usr/local/lib/python2.7/dist-packages/」配下にインストールされます。
最後にpyknpを試してみます。適当にファイルを作成します。
vim test.py
次の内容を保存して閉じます。
# -*- coding: utf-8 -*-
from pyknp import Juman
juman = Juman()
res = juman.analysis('今日は晴れです')
for mrph in res.mrph_list():
print mrph.midasi
このファイルを実行すると、次のように表示されます。
python test.py
今日
は
晴れ
です
Python3系
まずはKNP – KUROHASHI-KAWAHARA LABよりpyknp-0.1.zipをダウンロードしておきます。ダウンロードしたあと、端末を開いてダウンロードしたディレクトリに移動します。
# zip解凍
unzip pyknp-0.1.zip
# カレントディレクトリの移動
cd ku_nlp-pyknp-a32529dbce0d/
ソースコードをPython2系からPython3系に変更します。
2to3 -w ./
次に、pyknp/juman/juman.pyとpyknp/juman/morpheme.pyを修正します。手動で修正する場合は次のようになります。
pyknp/juman/juman.pyとpyknp/juman/morpheme.pyを手動で修正
pyknp/juman/juman.pyを修正します。
#38行目あたり削除
# subproc_args = {'stdin': subprocess.PIPE, 'stdout': subprocess.PIPE,
# 'stderr': subprocess.STDOUT, 'cwd': '.', 'close_fds' : True}
#追加
subproc_args = {'stdin': subprocess.PIPE, 'stdout': subprocess.PIPE,
'stderr': subprocess.STDOUT, 'cwd': '.', 'close_fds' : True,
'universal_newlines': True}
#54行目あたり削除
# def query(self, sentence, pattern):
# assert(isinstance(sentence, unicode))
# self.process.stdin.write("%s\n" % sentence.encode('utf-8'))
# result = ""
# while True:
# line = self.stdouterr.readline()[:-1]
# if re.search(pattern, line):
# break
# result = "%s%s\n" % (result, line.decode('utf-8'))
# return result
#追加
def query(self, sentence, pattern):
assert(isinstance(sentence, unicode))
outs, errs = self.process.communicate(input="{}\n".format(sentence))
result = ""
for line in outs.split('\n'):
if re.search(pattern, line):
break
result = "%s%s\n" % (result, line)
return result
pyknp/juman/morpheme.pyを修正します。
#15行目あたり削除
# parts = map(lambda s: s.decode('utf-8'), shlex.split(spec.encode('utf-8')))
#追加
parts = [s for s in shlex.split(spec)]
pyknp/juman/juman.pyとpyknp/juman/morpheme.pyをパッチファイルで修正
上記の手動で行った修正をパッチファイルpyknp-0.1-python3.zipにまとめたので、ダウンロードして解凍します。
unzip pyknp-0.1-python3.zip
解凍したしたpyknp-0.1-python3.diffをku_nlp-pyknp-a32529dbce0d/ディレクトリに移動しておきます。
パッチファイルを適用します。
patch -p1 < pyknp-0.1-python3.diff
インストール
インストールは次のコマンド実行します。このpyknpは「/usr/local/lib/python3.4/dist-packages/」配下にインストールされます。
sudo python3 setup.py install
最後にpyknpをPython3で試してみます。適当にファイルを作成します。
vim test.py
次の内容を保存して閉じます。
# -*- coding: utf-8 -*-
from pyknp import Juman
juman = Juman()
res = juman.analysis('今日は晴れです')
for mrph in res.mrph_list():
print(mrph.midasi)
このファイルを実行すると、次のように表示されます。
python3 test.py
今日
は
晴れ
です