콘텐츠로 이동

Tokenize vs AnalyzeSyntax

Tokenize와 AnalyzeSyntax의 차이와 사용 시점

바른LanguageService에는 분절에 초점을 둔 Tokenize와, 품사 태깅까지 수행하는 AnalyzeSyntax가 함께 있습니다. 두 메서드는 같은 입력 문서를 받지만, "어디까지 분석해서 돌려주느냐"가 다릅니다.

이 문서는 두 메서드의 차이와, 각각을 언제 쓰면 좋은지를 정리합니다.

무엇이 다른가요

바른의 분석은 분절(Segmenter) → 품사 태깅(PosTagger) → 후처리의 단계로 흐릅니다. Tokenize는 형태소 분석이 아니라 단어만 분리하는 데 집중하므로, 47품사 체계가 아닌 8성분 체계(N 체언 / V 용언 / A 부사 / M 관형어 / J 조사 / E 어미 / S 기호 / I 감탄사)로 토큰을 표시합니다. 반면 AnalyzeSyntax는 47품사 태깅과 형태소 단위 결과까지 모두 돌려줍니다.

graph LR
  IN[입력 문장] --> SEG[분절 Segmenter]
  SEG --> TK[Tokenize: 어절/토큰]
  SEG --> TAG[품사 태깅 PosTagger]
  TAG --> AS[AnalyzeSyntax: 형태소+47품사]
항목 Tokenize AnalyzeSyntax
핵심 결과 어절·토큰 분절(단어 분리) 문장→어절→형태소(47품사)
분류 체계 8성분(N/V/A/M/J/E/S/I) 47품사
품사 태그 초점 아님 형태소마다 tag 부여
확신도(probability) 형태소별 제공
단어 출처(out_of_vocab) 제공
처리 비용 상대적으로 가벼움 태깅까지 수행

언제 무엇을 쓰나요

  • Tokenize가 적합한 경우: 검색 색인용 토큰화, 어절 경계 확인, 빠른 전처리처럼 "품사까지는 필요 없고 잘게 나누면 되는" 작업.
  • AnalyzeSyntax가 적합한 경우: 명사만 추출, 동사·형용사 분석, 품사 기반 필터링, 형태소별 위치·확신도가 필요한 분석 등 대부분의 본격 NLP 작업.
from bareunpy import Tagger

tagger = Tagger("koba-XXXX-...", host="api.bareun.ai", port=443)
res = tagger.tags(["오늘 날씨가 참 좋네요."])
# 명사(NNG/NNP)만 골라냅니다.
for sent in res.msg().sentences:
    for token in sent.tokens:
        for m in token.morphemes:
            if m.tag in ("NNG", "NNP"):
                print(m.text.content, m.tag, m.probability)
from bareunpy import Tagger

tagger = Tagger("koba-XXXX-...", host="api.bareun.ai", port=443)
# 어절/토큰 단위 분절 결과를 얻습니다.
res = tagger.tokenize_list(["오늘 날씨가 참 좋네요."])
print(res)

둘 다 같은 분절 모델을 씁니다

TokenizeAnalyzeSyntax는 같은 분절 모델(seg-model.onnx)을 공유합니다. AnalyzeSyntax는 그 뒤에 품사 태깅 모델(tag-model.onnx)을 한 단계 더 돌립니다. 그래서 분절 결과는 일관되며, 품사가 필요할 때만 AnalyzeSyntax를 쓰시면 됩니다.

자주 묻는 질문

Q. 품사가 필요 없으면 Tokenize가 더 빠른가요?

품사 태깅 단계를 거치지 않으므로 일반적으로 더 가볍습니다. 검색 색인·전처리처럼 품사 정보가 필요 없는 작업에서는 Tokenize가 적합합니다.

Q. 명사만 추출하려면 어떤 메서드를 쓰나요?

AnalyzeSyntax를 쓰고, 형태소의 tagNNG(일반명사)·NNP(고유명사)인 것만 골라내면 됩니다. 품사 태그는 AnalyzeSyntax에서만 제공됩니다.

Q. 두 메서드의 분절 결과가 다를 수 있나요?

분절은 같은 모델을 사용하므로 일관됩니다. 차이는 그 뒤 품사 태깅을 수행하는지 여부입니다.

Q. Tokenize는 47품사를 그대로 돌려주나요?

아닙니다. Tokenize는 형태소 분석이 아니라 단어만 분리하므로, 47품사가 아닌 8성분 체계(N 체언 / V 용언 / A 부사 / M 관형어 / J 조사 / E 어미 / S 기호 / I 감탄사)로 토큰을 분류합니다. 47품사 형태소 태그가 필요하면 AnalyzeSyntax를 사용하세요.

도움이 되었나요?