오프라인 사용과 배치 처리

오프라인 사용과 배치 처리

인터넷이 끊긴 환경이나 반복 실행 시에는 모델을 미리 받아두고 파이프라인이 다운로드하지 않게 막을 수 있어요. stanza.download()Pipeline과 같은 인터페이스로 모델을 내려받고, Pipeline에는 다운로드를 끄는 플래그가 있어요.

import stanza
stanza.download('zh', processors='tokenize,pos')
nlp = stanza.Pipeline('zh', processors='tokenize,pos', download_method=None)

1.4.0부터는 DownloadMethod 열거형으로 다운로드 방식을 정할 수 있어요.

from stanza.pipeline.core import DownloadMethod
nlp = stanza.Pipeline('zh', processors='tokenize,pos', download_method=DownloadMethod.REUSE_RESOURCES)

성능을 최대로 끌어내려면 한 번에 하나씩 도는 반복문 대신 문서를 배치로 처리해야 해요. 여러 문서를 스탠자 문서 리스트로 만들어 한 번에 파이프라인에 넣으면 결과도 리스트로 돌아와요.

nlp = stanza.Pipeline(lang="en")
documents = [
    "This is a test document.",
    "I wrote another document for fun.",
]
in_docs = [stanza.Document([], text=d) for d in documents]
out_docs = nlp(in_docs)
print(out_docs[1])

특히 GPU 환경이라면 문서를 병렬 처리해서 훨씬 효율적이에요. 줄바꿈 두 번(\n\n)으로 구분된 텍스트 조각은 스탠자가 나눠 병렬 처리해요.

더 알아보기