SRI-LM toolkit
SRI-LM toolkit
SRI-LM toolkit
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>SRI</strong>-<strong>LM</strong> <strong>toolkit</strong><br />
2003/12/16<br />
Louis Tsai<br />
Speech Lab, CSIE, NTNU<br />
louis@csie.ntnu.edu.tw<br />
1
<strong>SRI</strong><strong>LM</strong><br />
• 由 <strong>SRI</strong> International 所 開 發 出 來 的 tool, 用<br />
在 Statistical Language Models<br />
• http://www.speech.sri.com/projects/srilm<br />
• 目 前 版 本 Ver 1.3.3 2003/03<br />
2
Create language model<br />
~<br />
W<br />
=<br />
arg max<br />
W<br />
P(<br />
W<br />
|<br />
X<br />
)<br />
≅<br />
arg max<br />
W<br />
P(<br />
X<br />
| W<br />
) P(<br />
W<br />
)<br />
•<strong>SRI</strong>-<strong>LM</strong> <strong>toolkit</strong> :<br />
•Step 1. Calculate ngram count from training data<br />
•Step 2. Create <strong>LM</strong> from ngram count<br />
3
training data<br />
• 已 斷 好 詞 的 文 件<br />
(ssp.train)<br />
關 心 孩 子 學 業<br />
可 是 又 苦 無 時 間 為 孩 子 挑 選 參 考 書 的 家 長 們<br />
從 今 天 起<br />
多 了 一 個 輕 鬆 的 選 擇<br />
只 要 趁 工 作 之 餘 逛 到 巷 口 的<br />
填 個 國 小 參 考 書 預 購 單<br />
就 能 以 八 五 折 的 價 格 在 限 定 時 間 內 取 貨 了<br />
這 項 服 務 明 年 還 將 擴 展 到 國 中 參 考 書<br />
由 於 國 小 教 科 書 版 本 不 同<br />
參 考 書 也 相 當 多<br />
各 書 店 進 書 狀 況 和 數 量 也 不 相 同<br />
4
Vocabulary<br />
(Lexicon2003-72k.txt)<br />
巴<br />
八<br />
扒<br />
叭<br />
…<br />
巴 巴<br />
叭 叭<br />
八 寶<br />
八 方<br />
八 德<br />
八 堵<br />
吧 女<br />
…<br />
共 有 71695 個 words<br />
5
ngram count file<br />
在 整 個 training<br />
data 中 出 現 的 次 數<br />
(ssp.n3.count)<br />
Unigram<br />
Bigram<br />
Trigram<br />
想 像 得 到 4<br />
想 像 得 到 的 3<br />
想 像 得 到 的 事 2<br />
想 像 得 到 的 1<br />
想 像 得 到 球 員 1<br />
想 像 得 到 球 員 可 以 1<br />
鳳 凰 123<br />
鳳 凰 騋 4<br />
鳳 凰 騋 4<br />
鳳 凰 花 5<br />
鳳 凰 花 開 1<br />
鳳 凰 花 4<br />
鳳 凰 20<br />
鳳 凰 自 行 車 1<br />
鳳 凰 自 行 車 1<br />
鳳 凰 城 20<br />
鳳 凰 城 8<br />
鳳 凰 城 大 學 1<br />
鳳 凰 城 的 1<br />
鳳 凰 城 警 方 1<br />
鳳 凰 城 太 陽 5<br />
鳳 凰 城 電 3<br />
鳳 凰 城 水 星 1<br />
鳳 凰 機 場 1<br />
鳳 凰 機 場 供 1<br />
鳳 凰 一 樣 1<br />
鳳 凰 一 樣 快 速 1<br />
鳳 凰 中 隊 1<br />
鳳 凰 中 隊 1<br />
鳳 凰 自 然 1<br />
鳳 凰 自 然 來 1<br />
鳳 凰 般 3<br />
鳳 凰 般 重 1<br />
鳳 凰 般 再 度 2<br />
鳳 凰 科 技 6<br />
……<br />
6
以 \data\ 開 頭<br />
<strong>LM</strong> Format<br />
(ssp.n3.kn.lm)<br />
最 高 的 ngram 沒<br />
有 backoff weight<br />
\data\<br />
ngram 1=71697<br />
ngram 2=2795822<br />
ngram 3=1700527<br />
各 種 ngram 的 個 數<br />
\1-grams: 是<br />
unigram 的 開 頭<br />
\1-grams:<br />
-1.804081 <br />
-99 -0.5467538<br />
-2.548589 一 -0.6464233<br />
-3.989615 一 一 -0.2506604<br />
-6.685257 一 一 恐 怖 -0.1400223<br />
-6.685257 一 一 恐 怖 攻 擊 -0.1128442<br />
-6.075799 一 丁 點 -0.1827688<br />
-4.105376 一 九 九 -1.257224<br />
-5.808214 一 了 百 了 -0.308177<br />
-5.921716 一 刀 兩 斷 -0.3545529<br />
-3.940887 一 下 -0.367599<br />
…<br />
-0.4833062 糊 裏 糊 塗<br />
-0.6593975 餐 廳 裏 往<br />
-0.6593975 館 裏 大 家<br />
-0.2190889 鎮 裏 不 同<br />
-0.4833062 鐵 窗 裏 竄<br />
-1.223669 恒 大<br />
-1.223669 恒 生<br />
-0.3077702 恒 春<br />
-0.3159989 小 型 恒 指<br />
-0.4833062 屏 東 恒 春<br />
-0.2190889 范 恒 山<br />
-0.4833062 從 恒 春<br />
-0.4833062 邊 恒 雄<br />
-0.6593975 上 粧 <br />
-0.2759993 化 粧 品<br />
\end\<br />
Log probability<br />
(Base 10)<br />
Log of backoff<br />
weight (Base 10)<br />
以 \end\ 結 尾<br />
7
ngram-count<br />
• 計 算 training data 中 每 個 出 現 的 ngram 的<br />
出 現 次 數<br />
3 表 示 trigram<br />
要 計 算 count 的 Training data<br />
詞 典 檔<br />
有 -unk: 把 OOV 當 作 一 個 符 號 處 理<br />
無 -unk: 遇 到 OOV 就 移 除<br />
輸 出 的 ngram count 檔 名<br />
8
Good-Turing Discounting and<br />
預 設 的<br />
discounting 跟<br />
backoff 方 法<br />
Katz Backoff<br />
前 一 步 ngram count 所 產 生 的 檔<br />
要 輸 出 的 <strong>LM</strong> 檔<br />
9
Compute perplexity<br />
<strong>LM</strong> 檔<br />
要 算 perplexity 的 test data<br />
輸 出 範<br />
例 :<br />
−<br />
logprob<br />
句 數 + 字 數<br />
10<br />
字 數<br />
10 −logprob<br />
10
Good-Turing Discounting Parameters<br />
maxcount<br />
mincount<br />
自 行 指 定 mincount 跟 maxcount :<br />
11
Modified Kneser-Ney Discounting<br />
12
• Take the conditional probabilities of bigrams (m-gram,<br />
m=2) for example:<br />
0 ≤ D ≤1<br />
⎧max{ C[ wi−<br />
1,<br />
wi<br />
] − D,<br />
0}<br />
⎪<br />
if C[ wi−<br />
1,<br />
wi<br />
] > 0<br />
P ( ) = ⎨ [<br />
−<br />
]<br />
KN<br />
wi<br />
w<br />
C w<br />
i−1<br />
i 1<br />
⎪<br />
⎩α<br />
( wi−<br />
1) PKN<br />
( wi<br />
)<br />
otherwise<br />
1.<br />
P<br />
KN<br />
( w ) C[ • w ]/<br />
C[ • w ]<br />
i<br />
=<br />
i ∑<br />
w<br />
C<br />
[•<br />
w ]<br />
i<br />
is<br />
j<br />
the<br />
j<br />
,<br />
unique<br />
words<br />
preceding<br />
w<br />
i<br />
2. normalizing constant<br />
α<br />
( w )<br />
i −1<br />
1 −<br />
=<br />
∑<br />
w<br />
i<br />
: C<br />
[ w w ]<br />
i −1<br />
∑<br />
w<br />
i<br />
i<br />
> 0<br />
: C<br />
max<br />
[ w w ]<br />
i −1<br />
i<br />
{ C [ w<br />
i −1w<br />
i<br />
] − D , 0}<br />
C [ w<br />
i −1<br />
]<br />
P ( w )<br />
= 0<br />
KN<br />
i<br />
13
Witten-Bell Discounting<br />
14
Witten-Bell Discounting<br />
• Key Concept—Things Seen Once: Use the count<br />
of things you’ve seen once to help estimate the<br />
count of things you’ve never seen<br />
• So we estimate the total probability mass of all the<br />
zero N-grams with the number of types divided by<br />
the number of tokens plus observed types:<br />
i:<br />
∑<br />
c i<br />
p<br />
=<br />
T<br />
*<br />
i<br />
= 0 N +<br />
T<br />
N : the number of tokens<br />
T : observed types<br />
15
Witten-Bell Discounting<br />
• T/(N+T) gives the total “probability of unseen N-<br />
grams”, we need to divide this up among all the<br />
zero N-grams<br />
• We could just choose to divide it equally<br />
Z<br />
=<br />
i:<br />
∑<br />
c i<br />
= 0<br />
1<br />
Z is the total number of<br />
N-grams with count zero<br />
p * T<br />
= i Z(<br />
N + T<br />
)<br />
16
Witten-Bell Discounting<br />
p<br />
*<br />
i<br />
ci<br />
= if ( ci<br />
N + T<br />
><br />
0)<br />
Alternatively, we can represent the smoothed counts directly as:<br />
c<br />
*<br />
i<br />
=<br />
⎧T<br />
⎪Z<br />
⎨<br />
⎪ci<br />
⎩<br />
N<br />
N + T<br />
N<br />
N + T<br />
,<br />
,<br />
if<br />
if<br />
c<br />
c<br />
i<br />
i<br />
=<br />
><br />
0<br />
0<br />
17
18<br />
Witten-Bell Discounting<br />
N<br />
T<br />
N<br />
T<br />
N<br />
N<br />
T<br />
N<br />
N<br />
T<br />
N<br />
NT<br />
T<br />
N<br />
N<br />
c<br />
Z<br />
T<br />
N<br />
N<br />
Z<br />
T<br />
c i<br />
i<br />
i<br />
=<br />
+<br />
+<br />
=<br />
+<br />
+<br />
+<br />
=<br />
+<br />
+<br />
⋅<br />
+ ∑<br />
><br />
)<br />
(<br />
2<br />
0<br />
:<br />
1<br />
)<br />
( 0<br />
:<br />
=<br />
+<br />
+<br />
+<br />
=<br />
+<br />
+<br />
⋅<br />
+ ∑<br />
><br />
T<br />
N<br />
N<br />
T<br />
N<br />
T<br />
T<br />
N<br />
c<br />
Z<br />
T<br />
N<br />
Z<br />
T<br />
c i<br />
i<br />
i
• For bigram<br />
∑<br />
p<br />
Witten-Bell Discounting<br />
( w<br />
|<br />
w<br />
)<br />
T ( wx<br />
)<br />
N(<br />
w ) T ( w<br />
*<br />
i x<br />
i:<br />
c(<br />
wx wi<br />
) = 0<br />
x<br />
+<br />
=<br />
T: the number of bigram types, N: the number of bigram token<br />
x<br />
)<br />
Z(<br />
p<br />
*<br />
w x<br />
) =<br />
∑<br />
1<br />
i:<br />
c(<br />
w x w i ) = 0<br />
T ( wi<br />
−1)<br />
( wi<br />
| wi<br />
−1)<br />
= if( c<br />
−1<br />
Z(<br />
w )( N(<br />
w ) + T ( w ))<br />
i−1<br />
i−1<br />
i−1<br />
w i w<br />
i<br />
=<br />
0)<br />
∑<br />
p<br />
( w<br />
|<br />
w<br />
)<br />
=<br />
c(<br />
w<br />
c(<br />
w )<br />
*<br />
x<br />
i x<br />
i:<br />
c(<br />
wx wi<br />
) > 0<br />
x<br />
+<br />
wi<br />
)<br />
T ( w<br />
x<br />
)<br />
19
Absolute Discounting<br />
20
P<br />
abs<br />
Smoothing<br />
absolute discounting<br />
• Absolute discounting subtracting a fixed<br />
discount D
Ristad's Natural Discounting<br />
Eric Ristad's Natural Law of Succession -- The discount factor d is identical<br />
for all counts,.<br />
d = ( n(n+1) + q(1- q) ) / ( n^2 + n + 2q )<br />
where n is the total number events tokens, q is the number of observed<br />
event types. If q equals the vocabulary size no discounting is performed.<br />
22