11
9

More than 5 years have passed since last update.

NLP(自然言語処理)ライブラリGiNZAとJanomeを比較してみた。

Last updated at Posted at 2019-05-03

はじめに

つい先日GiNZAというNLPライブラリが公開されたので、既存のライブラリと性能を比較してみました。

比較対象はJanome。

サンプルテキスト

比較に用いた文字列はWikipediaにある原子力発電のページ

上記のページでページ全体を選択してコピペして利用しました。

Janome

インストールは以下のコマンドを実行。

pip install janome

テストコードは以下のとおり。

from time import time

txt = """

原子力発電
出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動検索に移動
〜中略〜
最終更新 2019年4月30日 (火) 14:38 (日時は個人設定で未設定ならばUTC)。
テキストはクリエイティブ・コモンズ 表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。
プライバシー・ポリシーウィキペディアについて免責事項開発者Cookieに関する声明モバイルビュー
Wikimedia Foundation Powered by MediaWiki
"""

t1 = time()

from janome.tokenizer import Tokenizer

t2 = time()

t = Tokenizer()
tokens = t.tokenize(txt.replace(' ',' '))

t_janome = ""
i = 0

for token in tokens:
    if token.surface != "\n":
        t_janome += " " + token.surface
        i += 1

print(i, time() - t1, time() - t2)

実行結果は以下のとおり。

27935, 3.574777126312256, 3.574641227722168

検出した形態素は27,935個で、経過時間は3.57秒。

GiNZA

インストールは以下のコマンドを実行。

pip install "https://github.com/megagonlabs/ginza/releases/download/v1.0.2/ja_ginza_nopn-1.0.2.tgz"

テストコードは以下のとおり。

from time import time

txt = """

原子力発電
出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動検索に移動
〜中略〜
最終更新 2019年4月30日 (火) 14:38 (日時は個人設定で未設定ならばUTC)。
テキストはクリエイティブ・コモンズ 表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。
プライバシー・ポリシーウィキペディアについて免責事項開発者Cookieに関する声明モバイルビュー
Wikimedia Foundation Powered by MediaWiki
"""

t1 = time()

import spacy

nlp = spacy.load('ja_ginza_nopn')

t2 = time()

doc = nlp(txt)

t_ginza = ""
i = 0

for sent in doc.sents:

    for token in sent:

        if token.orth_ != "\n":
            t_ginza += " " + token.orth_
            i += 1

print(i, time() - t1, time() - t2)

実行結果は以下のとおり。

25665, 18.349574089050293, 17.297925233840942

検出した形態素は25,665個で、経過時間は18.34秒。

考察

圧倒的にJanomeが早いです。
ただ、単語の分析はGiNZAの方が良いような印象をうけました。

例えば、「経済産業省」という単語をJanomeは「経済 産業 省」と分けましたが、GiNZAは「経済産業省」という一つの単語として認識していました。

文章に依存する話ではありますが、目的に応じて使い分けると良いかなと感じます。

ということで、次は何するかな(^-^)

11
9
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
11
9