-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #12 from Kensuke-Mitsuzawa/0.2
0.2
- Loading branch information
Showing
15 changed files
with
1,000 additions
and
368 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
language: python | ||
python: | ||
- 2.7 | ||
- 3.5 | ||
addons: | ||
apt: | ||
packages: | ||
- git | ||
- make | ||
- curl | ||
- xz-utils | ||
- file | ||
- pandoc | ||
- libboost-all-dev | ||
- language-pack-ja-base | ||
- language-pack-ja | ||
- ibus-mozc | ||
- gcc-5 | ||
- g++-5 | ||
- build-essential | ||
sources: | ||
- ubuntu-toolchain-r-test | ||
before_install: | ||
- sudo apt-get update -qq | ||
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 1 | ||
- sudo update-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja" | ||
- mkdir ./target | ||
- export CC="gcc-5" | ||
- export CXX="g++-5" | ||
- export CFLAGS=-std=c++11 | ||
- export CXXFLAGS=-std=c++11 | ||
- sudo make install | ||
- sudo juman -S | ||
install: | ||
- python --version | ||
- python setup.py install | ||
- pip install coveralls coverage nose | ||
script: | ||
- coverage run --source=knp_utils setup.py test | ||
- python example.py | ||
after_success: | ||
- coveralls | ||
notifications: | ||
email: | ||
recipients: | ||
- [email protected] | ||
on_success: always | ||
on_failure: always |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
Copyright 2017 Kensuke Mitsuzawa | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
install: | ||
bash install_tools.sh | ||
|
||
install_neologd: | ||
## mecab-neologdのインストールを実行 | ||
wget --no-check-certificate https://github.com/neologd/mecab-ipadic-neologd/tarball/master -O mecab-ipadic-neologd.tar | ||
tar -xvf mecab-ipadic-neologd.tar | ||
mv neologd-mecab-ipadic-neologd-* neologd-mecab-ipadic-neologd && cd neologd-mecab-ipadic-neologd && ( echo yes | ./bin/install-mecab-ipadic-neologd ) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,44 +1,127 @@ | ||
#! -*- coding: utf-8 -*- | ||
from knp_utils import knp_job, models | ||
from knp_utils import knp_job, models, KnpSubProcess | ||
import six | ||
import logging | ||
logger = logging.getLogger('command') | ||
|
||
argument_param = models.Params( | ||
n_jobs=1, | ||
knp_command='/usr/local/bin/knp', | ||
juman_command='/usr/local/bin/juman' | ||
) | ||
|
||
if six.PY2: | ||
input_document = [ | ||
{u"text-id": u"input-1", u"text": u"東京 3日 ロイター] - 日銀は3日、急激な金利上昇を止めるため、特定の年限の国債買い入れを増やす「指値オペ」を実施した。トランプ米大統領による円安誘導批判を受け、日銀が長期金利を押し下げるようなオペは難しくなるとの思惑が浮上。長期金利は3日、一時、0.15%を超えて上昇した。日銀は、指し値オペの実行によってゼロ%に抑える政策に変化がないことを明確にし、圧力を意識した市場に「強い意思」を示した格好だ。"}, | ||
{u"text-id": u"input-2", u"text": u"指値オペの実施は現在の金融政策「長短金利操作(イールドカーブ・コントロール、YCC)」を開始した2016年9月以来、2度目となる。"}, | ||
{u"text-id": u"input-3", u"text": u"ドナルド・トランプ米大統領が有権者の心をつかんだ理由の一つは、その率直な物言いだ。ドルに関して言えば、米国の歴代財務長官が昔から繰り返してきた「強いドルは米国の国益にかなう」という妄言と決別するという新政権の意向は歓迎されよう。"}, | ||
] | ||
else: | ||
input_document = [ | ||
{"text-id": "input-1", "text": "東京 3日 ロイター] - 日銀は3日、急激な金利上昇を止めるため、特定の年限の国債買い入れを増やす「指値オペ」を実施した。トランプ米大統領による円安誘導批判を受け、日銀が長期金利を押し下げるようなオペは難しくなるとの思惑が浮上。長期金利は3日、一時、0.15%を超えて上昇した。日銀は、指し値オペの実行によってゼロ%に抑える政策に変化がないことを明確にし、圧力を意識した市場に「強い意思」を示した格好だ。"}, | ||
{"text-id": "input-2", "text": "指値オペの実施は現在の金融政策「長短金利操作(イールドカーブ・コントロール、YCC)」を開始した2016年9月以来、2度目となる。"}, | ||
{"text-id": "input-3", "text": "ドナルド・トランプ米大統領が有権者の心をつかんだ理由の一つは、その率直な物言いだ。ドルに関して言えば、米国の歴代財務長官が昔から繰り返してきた「強いドルは米国の国益にかなう」という妄言と決別するという新政権の意向は歓迎されよう。"}, | ||
] | ||
|
||
result_obj = knp_job.main(seq_input_dict_document=input_document, | ||
argument_params=argument_param, | ||
is_normalize_text=True, | ||
is_get_processed_doc=True) | ||
|
||
import json | ||
print(json.dumps(result_obj.to_dict(), ensure_ascii=False)) | ||
|
||
### With pyknp | ||
try: | ||
import pyknp | ||
except: | ||
import pip | ||
pip.main(['install', 'http://nlp.ist.i.kyoto-u.ac.jp/DLcounter/lime.cgi?down=http://lotus.kuee.kyoto-u.ac.jp/nl-resource/pyknp/pyknp-0.3.tar.gz&name=pyknp-0.3.tar.gz']) | ||
else: | ||
from pyknp import KNP | ||
knp_obj = KNP() | ||
for knp_parsed_obj in result_obj.seq_document_obj: | ||
pyknp_parsed_result = knp_obj.result(input_str=knp_parsed_obj.parsed_result) | ||
bnst_surface = ["".join(mrph.midasi for mrph in bnst_obj.mrph_list()) for bnst_obj in pyknp_parsed_result.bnst_list()] | ||
print(bnst_surface) | ||
|
||
#PATH_JUMAN_COMMAND="/usr/local/bin/juman" | ||
#PATH_JUMAN_COMMAND="/usr/local/bin/jumanpp" | ||
#PATH_KNP_COMMAND="/usr/local/bin/knp" | ||
PATH_JUMAN_COMMAND="juman" | ||
PATH_KNP_COMMAND="knp" | ||
|
||
|
||
def example_interface(): | ||
"""This functions shows you how to use interface function""" | ||
if six.PY2: | ||
input_document = [ | ||
{u"text-id": u"input-1", u"text": "おじいさんは山に芝刈りへ、おばあさんは川に洗濯へ行きました。"}, | ||
{u"text-id": u"input-2", u"text": u"東京 3日 ロイター] - 日銀は3日、急激な金利上昇を止めるため、特定の年限の国債買い入れを増やす「指値オペ」を実施した。トランプ米大統領による円安誘導批判を受け、日銀が長期金利を押し下げるようなオペは難しくなるとの思惑が浮上。長期金利は3日、一時、0.15%を超えて上昇した。日銀は、指し値オペの実行によってゼロ%に抑える政策に変化がないことを明確にし、圧力を意識した市場に「強い意思」を示した格好だ。"}, | ||
{u"text-id": u"input-3", u"text": u"指値オペの実施は現在の金融政策「長短金利操作(イールドカーブ・コントロール、YCC)」を開始した2016年9月以来、2度目となる。"}, | ||
{u"text-id": u"input-4", u"text": u"ドナルド・トランプ米大統領が有権者の心をつかんだ理由の一つは、その率直な物言いだ。ドルに関して言えば、米国の歴代財務長官が昔から繰り返してきた「強いドルは米国の国益にかなう」という妄言と決別するという新政権の意向は歓迎されよう。"}, | ||
] | ||
else: | ||
input_document = [ | ||
{"text-id": "input-1","text": "おじいさんは山に芝刈りへ、おばあさんは川に洗濯へ行きました。"}, | ||
{"text-id": "input-2", "text": "東京 3日 ロイター] - 日銀は3日、急激な金利上昇を止めるため、特定の年限の国債買い入れを増やす「指値オペ」を実施した。トランプ米大統領による円安誘導批判を受け、日銀が長期金利を押し下げるようなオペは難しくなるとの思惑が浮上。長期金利は3日、一時、0.15%を超えて上昇した。日銀は、指し値オペの実行によってゼロ%に抑える政策に変化がないことを明確にし、圧力を意識した市場に「強い意思」を示した格好だ。"}, | ||
{"text-id": "input-3", "text": "指値オペの実施は現在の金融政策「長短金利操作(イールドカーブ・コントロール、YCC)」を開始した2016年9月以来、2度目となる。"}, | ||
{"text-id": "input-4", "text": "ドナルド・トランプ米大統領が有権者の心をつかんだ理由の一つは、その率直な物言いだ。ドルに関して言えば、米国の歴代財務長官が昔から繰り返してきた「強いドルは米国の国益にかなう」という妄言と決別するという新政権の意向は歓迎されよう。"}, | ||
] | ||
|
||
result_obj = knp_job.main(seq_input_dict_document=input_document, | ||
n_jobs=-1, | ||
is_normalize_text=True, | ||
is_get_processed_doc=True, | ||
juman_command=PATH_JUMAN_COMMAND, # Note: You can set jumanpp also (if it's available in your system) | ||
knp_command=PATH_KNP_COMMAND, | ||
process_mode="pexpect") | ||
|
||
import json | ||
logger.info(msg="--- example of parsed result ---") | ||
print(json.dumps(result_obj.to_dict()[0], ensure_ascii=False)) | ||
logger.info('---') | ||
|
||
"""You call get associated with pyknp which is official python wrapper for KNP""" | ||
### With pyknp | ||
try: | ||
import pyknp | ||
except: | ||
import pip | ||
try: | ||
pip.main(['install', 'http://nlp.ist.i.kyoto-u.ac.jp/DLcounter/lime.cgi?down=http://lotus.kuee.kyoto-u.ac.jp/nl-resource/pyknp/pyknp-0.3.tar.gz&name=pyknp-0.3.tar.gz']) | ||
except: | ||
logger.error(msg="Failed to install pyknp. Skip this process.") | ||
else: | ||
from pyknp import KNP | ||
knp_obj = KNP() | ||
for knp_parsed_obj in result_obj.seq_document_obj: | ||
pyknp_parsed_result = knp_obj.result(input_str=knp_parsed_obj.parsed_result) | ||
bnst_surface = ["".join(mrph.midasi for mrph in bnst_obj.mrph_list()) for bnst_obj in pyknp_parsed_result.bnst_list()] | ||
print(bnst_surface) | ||
|
||
|
||
def performance_comparison(): | ||
"""This function shows you comparison of processing speed""" | ||
if six.PY2: | ||
input_document = [ | ||
{u"text-id": u"input-1", u"text": "おじいさんは山に芝刈りへ、おばあさんは川に洗濯へ行きました。"}, | ||
{u"text-id": u"input-2", u"text": u"東京 3日 ロイター] - 日銀は3日、急激な金利上昇を止めるため、特定の年限の国債買い入れを増やす「指値オペ」を実施した。トランプ米大統領による円安誘導批判を受け、日銀が長期金利を押し下げるようなオペは難しくなるとの思惑が浮上。長期金利は3日、一時、0.15%を超えて上昇した。日銀は、指し値オペの実行によってゼロ%に抑える政策に変化がないことを明確にし、圧力を意識した市場に「強い意思」を示した格好だ。"}, | ||
{u"text-id": u"input-3", u"text": u"指値オペの実施は現在の金融政策「長短金利操作(イールドカーブ・コントロール、YCC)」を開始した2016年9月以来、2度目となる。"}, | ||
{u"text-id": u"input-4", u"text": u"ドナルド・トランプ米大統領が有権者の心をつかんだ理由の一つは、その率直な物言いだ。ドルに関して言えば、米国の歴代財務長官が昔から繰り返してきた「強いドルは米国の国益にかなう」という妄言と決別するという新政権の意向は歓迎されよう。"}, | ||
] * 10 | ||
else: | ||
input_document = [ | ||
{"text-id": "input-1","text": "おじいさんは山に芝刈りへ、おばあさんは川に洗濯へ行きました。"}, | ||
{"text-id": "input-2", "text": "東京 3日 ロイター] - 日銀は3日、急激な金利上昇を止めるため、特定の年限の国債買い入れを増やす「指値オペ」を実施した。トランプ米大統領による円安誘導批判を受け、日銀が長期金利を押し下げるようなオペは難しくなるとの思惑が浮上。長期金利は3日、一時、0.15%を超えて上昇した。日銀は、指し値オペの実行によってゼロ%に抑える政策に変化がないことを明確にし、圧力を意識した市場に「強い意思」を示した格好だ。"}, | ||
{"text-id": "input-3", "text": "指値オペの実施は現在の金融政策「長短金利操作(イールドカーブ・コントロール、YCC)」を開始した2016年9月以来、2度目となる。"}, | ||
{"text-id": "input-4", "text": "ドナルド・トランプ米大統領が有権者の心をつかんだ理由の一つは、その率直な物言いだ。ドルに関して言えば、米国の歴代財務長官が昔から繰り返してきた「強いドルは米国の国益にかなう」という妄言と決別するという新政権の意向は歓迎されよう。"}, | ||
] * 10 | ||
import time | ||
## process_mode is pexpect(multi-thread, keep running processes) ## | ||
start = time.time() | ||
knp_job.main(seq_input_dict_document=input_document, | ||
n_jobs=-1, | ||
process_mode='pexpect', | ||
is_normalize_text=True, | ||
is_get_processed_doc=True, | ||
juman_command=PATH_JUMAN_COMMAND, | ||
knp_command=PATH_KNP_COMMAND) | ||
elapsed_time = time.time() - start | ||
print("pexpect mode, finished with :{0}".format(elapsed_time) + "[sec]") | ||
|
||
## process_mode is everytime(multi-thread, launch processes everytime you call) ## | ||
start = time.time() | ||
knp_job.main(seq_input_dict_document=input_document, | ||
n_jobs=-1, | ||
process_mode='everytime', | ||
is_normalize_text=True, | ||
is_get_processed_doc=True, | ||
juman_command=PATH_JUMAN_COMMAND, | ||
knp_command=PATH_KNP_COMMAND) | ||
elapsed_time = time.time() - start | ||
print("everytime mode, finished with :{0}".format(elapsed_time) + "[sec]") | ||
|
||
## pyknp which is official KNP wrapper ## | ||
### With pyknp | ||
try: | ||
import pyknp | ||
except: | ||
import pip | ||
try: | ||
pip.main(['install', 'http://nlp.ist.i.kyoto-u.ac.jp/DLcounter/lime.cgi?down=http://lotus.kuee.kyoto-u.ac.jp/nl-resource/pyknp/pyknp-0.3.tar.gz&name=pyknp-0.3.tar.gz']) | ||
except: | ||
logger.error(msg="Failed to install pyknp. Skip this process.") | ||
else: | ||
start = time.time() | ||
from pyknp import KNP | ||
knp_obj = KNP(command=PATH_KNP_COMMAND, jumancommand=PATH_JUMAN_COMMAND) | ||
for document_obj in input_document: | ||
knp_obj.knp(sentence=knp_job.func_normalize_text(document_obj['text'])) | ||
elapsed_time = time.time() - start | ||
print("pyknp, finished with :{0}".format(elapsed_time) + "[sec]") | ||
|
||
|
||
if __name__=='__main__': | ||
performance_comparison() | ||
example_interface() |
Oops, something went wrong.