gpt4 book ai didi

python-3.x - 如何通过点文件可视化 Pyfst 传感器

转载 作者:行者123 更新时间:2023-12-03 16:44:28 28 4
gpt4 key购买 nike

我正在学习如何使用 Pyfst 创建换能器,并且我正在尝试可视化我创建的换能器。最终目标是能够将传感器写入点文件并在 Graphviz 中查看它们。

我拿了一个示例代码来看看如何可视化下面的接受器。

a = fst.Acceptor()
a.add_arc(0, 1, 'x', 0.1)
a[1].final = -1
a.draw()

当我使用包中附带的 draw() 时,出现错误:

File "/Users/.../tests.py", line 42, in <module>
a.draw()

File "_fst.pyx", line 816, in fst._fst.StdVectorFst.draw
(fst/_fst.cpp:15487)

File "/Users/.../venv-3.6/lib/python3.6/re.py", line 191, in sub
return _compile(pattern, flags).sub(repl, string, count)

TypeError: cannot use a string pattern on a bytes-like object

如果我尝试通过以下方式将上述接受器写入 .dot:

def fst_dot(dot_object, filename):
path, file = split(filename)
new_path = join(dot_files_folder_path, path)
if not os.path.exists(new_path):
os.makedirs(new_path)
if hasattr(dot_object, 'dotFormat'):
draw_string = dot_object.dotFormat()
else:
draw_string = dot_object.draw()
open(join(dot_files_folder_path, filename + ".dot"), "w").write(draw_string)

然后我也得到以下错误:

File "/Users/...tests.py", line 43, in <module>
fst_dot(a, 'acceptor')

File "/Users/...tests.py", line 22, in fst_dot
draw_string = dot_object.draw()

File "_fst.pyx", line 816, in fst._fst.StdVectorFst.draw
(fst/_fst.cpp:15487)

File "/Users/.../venv-3.6/lib/python3.6/re.py", line 191, in sub
return _compile(pattern, flags).sub(repl, string, count)

TypeError: cannot use a string pattern on a bytes-like object

因此,这两个错误看起来是一样的 - draw() 存在某种问题。在 pyfst 网站上,它说 draw 用于换能器的点格式表示。

我不明白如何修复错误。任何帮助将不胜感激。

我正在使用 OSX 和 PyCharm。

最佳答案

您可以尝试使用 Python2 看看是否有帮助。

但是,我认为您最好使用 OpenFST 1.5+ 中包含的 Python 绑定(bind)。该库还能够写入 GraphViz .dot 文件。这里有可用的文档:

http://www.openfst.org/twiki/bin/view/FST/PythonExtension

关于python-3.x - 如何通过点文件可视化 Pyfst 传感器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41747747/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com