0. 知识补充:
有穷自动机(Finite Automata):一个有穷自动机有一个有限的状态集合以及状态之间的跳转,其中每个跳转至少有一个标签(label)。
最基本的FA是有限状态接收机(finite state acceptor/FSA),输入一个输入符号序列,FSA返回“接受”/“不接受”。其判断条件为:是否存在一条从初始状态到终止状态的路径,使得路径上的标签序列正好等于输入符号序列,如果是则返回“接受”,否则返回“不接受”。
下图为一个FSA的例子:

图中的节点代表状态,节点间的连线代表状态之间的跳转,连线上的字母为每个跳转的标签(label),加粗的圆圈表示初始状态,两个圆圈表示终止状态。
当输入序列为“abbcd”时,这个FSA返回接受,因为存在开始状态 0 到终止状态 5 的一条路径“011125”,使得路径上的标签序列正好等于输入符号序列。当输入序列为“abccd”时,则返回“不接受”,因为不存在满足条件的路径。
上述FSA匹配的所有字符串用正则表达式表示为:ab*cd | bcd*e
FSA有几种扩展,即有限状态转录机(Finite-State Transducer/FST)、加权有限状态接收机(Weighted Finite-State Acceptor/WFSA)、加权有限状态转录机(Weighted Finite-State Transducer/WFST)。其继承了FSA的基本特性,但是他们的输出不再局限于“接受”/“不接受”。
有限状态转录机(Finite-State Transducer/FST):其每个边上是一个pair<输入标签:输出标签>,如下图所示:

其中每个边的 pair 用“输入:输出”表示。
其描述了把一个接受的输入序列转换为另一个输出序列的转换规则。例如,输入序列为“abcd”时,输出序列为“zyxw”。
加权有限状态接收机(Weighted Finite-State Acceptor/WFSA):其每个边上增加了一个权重weight,此外初始状态和终止状态也有对应的初始weight和终止weight。其中weight通常表示状态跳转的概率或者代价,一条路径中的weight通过“乘法”累计,不同路径的weight通过“加法”累计。从而输出接受的不同路径的度量。WFSA如下图所示:

当输入状态为“abcd”时,输出为:0.5*1.2*0.7*3*2*0.1=0.252。
加权有限状态转录机(Weighted Finite-State Transducer/WFST):其每条边上不仅是一个pair<输入标签:输出标签>,还有对应的权重,此外初始状态和终止状态也有对应的初始weight和终止weight。WFST如下图所示:

当输入序列为“abcd”时,输出为“zyxw / 0.252”。
半环(Semiring):半环类似于环,这是一种代数结构,这里用来定义WFST的加权值,一个半环定义为。其中 K 是一个集合;
是在 K 上的“加法”和“乘法”;
分别表示零元和幺元。一下是一些半环举例:

这样定义的好处是可以使WFST相关操作的表达式统一。例如当权重是概率时,路径总权重一般为相乘;当权重是损失时,路径总权重一般是相加 。分开定义会很冗杂,引入半环定义后,可以统一公式,在权重代表不同的意义时,即其在不同的半环集合中时,使用其对应的“加法”、“乘法”、零元和幺元即可。
1. 加权有限状态转录机(Weighted Finite-State Transducer/WFST)
WFST(Weight finite state transducer),带权有限状态转录器,可以用一个八元组进行表示:

最低0.47元/天 解锁文章
4788

被折叠的 条评论
为什么被折叠?



