Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

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

比較対象はJanome。

サンプルテキスト

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

https://ja.wikipedia.org/wiki/原子力発電

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

Janome

https://mocobeta.github.io/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

https://megagonlabs.github.io/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は「経済産業省」という一つの単語として認識していました。

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

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

mix_dvd
ExcelのマクロやWebアプリケーション、iOSアプリを作っています。 また、しまねソフト研究開発センター専門研究員の業務を受託しています。http://www.s-itoc.jp
http://blueomega.jp
s-itoc
しまねソフト研究開発センター(ITOC)はITを活用する企業の支援と研究開発の拠点です。
http://www.s-itoc.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした