ja-ginza와 ja-ginza-electra의 속도 비교

6444 단어 속도 비교GiNZA
개요
일본어 NLP 라이브러리 GINZA가 발표한 ja-ginza-electra 모델에서는 기존ja-ginza에 비해 정밀도가 높아졌다.

(출처: https://megagonlabs.github.io/ginza/
다만, 속도 면에서 얼마나 차이가 나는지를 의식해 이 기사에서 둘의 속도를 비교했다.
차리다python = "^3.9" pip install ja-ginza = "^5.0.0" pip install ja-ginza-electra = "^5.0.0"코드
검증을 위해 다음 코드를 준비했습니다.
각 모델에 대해 영패화를 실시하여 각각 이때 걸린 초수를 측정한다.
main.py
import time

import spacy


def use_ja_ginza(text, cache=None):
    nlp = spacy.load('ja_ginza') if cache is None else cache
    [token for token in nlp(text)]
    return nlp


def use_ja_ginza_electra(text, cache=None):
    nlp = spacy.load('ja_ginza_electra') if cache is None else cache
    [token for token in nlp(text)]
    return nlp


def stopwatch(func, times=100):
    # 桃太郎 芥川龍之介 https://www.aozora.gr.jp/cards/000879/card100.html
    s = 'むかし、むかし、大むかし、ある深い山の奥に大きい桃《もも》の木が一本あった。大きいとだけではいい足りないかも知れない。この桃の枝は雲の上にひろがり、この桃の根は大地《だいち》の底の黄泉《よみ》の国にさえ及んでいた。何でも天地|開闢《かいびゃく》の頃《ころ》おい、伊弉諾《いざなぎ》の尊《みこと》は黄最津平阪《よもつひらさか》に八《やっ》つの雷《いかずち》を却《しりぞ》けるため、桃の実《み》を礫《つぶて》に打ったという、――その神代《かみよ》の桃の実はこの木の枝になっていたのである。'
    time_s = time.perf_counter()
    cache = None
    for i in range(times):
        cache = func(s, cache)
    time_e = time.perf_counter()
    return time_e - time_s


def main():
    d = {
        'ja-ginza': stopwatch(use_ja_ginza),
        'ja-ginza-electra': stopwatch(use_ja_ginza_electra)
    }
    d = sorted(d.items(), key=lambda x: x[1])
    print('\n'.join(map(str, d)))


if __name__ == '__main__':
    main()
결실
그 결과 ja-ginza-electraja-ginza보다 4배 느렸다.
$ python main.py
('ja-ginza', 6.013060999999652)
('ja-ginza-electra', 22.437576700000136)
총결산
정밀도는 높아졌지만 속도는 상당히 느린 것 같다.
선택ja-ginza-electra시 참고가 되었으면 합니다.

좋은 웹페이지 즐겨찾기