igo/dictionary/viterbinode.rs
1use std::rc::Rc;
2
3
4/// Viterbiアルゴリズムで使用されるノード
5#[derive(Debug)]
6pub struct ViterbiNode {
7 /// 始点からノードまでの総コスト
8 pub cost: i32,
9 /// コスト最小の前方のノードへのリンク
10 pub prev: Option<Rc<ViterbiNode>>,
11
12 /// 単語ID
13 pub word_id: i32,
14 /// 左文脈ID
15 pub left_id: i16,
16 /// 右文脈ID
17 pub right_id: i16,
18 /// 入力テキスト内での形態素の開始位置
19 pub start: usize,
20 /// 形態素の表層形の長さ(文字数)
21 pub length: i16,
22
23 /// 形態素の文字種(文字カテゴリ)が空白文字かどうか
24 pub is_space: bool
25}
26
27impl ViterbiNode {
28 pub fn make_boseos() -> ViterbiNode {
29 ViterbiNode {
30 word_id: 0,
31 start: 0,
32 length: 0,
33 cost: 0,
34 left_id: 0,
35 right_id: 0,
36 is_space: false,
37 prev: None
38 }
39 }
40}