1

我是 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;
}

谢谢你们的帮助!

4

0 回答 0