Skip to main content

Module viterbi

Module viterbi 

Source
Expand description

Viterbi 알고리즘

최적 형태소 분석 경로를 찾는 Viterbi 알고리즘을 구현합니다.

§개요

Viterbi 알고리즘은 Lattice에서 최소 비용 경로를 찾는 동적 프로그래밍 알고리즘입니다.

총 비용 = Σ(단어 비용) + Σ(연접 비용) + Σ(띄어쓰기 패널티)

§알고리즘

  1. Forward Pass: BOS에서 시작하여 각 노드까지의 최소 비용 계산
  2. Backward Pass: EOS에서 BOS까지 역추적하여 최적 경로 추출

§한국어 특화

  • left-space-penalty-factor: 띄어쓰기 후 특정 품사 시작 시 페널티 부여
  • 조사(JK*), 어미(E*) 등이 띄어쓰기 직후 시작하면 높은 페널티

§Example

use mecab_ko_core::viterbi::{ViterbiSearcher, SpacePenalty};
use mecab_ko_core::lattice::Lattice;

let mut lattice = Lattice::new("아버지가방에");
// ... 노드 추가 후 검색 ...

let searcher = ViterbiSearcher::new()
    .with_space_penalty(SpacePenalty::korean_default());

Structs§

FixedConnectionCost
고정 연접 비용 (테스트용)
NbestSearcher
N-best 탐색기
SpacePenalty
띄어쓰기 패널티 설정
ViterbiResult
Viterbi 결과를 Token으로 변환하는 헬퍼
ViterbiSearcher
Viterbi 탐색기
ZeroConnectionCost
더미 연접 비용 (테스트용)

Traits§

ConnectionCost
연접 비용 조회 인터페이스