[Julius-cvs 411] CVS update: julius4/libjulius/src

アーカイブの一覧に戻る

sumom****@users***** sumom****@users*****
2009年 6月 12日 (金) 00:21:38 JST


Index: julius4/libjulius/src/beam.c
diff -u julius4/libjulius/src/beam.c:1.11 julius4/libjulius/src/beam.c:1.12
--- julius4/libjulius/src/beam.c:1.11	Fri Dec 12 16:14:57 2008
+++ julius4/libjulius/src/beam.c	Fri Jun 12 00:21:38 2009
@@ -42,7 +42,7 @@
  * @author Akinobu LEE
  * @date   Tue Feb 22 17:00:45 2005
  *
- * $Revision: 1.11 $
+ * $Revision: 1.12 $
  * 
  */
 /*
@@ -1256,7 +1256,7 @@
     }
 #ifdef WPAIR_KEEP_NLIMIT
     if (lowest_token == TOKENID_UNDEFINED ||
-	d->tlist[tt][lowest_token].score < d->tlist[tt][tmp].score)
+	d->tlist[tt][lowest_token].score > d->tlist[tt][tmp].score)
       lowest_token = tmp;
     if (++i >= d->wpair_keep_nlimit) break;
 #endif
@@ -2252,6 +2252,7 @@
     if (sword == wchmm->winfo->tail_silwid) return;
 
 #ifdef UNIGRAM_FACTORING
+#ifndef WPAIR
     /* あとで共有単語先頭ノードに対して単語間遷移をまとめて計算するため,*/
     /* このループ内では最大尤度を持つ単語終端ノードを記録しておく */
     /* here we will record the best wordend node of maximum likelihood
@@ -2266,6 +2267,7 @@
       d->wordend_best_last_cword = tk->last_cword;
     }
 #endif
+#endif
     
     /* N-gramにおいては常に全単語の接続を考慮する必要があるため,
        ここで単語間の言語確率値をすべて計算しておく. 
@@ -2302,6 +2304,23 @@
       /* N-gram確率を計算 */
       /* compute N-gram probability */
 #ifdef UNIGRAM_FACTORING
+      /* wchmm,start2isolate[0..stid-1] ... ノードを共有しない単語は
+	 その通しID, 共有する(キャッシュの必要のない)単語は -1 */
+      /* wchmm->start2isolate[0..stid-1] ... isolate ID for
+	 beginning-of-word state.  value: -1 for states that has
+	 1-gram factoring value (share nodes with some other words),
+	 and ID for unshared words
+      */
+      isoid = wchmm->start2isolate[stid];
+#ifdef WPAIR
+      /* Efficient cross-word LM handling should be disabled for
+	 word-pair approximation */
+      if (isoid == -1) {
+	tmpprob = wchmm->fscore[- wchmm->state[next_node].scid];
+      } else {
+	tmpprob = iwparray[isoid];
+      }
+#else  /* ~WPAIR */
       /* 1-gram factoring における単語間言語確率キャッシュの効率化:
 	 1-gram factoring は単語履歴に依存しないので,
 	 ここで参照する factoring 値の多くは
@@ -2316,21 +2335,14 @@
 	 So only the unshared beginning-of-word states are computed and
 	 cached here in iwparray[].
       */
-      /* wchmm,start2isolate[0..stid-1] ... ノードを共有しない単語は
-	 その通しID, 共有する(キャッシュの必要のない)単語は -1 */
-      /* wchmm->start2isolate[0..stid-1] ... isolate ID for
-	 beginning-of-word state.  value: -1 for states that has
-	 1-gram factoring value (share nodes with some other words),
-	 and ID for unshared words
-      */
-      isoid = wchmm->start2isolate[stid];
       /* 計算が必要でない単語先頭ノードはパスをまとめて後に計算するので
 	 ここではスキップ */
       /* the shared nodes will be computed afterward, so just skip them
 	 here */
       if (isoid == -1) continue;
       tmpprob = iwparray[isoid];
-#else
+#endif /* ~WPAIR */
+#else  /* ~UNIGRAM_FACTORING */
       tmpprob = iwparray[stid];
 #endif
     }
@@ -2621,6 +2633,7 @@
   tn = d->tn;
 
 #ifdef UNIGRAM_FACTORING
+#ifndef WPAIR
   /* 1-gram factoring では単語先頭での言語確率が一定で直前単語に依存しない
      ため,単語間 Viterbi において選ばれる直前単語は,次単語によらず共通である. 
      よって単語終端からfactoring値のある単語先頭への遷移は1つにまとめられる. 
@@ -2642,6 +2655,7 @@
     d->wordend_best_score = LOG_ZERO;
   }
 #endif
+#endif
 
 #ifdef DEBUG
   /* debug */
@@ -2797,6 +2811,7 @@
   }
 
 #ifdef UNIGRAM_FACTORING
+#ifndef WPAIR
 
   if (lmtype == LM_PROB) {
 
@@ -2809,6 +2824,7 @@
       beam_inter_word_factoring(wchmm, d);
     }
   }
+#endif
 #endif /* UNIGRAM_FACTORING */
 
   /***************************************/



Julius-cvs メーリングリストの案内
アーカイブの一覧に戻る