Я новичок в OpenFST и пытаюсь создать простые преобразователи для слов в C ++. Основная цель — составить композицию преобразователей и получить критерий различия для двух слов.
Проблема в том, что я не знаю (и не могу найти учебники), как я могу создать преобразователь для слов «кошка», «летучая мышь» и составить его.
Простой код не возвращает мне кратчайший путь. Также я не совсем понимаю параметры 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;
}
Спасибо за помощь ребята!
Задача ещё не решена.
Других решений пока нет …