Expand description
Viterbi 알고리즘
최적 형태소 분석 경로를 찾는 Viterbi 알고리즘을 구현합니다.
§개요
Viterbi 알고리즘은 Lattice에서 최소 비용 경로를 찾는 동적 프로그래밍 알고리즘입니다.
총 비용 = Σ(단어 비용) + Σ(연접 비용) + Σ(띄어쓰기 패널티)§알고리즘
- Forward Pass: BOS에서 시작하여 각 노드까지의 최소 비용 계산
- 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§
- Fixed
Connection Cost - 고정 연접 비용 (테스트용)
- Nbest
Searcher - N-best 탐색기
- Space
Penalty - 띄어쓰기 패널티 설정
- Viterbi
Result - Viterbi 결과를 Token으로 변환하는 헬퍼
- Viterbi
Searcher - Viterbi 탐색기
- Zero
Connection Cost - 더미 연접 비용 (테스트용)
Traits§
- Connection
Cost - 연접 비용 조회 인터페이스