콘텐츠로 이동
Text 문서0.2

일본어 토크나이저 라이브러리

최신 안정판 Text 0.2.1 릴리스 기준

tokenizer-japanese는 Kuromoji IPAdic을 JapaneseProcessor로 감싼다. 형태소 분석, 품사 판정과 필터, 복합어를 고려한 금칙어 탐지·마스킹, 런타임 사전 관리를 제공한다.

  • TokenBase를 반환하는 Kuromoji IPAdic 토큰화
  • filterNoun과 predicate 기반 filter
  • isNoun, isVerb, isNounOrVerb, isAdjective, isJosa, isPunctuation
  • 명사·동사 중심 금칙어 탐지와 인접 복합어 검사
  • 메모리 금칙어 사전의 추가·삭제·전체 삭제
dependencies {
implementation("io.github.bluetape4k.text:tokenizer-japanese:0.2.1")
}
import io.bluetape4k.tokenizer.japanese.JapaneseProcessor
val tokens = JapaneseProcessor.tokenize("お寿司が食べたい。")
println(tokens.map { it.surface })
// [お, 寿司, が, 食べ, たい, 。]

토큰에는 사전과 품사 정보가 남아 있다. 표시 문자열만 필요할 때 surface를 꺼낸다.

import io.bluetape4k.tokenizer.japanese.tokenizer.isVerb
val analyzed = JapaneseProcessor.tokenize("私は、日本語の勉強をしています。")
val nouns = JapaneseProcessor.filterNoun(analyzed).map { it.surface }
val verbs = JapaneseProcessor.filter(analyzed) { it.isVerb() }.map { it.surface }
println(nouns) // [私, 日本語, 勉強]
println(verbs) // [し]

정책이 문법 범주를 기준으로 한다면 원문 substring 검색보다 형태소·품사 필터가 알맞다.

import io.bluetape4k.tokenizer.model.blockwordRequestOf
val response = JapaneseProcessor.maskBlockwords(
blockwordRequestOf("ホモの男性を理解できない"),
)
println(response.maskedText) // **の男性を理解できない
println(response.blockwordExists) // true

내장 경로는 명사와 동사를 중심으로 찾고, 단일 토큰이 일치하지 않으면 인접한 명사와 명사·동사 조합도 확인한다.

패키지 사전은 금칙어 기능을 처음 사용할 때 지연 로드된다. addBlockwords, removeBlockwords, clearBlockwords는 프로세스 전체의 메모리 정책을 바꾼다. 첫 호출 지연이 중요하면 미리 warmup하고, 애플리케이션 업데이트는 재시작 뒤 복구한다.

일본어 토큰 경계나 품사가 필요할 때 선택한다. 형태소와 무관한 정확한 패턴은 텍스트 검색을 사용한다. 입력 언어가 정해지지 않았을 때만 Lingua로 앞에서 분기한다.

아래 그림은 0.2.1 배포본의 README 자산을 해당 배포 커밋에서 직접 불러옵니다. 이후 SNAPSHOT이 아니라 이 매뉴얼 버전의 구조와 실행 흐름을 보여 줍니다. 미리보기를 누르면 같은 배포 커밋의 SVG 원본이 열립니다.

tokenizer japanese 클래스 구조도

배포본 README: tokenizer-japanese/README.ko.md