#include <julius.h>
search_bestfirst_main.cのインクルード依存関係図
関数 | |
static NODE * | get_best_from_stack (NODE **start, int *stacknum) |
static int | put_to_stack (NODE *new, NODE **start, NODE **bottom, int *stacknum, int stacksize) |
static void | put_all_in_stack (NODE **start, int *stacknum) |
static void | free_all_nodes (NODE *node) |
static void | put_hypo_woutput (NODE *hypo) |
static void | put_hypo_wname (NODE *hypo) |
static NEXTWORD ** | nw_malloc (int *maxlen, NEXTWORD **root) |
static void | nw_free (NEXTWORD **nw, NEXTWORD *root) |
static NEXTWORD ** | nw_expand (NEXTWORD **nwold, int *maxlen, NEXTWORD **root) |
次単語候補格納用の NEXTWORD 配列のメモリ領域を伸張する. | |
static int | can_put_to_stack (NODE *new, NODE **bottom, int *stacknum, int stacksize) |
static void | cm_init (WORD_INFO *winfo) |
static void | cm_store (NODE *new) |
static void | cm_sum_score () |
static void | cm_set_score (NODE *node) |
static NODE * | cm_get_node () |
static void | wb_init () |
static boolean | wb_ok (NODE *now) |
static void | envl_init (int framenum) |
static void | envl_update (NODE *n, int framenum) |
static void | result_reorder_and_output (NODE **r_start, NODE **r_bottom, int *r_stacknum, int ncan, WORD_INFO *winfo) |
void | wchmm_fbs (HTK_Param *param, BACKTRELLIS *backtrellis, LOGPROB backmax, int stacksize, int ncan, int maxhypo, int cate_bgn, int cate_num) |
変数 | |
static LOGPROB | cm_tmpbestscore |
Temporal best score for summing up scores | |
static LOGPROB | cm_tmpsum |
Sum of CM score | |
static int | l_stacksize |
Local stack size for CM | |
static int | l_stacknum |
Num of hypo. in local stack for CM | |
static NODE * | l_start = NULL |
Top node of local stack for CM | |
static NODE * | l_bottom = NULL |
bottom node of local stack for CM | |
static int | hypo_len_count [MAXSEQNUM+1] |
Count of popped hypothesis per each length | |
static int | maximum_filled_length |
Current least beam-filled depth | |
static NEXTWORD | fornoise |
static HTK_Param * | tparam |
Temporal parameter for forced alignment |
単語の展開では、Julius では ngram_decode.c 内の関数が、Julian では dfa_decode.c の関数が次単語集合を取得するために使用されます。
単語信頼度の計算やビームを考慮したスコア計算、enveloped beam 探索も ここで記述されています。
search_bestfirst_main.c で定義されています。
スタックトップの最尤仮説を取り出す.
start | [i/o] スタックの先頭ノードへのポインタ(書換えられる場合あり) | |
stacknum | [i/o] 現在のスタックサイズへのポインタ(書き換えあり) |
search_bestfirst_main.c の 217 行で定義されています。
参照元 cm_get_node()・put_all_in_stack()・result_reorder_and_output().
static int put_to_stack | ( | NODE * | new, | |
NODE ** | start, | |||
NODE ** | bottom, | |||
int * | stacknum, | |||
int | stacksize | |||
) | [static] |
スタックに新たな仮説を格納する. スタック内のスコア順を考慮した位置に挿入される. 格納できなかった場合,与えられた仮説は free_node() される.
new | [in] チェックする仮説 | |
start | [i/o] スタックのトップノードへのポインタ | |
bottom | [i/o] スタックの底ノードへのポインタ | |
stacknum | [i/o] スタックに現在格納されているノード数へのポインタ | |
stacksize | [in] スタックのノード数の上限 |
search_bestfirst_main.c の 300 行で定義されています。
参照元 cm_store()・wchmm_fbs().
static void put_all_in_stack | ( | NODE ** | start, | |
int * | stacknum | |||
) | [static] |
スタックの中身を全て出力する.スタックの中身は失われる.(デバッグ用)
start | [i/o] スタックのトップノードへのポインタ | |
stacknum | [i/o] スタックに現在格納されているノード数へのポインタ |
search_bestfirst_main.c の 386 行で定義されています。
static void free_all_nodes | ( | NODE * | start | ) | [static] |
static void put_hypo_woutput | ( | NODE * | hypo | ) | [static] |
static void put_hypo_wname | ( | NODE * | hypo | ) | [static] |
デバッグ用に仮説の単語N-gramエントリ名(Julianではカテゴリ番号)を出力する.
hypo | [in] 仮説 |
search_bestfirst_main.c の 958 行で定義されています。
次単語候補を格納するための NEXTWORD 配列にメモリを割り付ける.
maxlen | [out] 格納可能な単語数 | |
root | [out] 割り付け領域の先頭へのポインタ |
search_bestfirst_main.c の 87 行で定義されています。
参照元 wchmm_fbs().
次単語候補を格納する NEXTWORD 配列のメモリを解放する.
nw | [in] NEXTWORD配列 | |
root | [in] nw_malloc() で与えられた領域先頭へのポインタ |
search_bestfirst_main.c の 123 行で定義されています。
次単語候補格納用の NEXTWORD 配列のメモリ領域を伸張する.
この関数は探索中に次単語候補集合が溢れた際に呼ばれ,配列により多くの 次単語候補を格納できるよう NEXTWORD の中身を realloc() する. 実際には最初に nw_malloc() で辞書の単語数分だけ領域を確保しており, Julius では呼ばれることはない.Julian では,ショートポーズの スキップ処理により状態の異なる候補を同時に展開するので, 次単語数が語彙数よりも大きいことが起こりうる.
nwold | [i/o] NEXTWORD配列 | |
maxlen | [i/o] 最大格納数を格納するポインタ.現在の最大格納数を 入れて呼び,関数内で新たに確保された数に変更される. | |
root | [i/o] 領域先頭へのポインタを格納するアドレス.関数内で 書き換えられる. |
search_bestfirst_main.c の 167 行で定義されています。
参照元 wchmm_fbs().
ある仮説がスタック内に格納されるかどうかチェックする.
new | [in] チェックする仮説 | |
bottom | [in] スタックの底ノードへのポインタ | |
stacknum | [in] スタックに現在格納されているノード数へのポインタ | |
stacksize | [in] スタックのノード数の上限 |
search_bestfirst_main.c の 261 行で定義されています。
static void cm_init | ( | WORD_INFO * | winfo | ) | [static] |
CM計算用のパラメータを初期化する(第2パス開始時に呼び出される)
winfo | [in] 単語辞書 |
search_bestfirst_main.c の 470 行で定義されています。
参照元 wchmm_fbs().
static void cm_store | ( | NODE * | new | ) | [static] |
CM計算のためにローカルスタックに展開仮説を一時的に保存する.
new | [in] 展開仮説 |
search_bestfirst_main.c の 495 行で定義されています。
参照元 wchmm_fbs().
static void cm_sum_score | ( | ) | [static] |
CM計算のためにローカルスタック内の仮説の出現確率の合計を求める.
search_bestfirst_main.c の 513 行で定義されています。
static void cm_set_score | ( | NODE * | node | ) | [static] |
展開されたある文仮説について,その展開単語の信頼度を,事後確率に 基づいて計算する.
node | [i/o] 展開されたある文仮説 |
search_bestfirst_main.c の 559 行で定義されています。
static NODE* cm_get_node | ( | ) | [static] |
static void wb_init | ( | ) | [static] |
Word envelope を参照して,与えられた仮説を展開してよいかどうかを返す. また,Word envelope のカウンタを更新する.
now | [in] 今から展開しようとしている仮説 |
search_bestfirst_main.c の 761 行で定義されています。
static void envl_init | ( | int | framenum | ) | [static] |
Score envelope を初期化する.第2パスの開始時に呼ばれる.
framenum | [in] 入力フレーム長 |
search_bestfirst_main.c の 825 行で定義されています。
参照元 wchmm_fbs().
static void envl_update | ( | NODE * | n, | |
int | framenum | |||
) | [static] |
仮説の前向きスコアから score envelope を更新する.
n | [in] 仮説 | |
framenum | [in] 入力フレーム長 |
search_bestfirst_main.c の 846 行で定義されています。
static void result_reorder_and_output | ( | NODE ** | r_start, | |
NODE ** | r_bottom, | |||
int * | r_stacknum, | |||
int | ncan, | |||
WORD_INFO * | winfo | |||
) | [static] |
スタックから上位の仮説を取り出し,認識結果として出力する.さらに, スタックに格納されている全ての仮説を解放する.
Julius/Julian では,第2パスにおいて得られた文候補は,いったん結果格納用 のスタックに格納される.探索終了("-n" の数だけ文候補が見つかるか, 探索が中断される)の後,結果的に得られた文候補の中から上位N個 ("-output" で指定された数)の仮説を出力する.
r_start | [i/o] 結果格納用スタックの先頭ノードへのポインタ | |
r_bottom | [i/o] 結果格納用スタックの底ノードへのポインタ | |
r_stacknum | [i/o] スタックに格納されているノード数へのポインタ | |
ncan | [in] 出力する上位仮説数 | |
winfo | [in] 単語辞書 |
search_bestfirst_main.c の 1011 行で定義されています。
void wchmm_fbs | ( | HTK_Param * | param, | |
BACKTRELLIS * | backtrellis, | |||
LOGPROB | backmax, | |||
int | stacksize, | |||
int | ncan, | |||
int | maxhypo, | |||
int | cate_bgn, | |||
int | cate_num | |||
) |
第2探索パスであるスタックデコーディングを行うメイン関数
param | [in] 入力パラメータベクトル列 | |
backtrellis | [in] 第1パスで得られた単語トレリス | |
backmax | [in] 第1パスで得られた累積仮説スコアの最大値 | |
stacksize | [in] 仮説スタックのサイズ | |
ncan | [in] 得るべき文候補数 | |
maxhypo | [in] 探索を断念する展開数閾値 | |
cate_bgn | [in] 展開対象とすべきカテゴリの開始番号(Juliusでは無視) | |
cate_num | [in] 展開対象とすべきカテゴリの数(Juliusでは無視) |
search_bestfirst_main.c の 1083 行で定義されています。
Dummy NEXTWORD data for short-pause insertion handling.
search_bestfirst_main.c の 861 行で定義されています。