【问题标题】:Finete State machine visualizer有限状态机可视化器
【发布时间】:2017-08-05 09:52:46
【问题描述】:
我需要一个在 FST 运行期间打印/可视化输入/输出对的应用程序。我的意思是,对于 fst 的每个状态,它需要打印出一个元组,其中包含该状态的输入和该状态的输出。现在我可以生成与foma、hfst 和xfst fst 工具兼容的 fst 文件。所以,我想我需要的可视化工具应该足以兼容其中任何一个。有没有人知道这样的工具?
【问题讨论】:
标签:
data-visualization
state-machine
fst
finite-state-automaton
hfst
【解决方案1】:
foma可以生成dot格式的文件,可以被graphviz可视化。在 Debian/Ubuntu 上,安装 graphviz 与
$ sudo apt-get install graphviz
foma 可以读取att 格式文件(使用hfst-fst2txt 生成HFST 可以读取的任何内容,或lt-print 生成来自lttoolbox 的任何内容);假设你有这样一个名为 myfst.att 的文件,你可以这样做
$ foma
foma[0]: read att myfst.att
foma[1]: view
显示完整的 FST。这将显示 FST 状态之间每个边缘上的每个输入/输出对。
但是你说的是“在运行期间”——你是说还要显示“实时状态”的队列吗?如果是这样,我不知道有什么工具可以做到这一点,那就太好了!您可以做的一件事是修改 HFST 源以在处理时输出实时状态和字符串向量列表,然后将其与 dot 文件结合到例如现场状态的颜色。 (如果是这样,你可能想把它带到 irc.freenode.net 上的#hfst 频道。)
https://ftyers.github.io/2017-%D0%9A%D0%9B_%D0%9C%D0%9A%D0%9B/hfst.html 上还有一个脚本att2dot.py,可以在命令行上使用,例如
hfst-fst2txt chv.lexc.hfst | python3 att2dot.py | dot -Tpng -ochv.lexc.png 如果您更喜欢可编写脚本的东西。如果您使用 HFST 的 Python 库中的它,您可能能够更轻松地获得分析每个部分的“实时状态”。