Skip to main content

Crate mecab_ko_core

Crate mecab_ko_core 

Source
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형태소 분석 메인 인터페이스
latticeLattice 그래프 구조
viterbiViterbi 알고리즘
nbestN-best 경로 탐색
streaming스트리밍 토큰화
cache토큰화 캐싱
batch배치/병렬 처리
analysis_mode분석 모드 (명사/동사 추출 등)
memory메모리 최적화 유틸리티
lattice_vizLattice 시각화
nori_compatElasticsearch Nori 호환
kiwi_compatKiwi 분석기 호환

§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::SharedStringInterner;
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 알고리즘