julius/wchmm.c

木構造化辞書を構築する [詳細]

#include <julius.h>
wchmm.cのインクルード依存関係図

ソースコードを見る。

関数

WCHMM_INFOwchmm_new ()
static void wchmm_init (WCHMM_INFO *wchmm)
static void wchmm_extend (WCHMM_INFO *wchmm)
void wchmm_free (WCHMM_INFO *w)
static int compare_wseq (WORD_ID *widx1, WORD_ID *widx2)
static void wchmm_sort_idx_by_wseq (WORD_INFO *winfo, WORD_ID *windex, WORD_ID bgn, WORD_ID len)
static int wchmm_check_match (WORD_INFO *winfo, int i, int j)
static void add_wacc (WCHMM_INFO *wchmm, int node, LOGPROB a, int arc)
static void wchmm_link_hmm (WCHMM_INFO *wchmm, int from_node, int to_node, HTK_HMM_Trans *tinfo)
static void wchmm_link_subword (WCHMM_INFO *wchmm, int from_word, int from_seq, int to_word, int to_seq)
static void wchmm_duplicate_state (WCHMM_INFO *wchmm, int node, int word)
static void wchmm_duplicate_leafnode (WCHMM_INFO *wchmm)
static void wchmm_add_word (WCHMM_INFO *wchmm, int word, int matchlen, int matchword)
static void wchmm_index_ststart (WCHMM_INFO *wchmm)
static void wchmm_calc_wordend_arc (WCHMM_INFO *wchmm)
static int compare_prob (LOGPROB *a, LOGPROB *b)
static LOGPROB get_nbest_uniprob (WORD_INFO *winfo, int n)
void build_wchmm2 (WCHMM_INFO *wchmm)
void print_wchmm_info (WCHMM_INFO *wchmm)

変数

static int dupcount = 0
 Number of duplicated nodes (for debug only).
static WORD_INFOlocal_winfo
 Temporary work area for sort callbacks.
static int separated_word_count
 Number of words actually separated (linearlized) from the tree.

説明

木構造化辞書を構築する

作者:
Akinobu Lee
日付:
Mon Sep 19 23:39:15 2005

ここでは,与えられた単語辞書, HMM定義および言語制約から木構造化辞書を 構築する関数が定義されています.木構造化辞書は起動時に構築され, 第1パスの認識に用いられます.木構造化辞書は状態単位で構成され, 各状態はHMM出力確率と遷移先の他,および探索のための様々な情報を含みます.

開発の経緯上,ソース内では木構造化辞書は wchmm (word-conjunction HMM) と も表現されています.

Revision
1.4

wchmm.c で定義されています。


関数

WCHMM_INFO* wchmm_new (  ) 

木構造化辞書を新たに割り付ける.

戻り値:
新たにメモリ上に割り付けられた木構造化辞書構造体へのポインタを返す.

wchmm.c70 行で定義されています。

参照元 final_fusion().

static void wchmm_init ( WCHMM_INFO wchmm  )  [static]

木構造化辞書の内容を初期化する.

引数:
wchmm [out] 木構造化辞書へのポインタ

wchmm.c103 行で定義されています。

参照元 build_wchmm2().

static void wchmm_extend ( WCHMM_INFO wchmm  )  [static]

木構造化辞書の状態格納領域を MAXWCNSTEP 分だけ伸長する.

引数:
wchmm [i/o] 木構造化辞書

wchmm.c156 行で定義されています。

参照元 wchmm_add_word(), と wchmm_duplicate_state().

void wchmm_free ( WCHMM_INFO w  ) 

木構造化辞書およびその内部の割付メモリを全て解放する.

引数:
w [in] 木構造化辞書

wchmm.c206 行で定義されています。

static int compare_wseq ( WORD_ID widx1,
WORD_ID widx2 
) [static]

単語を音素のならびでソートするqsort関数

引数:
widx1 [in] 単語ID 1 へのポインタ
widx2 [in] 単語ID 2 へのポインタ
戻り値:
単語widx2が単語widx1の一部か昇順であれば 1, 単語widx1が単語widx2の一部か昇順であれば -1, 全く同じ音素並びであれば 0 を返す.

wchmm.c292 行で定義されています。

参照元 wchmm_sort_idx_by_wseq().

static void wchmm_sort_idx_by_wseq ( WORD_INFO winfo,
WORD_ID windex,
WORD_ID  bgn,
WORD_ID  len 
) [static]

単語IDの集合 windex[bgn..bgn+len-1] を単語の音素ならびでソートする.

引数:
winfo [in] 単語辞書
windex [i/o] 単語IDのインデックス列(内部でソートされる)
bgn [in] windex のソート開始点
len [in] windexbgn からのソートする要素数

wchmm.c341 行で定義されています。

参照元 build_wchmm2().

static int wchmm_check_match ( WORD_INFO winfo,
int  i,
int  j 
) [static]

2単語間で,単語の先頭から同一で共有可能な音素の数を調べる.

引数:
winfo [in] 単語辞書
i [in] 単語1
j [in] 単語2
戻り値:
共有可能な先頭からの音素数を返す.

wchmm.c430 行で定義されています。

参照元 build_wchmm2().

static void add_wacc ( WCHMM_INFO wchmm,
int  node,
LOGPROB  a,
int  arc 
) [static]

木構造化辞書のあるノードに,別のノードへの遷移を追加する

引数:
wchmm [i/o] 木構造化辞書
node [in] ノード番号
a [in] 遷移確率(対数)
arc [in] 遷移先のノード番号

