Skip to main content

Module lattice

Module lattice 

Source
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 + 추가노드 + EOS

Structs§

CharPositions
문자 위치 정보
Lattice
Lattice 구조
LatticeStats
Lattice 통계 정보
Node
Lattice 노드
NodeBuilder
노드 빌더 (Builder 패턴)
SpacePositions
띄어쓰기 위치 정보

Enums§

NodeType
노드 타입

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 타입