美文网首页
WFST 语言模型

WFST 语言模型

作者: 电子伏特 | 来源:发表于2020-02-28 15:57 被阅读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)

    几点说明

    • WFST中每一个状态有两种身份:作为发射状态时,表示词历史;作为到达状态时,表示语言模型中的一个文法条目(准确的说是和发射状态一起组成语言模型中的一个文法条目)
    • WFST中没有表示最高元文法的状态(例如三元文法),因为最高元文法不会作为词历史出现,不满足上一条所说的条件。三元文法A B C的状态是从AB表示的状态到BC表示状态的一条发射边(见上表)。
    • backoff权重的理解:若三元文法A B D不存在,此时词历史是A B,因此要回退到以B为词历史的文法,而回退权重是现在词历史A B所关联的回退权重,计算公式如下:

    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

    相关文章

      网友评论

          本文标题:WFST 语言模型

          本文链接:https://www.haomeiwen.com/subject/onfreftx.html