콘텐츠로 이동

LanguageService 메서드 한눈에

LanguageService 메서드 한눈에 (Tokenize/AnalyzeSyntax/AnalyzeSyntaxList/AnalyzeSyntaxRaw)

바른의 형태소 분석은 LanguageService 하나에 모두 들어 있습니다. 이 서비스는 Tokenize, AnalyzeSyntax, AnalyzeSyntaxList, AnalyzeSyntaxRaw 네 메서드를 제공합니다. 네 메서드는 같은 모델을 쓰지만, 분석 깊이·입력 형태·후처리 적용 여부가 조금씩 다릅니다.

이 문서는 네 메서드의 입력·출력·용도를 한 표로 정리해, 상황에 맞는 메서드를 빠르게 고를 수 있도록 돕습니다.

네 메서드 비교

메서드 입력 출력 핵심 문장 분할 후처리 대표 용도
Tokenize 단일 문서(Document) 어절·토큰 분절 결과 옵션 분절·토큰화만 필요할 때
AnalyzeSyntax 단일 문서(Document) 문장→어절→형태소(47품사) auto_split_sentence 복합명사·동사 분해, 자동 띄어쓰기·붙여쓰기 전체 형태소 분석
AnalyzeSyntaxList 문장 배열(sentences[]) 입력 순서대로 문장별 분석 분할 안 함 복합명사·동사 분해, 자동 띄어쓰기·붙여쓰기 배치·순서/위치 추적
AnalyzeSyntaxRaw 단일 문서(Document) 순수 모델 추론 결과 auto_split_sentence 없음 모델 성능 평가, BigKinds 재태깅, WSD

공통 요청 옵션

각 메서드별로 지원하는 옵션입니다.

옵션 AnalyzeSyntax AnalyzeSyntaxList AnalyzeSyntaxRaw Tokenize
encoding_type
auto_split_sentence
auto_spacing
auto_jointing
custom_dict_names

AnalyzeSyntaxRaw의 사용자 사전·띄어쓰기 옵션

AnalyzeSyntaxRaw는 순수 모델 출력을 보장하기 위해 custom_dict_names, auto_spacing, auto_jointing을 지원하지 않습니다. auto_split_sentence만 작동합니다.

호출 흐름

graph TD
  D[입력 텍스트] --> C{무엇이 필요한가?}
  C -->|분절/토큰만| TK[Tokenize]
  C -->|품사까지 단일 문서| AS[AnalyzeSyntax]
  C -->|문장 배열·순서 유지| AL[AnalyzeSyntaxList]
  C -->|순수 모델 출력 후처리 없이| AR[AnalyzeSyntaxRaw]
  AS --> R[Sentence → Token → Morpheme]
  AL --> R
  AR --> R

응답 구조

AnalyzeSyntax·AnalyzeSyntaxList·AnalyzeSyntaxRaw의 응답은 동일한 계층 구조입니다. 문장(Sentence)은 어절(Token)의 배열이고, 어절은 형태소(Morpheme)의 배열입니다. 각 조각은 위치 정보를 담은 TextSpan(content, begin_offset, length)으로 표현됩니다.

service LanguageService {
  rpc AnalyzeSyntax(AnalyzeSyntaxRequest) returns (AnalyzeSyntaxResponse);
  rpc AnalyzeSyntaxList(AnalyzeSyntaxListRequest) returns (AnalyzeSyntaxListResponse);
  rpc AnalyzeSyntaxRaw(AnalyzeSyntaxRawRequest) returns (AnalyzeSyntaxResponse);
  rpc Tokenize(TokenizeRequest) returns (TokenizeResponse);
}
  • Morpheme에는 형태(text), 태그(tag, 47품사), 확신도(probability), 단어 출처(out_of_vocab), 사용된 사전 이름(custom_dict_name)이 담깁니다.
  • Sentence.refined는 띄어쓰기 등을 보정한 결과 문장을 담습니다. (AnalyzeSyntaxRaw는 후처리를 하지 않으므로 이 값이 비어 있을 수 있습니다.)

네 메서드는 같은 모델을 씁니다

네 메서드 모두 분절(seg-model.onnx)·품사 태깅(tag-model.onnx) 같은 모델을 사용합니다. 차이는 "입력을 어떻게 받고, 결과를 어디까지 돌려주느냐"입니다. 그래서 메서드를 바꿔도 분석 품질은 동일하지만, AnalyzeSyntaxRaw는 복합명사·복합동사 분해가 없으므로 AnalyzeSyntax보다 토큰 수가 적을 수 있습니다.

자주 묻는 질문

Q. AnalyzeSyntax와 AnalyzeSyntaxList는 무엇이 다른가요?

AnalyzeSyntax는 단일 문서를 받아 내부에서 문장을 분할(auto_split_sentence)할 수 있습니다. AnalyzeSyntaxList는 이미 나뉜 문장 배열을 받아 입력 순서를 그대로 유지합니다. 입력 문장의 순서·위치 추적이 중요하면 AnalyzeSyntaxList가 적합합니다.

Q. Tokenize만으로 품사를 알 수 있나요?

Tokenize는 분절·토큰화에 초점이 있습니다. 47품사 형태소 분석 결과가 필요하면 AnalyzeSyntaxAnalyzeSyntaxList를 사용하세요.

Q. 사용자 사전은 모든 메서드에서 쓸 수 있나요?

custom_dict_namesAnalyzeSyntax·AnalyzeSyntaxList 요청에만 지정할 수 있습니다. AnalyzeSyntaxRaw는 순수 모델 출력이 목적이므로 사용자 사전을 지원하지 않습니다.

Q. AnalyzeSyntaxRaw는 언제 쓰나요?

복합명사·복합동사 분해나 자동 띄어쓰기 없이 모델이 출력한 그대로를 받아야 할 때 씁니다. 대표 사례는 모델 성능 평가, BigKinds 대용량 말뭉치 재태깅, WSD(단어 의미 중의성 해소) 파이프라인입니다.

도움이 되었나요?