Expand description
§mecab-ko-core
한국어 형태소 분석 핵심 엔진
§주요 기능
- 형태소 분석: Lattice 기반 Viterbi 알고리즘
- N-best 탐색: K개의 최적 분석 결과 제공
- 미등록어 처리: 사전에 없는 단어 자동 처리
- 스트리밍 처리: 대용량 파일 청크 단위 처리
- 토큰화 캐싱: LRU 캐시로 반복 입력 최적화
- 분석 모드: 명사/동사/원형 등 맞춤 분석
- Lattice 시각화: DOT/HTML/JSON 형식 지원
- 메모리 최적화: String interning, 객체 풀링
§빠른 시작
use mecab_ko_core::Tokenizer;
let mut tokenizer = Tokenizer::new()?;
let tokens = tokenizer.tokenize("아버지가방에들어가신다");
for token in tokens {
println!("{}: {}", token.surface, token.pos);
}§고급 기능
§명사만 추출
use mecab_ko_core::{Tokenizer, extract_nouns};
let mut tokenizer = Tokenizer::new()?;
let nouns = extract_nouns(&mut tokenizer, "오늘 서울 날씨가 좋습니다");
// ["오늘", "서울", "날씨"]§스트리밍 처리
use mecab_ko_core::{Tokenizer, StreamingTokenizer};
let tokenizer = Tokenizer::new()?;
let mut stream = StreamingTokenizer::new(tokenizer)
.with_chunk_size(8192);
let tokens = stream.process_chunk("첫 번째 청크. ");
let more_tokens = stream.process_chunk("두 번째 청크.");
let remaining = stream.flush();§토큰화 캐싱
use mecab_ko_core::{Tokenizer, TokenCache, CacheConfig};
let mut tokenizer = Tokenizer::new()?;
let cache = TokenCache::new(CacheConfig::default());
let text = "반복되는 입력";
let key = cache.make_key(text);
// 캐시 조회 또는 계산
let tokens = cache.get_or_insert(key, || {
tokenizer.tokenize(text)
.into_iter()
.map(|t| mecab_ko_core::CachedToken {
surface: t.surface,
pos: t.pos,
start_byte: t.start_byte,
end_byte: t.end_byte,
})
.collect()
});
println!("캐시 히트율: {:.1}%", cache.stats().hit_rate() * 100.0);§N-best 경로 탐색
use mecab_ko_core::{Tokenizer, ImprovedNbestSearcher};
use mecab_ko_dict::matrix::Matrix;
let mut tokenizer = Tokenizer::new()?;
let lattice = tokenizer.tokenize_to_lattice("한국어");
// ... N-best 탐색 수행 ...§모듈 구조
| 모듈 | 설명 |
|---|---|
tokenizer | 형태소 분석 메인 인터페이스 |
lattice | Lattice 그래프 구조 |
viterbi | Viterbi 알고리즘 |
nbest | N-best 경로 탐색 |
streaming | 스트리밍 토큰화 |
cache | 토큰화 캐싱 |
batch | 배치/병렬 처리 |
analysis_mode | 분석 모드 (명사/동사 추출 등) |
memory | 메모리 최적화 유틸리티 |
lattice_viz | Lattice 시각화 |
nori_compat | Elasticsearch Nori 호환 |
kiwi_compat | Kiwi 분석기 호환 |
§Feature Flags
default: zstd 압축 지원async: 비동기 토크나이저 (tokio필요)simd: SIMD 최적화 (nightly 필요)test-utils: 테스트 유틸리티 공개
Re-exports§
pub use batch::BatchTokenizer;pub use batch::LargeFileProcessor;pub use batch::LargeFileProgress;pub use batch::ParallelStreamProcessor;pub use error::Error;pub use error::Result;pub use evaluate::evaluate_dataset;pub use evaluate::evaluate_dataset_sejong;pub use evaluate::evaluate_tokens;pub use evaluate::EvaluateError;pub use evaluate::EvaluationResult;pub use evaluate::GoldSentence;pub use evaluate::GoldToken;pub use evaluate::PosStats;pub use evaluate::TestDataset;pub use kiwi_compat::from_kiwi_tag;pub use kiwi_compat::to_kiwi_tag;pub use kiwi_compat::KiwiPosTag;pub use kiwi_compat::KiwiToken;pub use lattice::Lattice;pub use lattice::Node;pub use lattice::NodeBuilder;pub use lattice::NodeType;pub use nori_compat::mecab_to_nori_tag;pub use nori_compat::nori_to_mecab_tag;pub use nori_compat::DecompoundMode;pub use nori_compat::NoriAnalyzer;pub use nori_compat::NoriToken;pub use nori_compat::NoriTokenizer;pub use nori_compat::WordType;pub use normalizer::NormalizationConfig;pub use normalizer::NormalizationRule;pub use normalizer::Normalizer;pub use normalizer::RuleType;pub use pool::IdVecPool;pub use pool::NodeVecPool;pub use pool::PoolManager;pub use pool::PoolStats;pub use pool::Symbol;pub use pool::TokenPool;pub use pos_tag::PosTag;pub use sejong::EndingRule;pub use sejong::SejongConverter;pub use sejong::SejongToken;pub use streaming::ChunkedTokenIterator;pub use streaming::ProgressCallback;pub use streaming::ProgressStreamingTokenizer;pub use streaming::StreamingProgress;pub use streaming::StreamingTokenizer;pub use streaming::TokenStream;pub use tokenizer::Token;pub use tokenizer::Tokenizer;pub use unknown::CharCategoryMap;pub use unknown::UnknownDictionary;pub use unknown::UnknownHandler;pub use analysis_mode::extract_adjectives;pub use analysis_mode::extract_content_words;pub use analysis_mode::extract_lemmas;pub use analysis_mode::extract_nouns;pub use analysis_mode::extract_verbs;pub use analysis_mode::AnalysisMode;pub use analysis_mode::AnalyzedToken;pub use analysis_mode::AnalyzerConfig;pub use analysis_mode::LemmatizationMode;pub use analysis_mode::PosFilter;pub use nbest::ImprovedNbestSearcher;pub use nbest::NbestPath;pub use nbest::NbestResult;pub use viterbi::ConnectionCost;pub use viterbi::NbestSearcher;pub use viterbi::SpacePenalty;pub use viterbi::ViterbiSearcher;pub use lattice_viz::lattice_to_dot;pub use lattice_viz::lattice_to_html;pub use lattice_viz::lattice_to_json;pub use lattice_viz::lattice_to_text;pub use lattice_viz::LatticeViz;pub use lattice_viz::VizFormat;pub use lattice_viz::VizOptions;pub use cache::CacheConfig;pub use cache::CacheStats;pub use cache::CachedToken;pub use cache::CachingTokenizer;pub use cache::TokenCache;pub use memory::estimate_tokens_memory;pub use memory::FeatureCache;pub use memory::InternerStats;pub use memory::MemoryStats;pub use memory::PosTagInterner;
Modules§
- analysis_
mode - 사용자 정의 분석 모드
- batch
- Batch Processing Module
- cache
- 토큰화 캐싱
- error
- 에러 모듈
- evaluate
- Evaluation Module
- kiwi_
compat - Kiwi 형태소 분석기 호환 레이어
- lattice
- Lattice 자료구조
- lattice_
viz - Lattice 시각화 도구
- memory
- Memory Optimization Module
- nbest
- 개선된 N-best Viterbi 알고리즘
- nori_
compat - Lucene Nori 호환 레이어
- normalizer
- Foreign Word Normalization Module
- pool
- Memory Pooling Module
- pos_tag
- 품사 태그 정의 (세종 품사 태그 체계 기반)
- sejong
- 세종 코퍼스 호환 모듈
- streaming
- Streaming Tokenizer Module
- tokenizer
- 토크나이저 모듈
- unknown
- 미등록어 처리 모듈 (Unknown Word Handler)
- viterbi
- Viterbi 알고리즘