sumom****@users*****
sumom****@users*****
2008年 11月 14日 (金) 13:12:12 JST
Index: julius4/libjulius/src/beam.c diff -u julius4/libjulius/src/beam.c:1.9 julius4/libjulius/src/beam.c:1.10 --- julius4/libjulius/src/beam.c:1.9 Fri Oct 17 08:43:25 2008 +++ julius4/libjulius/src/beam.c Fri Nov 14 13:12:12 2008 @@ -42,7 +42,7 @@ * @author Akinobu LEE * @date Tue Feb 22 17:00:45 2005 * - * $Revision: 1.9 $ + * $Revision: 1.10 $ * */ /* @@ -657,7 +657,11 @@ s->score = tmp->backscore; s->score_lm = 0.0; s->score_am = tmp->backscore; - s->gram_id = 0; + if (multigram_get_all_num(r->lm) > 0) { + s->gram_id = multigram_get_gram_from_wid(s->word[0], r->lm); + } else { + s->gram_id = 0; + } s->align.filled = FALSE; } /* free work area for sort */ @@ -677,7 +681,11 @@ s->score = best->backscore; s->score_lm = 0.0; s->score_am = best->backscore; - s->gram_id = 0; + if (multigram_get_all_num(r->lm) > 0) { + s->gram_id = multigram_get_gram_from_wid(s->word[0], r->lm); + } else { + s->gram_id = 0; + } s->align.filled = FALSE; } Index: julius4/libjulius/src/multi-gram.c diff -u julius4/libjulius/src/multi-gram.c:1.7 julius4/libjulius/src/multi-gram.c:1.8 --- julius4/libjulius/src/multi-gram.c:1.7 Fri Oct 17 23:49:20 2008 +++ julius4/libjulius/src/multi-gram.c Fri Nov 14 13:12:12 2008 @@ -47,7 +47,7 @@ * @author Akinobu Lee * @date Sat Jun 18 23:45:18 2005 * - * $Revision: 1.7 $ + * $Revision: 1.8 $ * */ /* @@ -970,6 +970,44 @@ return(-1); } +/** + * <JA> + * 単語IDから属する文法を得る. + * + * @param wid 単語ID + * @param lm [i/o] 言語処理インスタンス + * + * @return 単語の属する文法のIDを返す. + * </JA> + * <EN> + * Get which grammar the given word belongs to. + * + * @param wid word ID + * @param lm [i/o] LM processing instance + * + * @return the id of the belonging grammar. + * </EN> + * @callgraph + * @callergraph + * @ingroup grammar + */ +int +multigram_get_gram_from_wid(WORD_ID wid, PROCESS_LM *lm) +{ + MULTIGRAM *m; + int wb, we; + + for(m = lm->grammars; m; m = m->next) { + if (m->newbie) continue; + wb = m->word_begin; + we = wb + m->winfo->num; + if (wb <= wid && wid < we) { /* found */ + return(m->id); + } + } + return(-1); +} + /** * <JA>