4

尝试运行我用输入 FSA 编译的 FST,但是当我这样做时没有输出。当我搜索时,openfst 中唯一的运行命令是 fstcompose,所以我尝试做的是将 fst 与输入作为 fsa 组合起来。

代词.fsm.txt

0   1   <s> <s>
1   0   <eps>   <eps>
0   2   </s>    </s>
2   0   <eps>   <eps>
0   3   <unk>   <unk>
3   0   <eps>   <eps>
0   4   a   a
4   5   l   l
5   6   l   l
6   0   +PRN    #
0

符号.txt

<eps>   0
<s> 1
</s>    2
<unk>   3
a   4
l   5
+PRN    6
#   7

test.fsm.txt

0 1 a
1 2 l
2 3 l
3 4 +PRN
4

所以我创建了 pronoun.fsm.txt 作为 FST

fstcompile --isymbols=symbols.txt --osymbols=symbols.txt pronoun.fsm.txt>pronoun.fst

然后,我将输入创建为接受器

fstcompile --isymbols=symbols.txt --acceptor=true test.fsm.txt>test.fst

最后,我编写了两个 fst,但输出什么都没有。

fstcompose pronoun.fst test.fst|fstprint --isymbols=symbols.txt --osymbols=symbols.txt

这是交易,我想运行一个字符串输入到我用 fstcompose 命令创建的转换器。但是输出是空白的。

4

1 回答 1

3

我发现了问题。我想回答这个问题而不是删除它,因为 OpenFST 的文档确实不足,而这个问题回答了如何在 OpenFST 上运行 FST。问题出在 fstcompose 上,您必须将输入作为第一个参数。所以解决方案是

fstcompose test.fst pronoun.fst |fstprint --isymbols=symbols.txt --osymbols=symbols.txt
于 2017-11-11T10:56:47.080 回答