WFST 语言模型

2020-02-28  本文已影响0人  电子伏特

WFST语言模型表示形式

  1. arpa语言模型格式如下
\data\
ngram 1=5
ngram 2=3
ngram 3=2

\1-grams:
-1.3683  <s>      -2.5372
-1.6684  </s>      -2.2373
-1.5682  A      -2.8371
-1.4681  B      -2.9370
-1.0681  C      -2.0370

\2-grams:
-3.4627  A  B    -0.9884
-3.8627  A  C    -0.4884
-3.1627  B  C    -0.5884

\3-grams:
-4.3813  A    B      C
-4.4782  A    C      B

\end\
  1. arpa2fst转换后的WFST如下
语言模型WFST

状态与词历史对应关系如下表:

状态编号 词历史
0 -
4 A
5 B
6 C
7 AB
8 AC
9 BC(ABC)
10 CB(ACB)

几点说明

prob(D|A B) = backoff(A B)*prob(D|B) if (A B D) do not exist

因此最高元文法没有回退权重,因为最高元文法没有词历史的身份。根据以上的理解,WFST中表示回退是从A B表示的状态到B表示的状态的一条空边,边上的权重为backoff-weight

arpa2fst

arpa2fst程序会将apra语言模型转换为上图中的fst形式。
如果添加选项arpa2fst --disambig-symbol=#0指定#0,则会进行以下处理:

  1. 删除空边,即一个状态上只发出空边也就是回退边(例如上图中的状态10),则删除该边并状态合并。从语义上讲,这实际是删除了不存在的二元词历史所映射的状态,达到减小状态数的目的。
  2. 用特殊符号#0替换回退边上的输入空符号
  3. 将开始结束标签<s> </s>替换为空

处理后的G.fst如下:


G.PNG
上一篇下一篇

猜你喜欢

热点阅读