我是 OpenFST 的新手,正在尝试为 C++ 中的单词创建一个简单的转换器。主要目的是对换能器进行组合并获得两个单词的差异标准。问题是我不知道(也找不到教程)如何为“cat”、“bat”等词制作转换器并编写它。简单的代码不会以最短的方式返回我。我也不清楚 StdArc 的参数。我的代码如下:
int main(int argc, char *argv[])
{
char firstword[] = "cat";
char secondword[] = "bath";
VectorFst<StdArc> fst1;
int start_flag = 1;
int i = 0;
for (i = 0; i < 3; i++)
{
fst1.AddState();
if(start_flag)
{
fst1.SetStart(i);
start_flag = 0;
}
fst1.AddArc(i, StdArc(firstword[i], firstword[i+1],i, i+1);
}
fst1.AddState();
fst1.SetFinal(i,0);
VectorFst<StdArc> fst2;
start_flag = 1;
i = 0;
for (i = 0; i < 4; i++)
{
fst2.AddState();
if(start_flag)
{
fst2.SetStart(i);
start_flag = 0;
}
fst2.AddArc(i, StdArc(secondword[i],secondword[i+1],i,i+1));
}
fst2.AddState();
fst2.SetFinal(i,0);
VectorFst<StdArc> fst3;
Compose(fst1, fst2, &fst3);
vector<StdArc::Weight> distance;
ShortestDistance(fst3, &distance, true);
return 1;
}
谢谢你们的帮助!