Expand description
Lattice 자료구조
형태소 분석을 위한 격자(Lattice) 구조를 제공합니다.
§개요
Lattice는 입력 텍스트의 모든 가능한 형태소 분석 결과를 DAG(Directed Acyclic Graph) 형태로 표현합니다. Viterbi 알고리즘을 통해 최적 경로를 찾습니다.
§구조
입력: "아버지가"
BOS ─→ [아버지] ─→ [가] ─→ EOS
│ │
└→ [아버] ─→ [지가] ─┘
│
└→ [아] ─→ [버지가] ─┘§한국어 특화
- 띄어쓰기 패널티 지원 (
left-space-penalty-factor) - UTF-8 문자 위치 정확한 처리
- 종성 기반 조사 연결 규칙
§Example
use mecab_ko_core::lattice::{Lattice, NodeBuilder};
let mut lattice = Lattice::new("안녕하세요");
// 노드 추가 (사전에서 검색된 결과)
lattice.add_node(
NodeBuilder::new("안녕", 0, 2)
.left_id(1)
.right_id(1)
.word_cost(1000)
.feature("NNG,*,F,안녕,*,*,*,*")
.build()
);
assert_eq!(lattice.node_count(), 3); // BOS + 추가노드 + EOSStructs§
- Char
Positions - 문자 위치 정보
- Lattice
- Lattice 구조
- Lattice
Stats - Lattice 통계 정보
- Node
- Lattice 노드
- Node
Builder - 노드 빌더 (Builder 패턴)
- Space
Positions - 띄어쓰기 위치 정보
Enums§
- Node
Type - 노드 타입
Constants§
- BOS_
CONTEXT_ ID - BOS (Beginning of Sentence) 컨텍스트 ID
- BOS_
NODE_ ID - 특수 노드 ID
- EOS_
CONTEXT_ ID - EOS (End of Sentence) 컨텍스트 ID
- INVALID_
NODE_ ID - EOS 노드는 마지막에 동적 할당
Type Aliases§
- NodeId
- 노드 ID 타입