wchmm.c463 行で定義されています。

参照元 wchmm_add_word(), wchmm_duplicate_state(), と wchmm_link_hmm().

static void wchmm_link_hmm ( WCHMM_INFO wchmm,
int  from_node,
int  to_node,
HTK_HMM_Trans tinfo 
) [static]

ある音素の末尾の状態から,ある音素の先頭状態への遷移を追加する.

引数:
wchmm [i/o] 木構造化辞書
from_node [in] ある音素の末尾の状態
to_node [in] ある音素の先頭状態
tinfo [in] from_node の属する音素HMMの遷移確率行列

wchmm.c592 行で定義されています。

参照元 wchmm_link_subword().

static void wchmm_link_subword ( WCHMM_INFO wchmm,
int  from_word,
int  from_seq,
int  to_word,
int  to_seq 
) [static]

木構造化辞書中の2単語中のある音素間を接続する.

引数:
wchmm [i/o] 木構造化辞書
from_word [in] 遷移元の単語のID
from_seq [in] 遷移元の単語中の接続する音素の位置
to_word [in] 遷移先の単語のID
to_seq [in] 遷移先の単語中の接続する音素の位置

wchmm.c641 行で定義されています。

参照元 wchmm_add_word().

static void wchmm_duplicate_state ( WCHMM_INFO wchmm,
int  node,
int  word 
) [static]
覚え書き:

同音語処理: 木構造化辞書においてすべての単語は独立した最終状態を持つ必要があるため, 同音語は注意深く扱う必要がある.このため,最初の木構造化辞書を構築した後, 別の単語と完全に共有された単語(同音語), あるいは別の単語の一部として 埋め込まれてしまっている単語を発見するとともに, その最終ノードを コピーして新たな単語終端ノードを作る必要がある.

単語終端状態の独立化:与えられた単語の終端ノードをコピーして, 新たにある単語の最終状態として定義する.

引数:
wchmm [i/o] 木構造化辞書
node [in] 同音語の終端ノード番号
word [in] 新たに登録する単語

wchmm.c696 行で定義されています。

参照元 wchmm_duplicate_leafnode().

static void wchmm_duplicate_leafnode ( WCHMM_INFO wchmm  )  [static]

木構造化辞書全体を走査して,すべての同音語について単語終端状態の独立化 を行う.

引数:
wchmm [i/o] 木構造化辞書

wchmm.c810 行で定義されています。

参照元 build_wchmm2().

static void wchmm_add_word ( WCHMM_INFO wchmm,
int  word,
int  matchlen,
int  matchword 
) [static]

木構造化辞書に新たに単語を追加する.追加場所の情報として,現在の木構造化 辞書内で最もその単語と先頭から良くマッチする単語,およびそのマッチする長さ を指定する.

引数:
wchmm [i/o] 木構造化辞書
word [in] 追加する辞書単語のID
matchlen [in] wordmatchword の先頭からマッチする音素長
matchword [in] 既存の木構造化辞書中で word と最もマッチする単語

wchmm.c891 行で定義されています。

参照元 build_wchmm2().

static void wchmm_index_ststart ( WCHMM_INFO wchmm  )  [static]

木構造化辞書を走査し,単語間遷移計算のための単語の先頭状態の インデックスを生成する.

引数:
wchmm [i/o] 木構造化辞書

wchmm.c1329 行で定義されています。

参照元 build_wchmm2().

static void wchmm_calc_wordend_arc ( WCHMM_INFO wchmm  )  [static]

木構造化辞書を走査し,単語の終端状態から外への次遷移確率のリストを作成する.

引数:
wchmm [i/o] 木構造化辞書

wchmm.c1367 行で定義されています。

参照元 build_wchmm2().

static int compare_prob ( LOGPROB a,
LOGPROB b 
) [static]

unigram確率でソートするための qsort コールバック関数.

引数:
a [in] 要素1
b [in] 要素2
戻り値:
演算の結果の符合を返す.

wchmm.c1407 行で定義されています。

参照元 get_nbest_uniprob().

static LOGPROB get_nbest_uniprob ( WORD_INFO winfo,
int  n 
) [static]

1-gramスコアの上位 N 番目の値を求める.

引数:
winfo [in] 単語辞書
n [in] 求める順位
戻り値:
上位 N 番目の uni-gram 確率の値を返す.

wchmm.c1433 行で定義されています。

参照元 build_wchmm2().

void build_wchmm2 ( WCHMM_INFO wchmm  ) 

与えられた単語辞書と言語モデルから木構造化辞書を構築する. この関数は bulid_wchmm() と同じ処理を行いますが, 最初に単語を音素列でソートして音素列の似た順に単語を並べるため, より高速に木構造化を行うことができる.とくにオプション指定をしない 限り,Julius/Julianではこちらが用いられる.

引数:
wchmm [i/o] 木構造化辞書

wchmm.c1682 行で定義されています。

参照元 final_fusion().

void print_wchmm_info ( WCHMM_INFO wchmm  ) 

木構造化辞書のサイズなどの情報を標準出力に出力する.

引数:
wchmm [in] 木構造化辞書

wchmm.c1958 行で定義されています。

参照元 print_info().


変数

int dupcount = 0 [static]

Number of duplicated nodes (for debug only).

If defined, do wchmm size estimation (for debug only)

wchmm.c48 行で定義されています。

参照元 build_wchmm2(), と wchmm_duplicate_leafnode().


Juliusに対してTue Sep 22 00:14:30 2009に生成されました。  doxygen 1.6.0