为什么 OpenFST 似乎没有“运行”或“接受”或“转换”命令?

2023-11-22

我听说过许多有关 OpenFST 的好消息,但我却很难让它发挥作用。我正在构建一个 FST 自动机(fstcompile),我想将其用作接受器来检查一组字符串是否匹配(与正则表达式非常相似,但具有 OpenFST 提供的自动机优化所提供的优点)。事情是这样的:
如何检查生成的自动机是否接受字符串?

我发现一条建议输入字符串应转换为一个简单的自动机并与接受自动机组合以获得结果。我发现它非常麻烦和奇怪。有没有更简单的方法(通过命令行或Python/C++)?


这是一个关于如何测试自动机是否接受字符串的快速示例打开 FST 的 Python 包装器。事实上,你必须将你的输入变成一个自动机,而 Open FST 甚至不会为你创建这个“线性链自动机”!幸运的是,自动化这个过程很简单,如下所示:

def linear_fst(elements, automata_op, keep_isymbols=True, **kwargs):
    """Produce a linear automata."""
    compiler = fst.Compiler(isymbols=automata_op.input_symbols().copy(), 
                            acceptor=keep_isymbols,
                            keep_isymbols=keep_isymbols, 
                            **kwargs)

    for i, el in enumerate(elements):
        print >> compiler, "{} {} {}".format(i, i+1, el)
    print >> compiler, str(i+1)

    return compiler.compile()

def apply_fst(elements, automata_op, is_project=True, **kwargs):
    """Compose a linear automata generated from `elements` with `automata_op`.

    Args:
        elements (list): ordered list of edge symbols for a linear automata.
        automata_op (Fst): automata that will be applied.
        is_project (bool, optional): whether to keep only the output labels.
        kwargs:
            Additional arguments to the compiler of the linear automata .
    """
    linear_automata = linear_fst(elements, automata_op, **kwargs)
    out = fst.compose(linear_automata, automata_op)
    if is_project:
        out.project(project_output=True)
    return out

def accepted(output_apply):
    """Given the output of `apply_fst` for acceptor, return True is sting was accepted."""
    return output_apply.num_states() != 0

让我们定义一个简单的 Acceptor,它只接受一系列“ab”:

f_ST = fst.SymbolTable()
f_ST.add_symbol("<eps>", 0)
f_ST.add_symbol("a", 1)
f_ST.add_symbol("b", 2)
compiler = fst.Compiler(isymbols=f_ST, osymbols=f_ST, keep_isymbols=True, keep_osymbols=True, acceptor=True)

print >> compiler, "0 1 a"
print >> compiler, "1 2 b"
print >> compiler, "2 0 <eps>"
print >> compiler, "2"
fsa_abs = compiler.compile()
fsa_abs

enter image description here

现在我们可以简单地应用 Acceptor 使用:

accepted(apply_fst(list("abab"), fsa_abs))
# True
accepted(apply_fst(list("ba"), fsa_abs))
# False

要了解如何使用传感器,请查看我的其他答案

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 OpenFST 似乎没有“运行”或“接受”或“转换”命令? 的相关文章

  • (discord.py) 尝试更改成员角色时,“用户”对象没有属性“角色”

    因此 我正在尝试编写一个机器人 让某人在命令中指定的主持人指定的一段时间内暂停角色 我知道该变量称为 小时 即使它目前以秒为单位 我稍后会解决这个问题 基本上 它是由主持人在消息 暂停 personmention numberofhours
  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • 如何在python中读取多个文件中的文本

    我的文件夹中有许多文本文件 大约有 3000 个文件 每个文件中第 193 行是唯一包含重要信息的行 我如何使用 python 将所有这些文件读入 1 个文本文件 os 模块中有一个名为 list dir 的函数 该函数返回给定目录中所有文
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 导入错误:没有名为 _ssl 的模块

    带 Python 2 7 的 Ubuntu Maverick 我不知道如何解决以下导入错误 gt gt gt import ssl Traceback most recent call last File
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • IRichBolt 在storm-1.0.0 和 pyleus-0.3.0 上运行拓扑时出错

    我正在运行风暴拓扑 pyleus verbose local xyz topology jar using storm 1 0 0 pyleus 0 3 0 centos 6 6并得到错误 线程 main java lang NoClass
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • 从 Python 中的类元信息对 __init__ 函数进行类型提示

    我想做的是复制什么SQLAlchemy确实 以其DeclarativeMeta班级 有了这段代码 from sqlalchemy import Column Integer String from sqlalchemy ext declar
  • 如何使用google colab在jupyter笔记本中显示GIF?

    我正在使用 google colab 想嵌入一个 gif 有谁知道如何做到这一点 我正在使用下面的代码 它并没有在笔记本中为 gif 制作动画 我希望笔记本是交互式的 这样人们就可以看到代码的动画效果 而无需运行它 我发现很多方法在 Goo
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9

随机推荐

  • 如何使用 FFmpeg

    我正在尝试从视频中提取帧 并且我选择了 ffmpeg 如果您知道更好的东西请告诉我 来完成此任务 我已经下载了它的源代码 但不知道如何使用它 我怎样才能编译它 推荐的语言是什么 我了解 Python 和 C 请注意 我的操作系统是 Wind
  • 如何添加自定义属性?

    如何在字段中添加自定义属性联系表 7 没有 JavaScript 例如页面中有这样一个字段
  • HTML5 File API 简单检查文件是否存在

    我有一个临时文件 API 存储 HTML5 但我无法检查文件是否存在 有没有简单的方法可以检查呢 我是否必须实际尝试阅读该文件才能找到答案 周围的搜索没有给我带来任何具体的结果 同步检查会很好 这可能吗 你必须阅读该文件 以下示例基于这个演
  • Android WebView中如何加载本地图片

    我正在尝试将存储在数据库中包含图像的 html 字符串加载到WebView 图像存储在内部存储器中 我给出了对 html 字符串的引用 但它不起作用 有什么帮助吗 String content p Can we have a rotatio
  • window.x 和 x 有什么区别?

    假设 x 是一个从未定义的变量 因此它应该是未定义的 在以下场景中 1 if x do something ReferenceError x is not defined 2 if window x do something worked
  • 根据参数数量重载宏

    我有两个宏FOO2 and FOO3 define FOO2 x y define FOO3 x y z 我想定义一个新的宏FOO如下 define FOO x y FOO2 x y define FOO x y z FOO3 x y z
  • 如何使用jquery开发是否确认

    如何使用 jquery 或任何其他方法开发带有是否按钮的确认对话框 当我单击提交按钮时 我需要确认 使用本机浏览器确认对话框 if confirm Are you sure Ok button pressed else Cancel but
  • 从 Cocoa 中的 WebView 获取源 HTML

    我正在开发一个 OS X 程序 用户可以在 WebView 中进行一些简单的所见即所得 HTML 编辑 作为 Cocoa 和 WebKit 编程的新手 我完全不知道如何从 WebView 获取选定的文本 目的是获取用户选择的内容 在文本周围
  • 为什么我们不应该在 py 脚本中使用 sys.setdefaultencoding("utf-8") ?

    我见过很少的 py 脚本在脚本顶部使用它 在什么情况下应该使用它 import sys reload sys sys setdefaultencoding utf 8 根据文档 这允许您从默认的 ASCII 切换到其他编码 例如 UTF 8
  • 线程“main”中出现异常 java.net.BindException:地址已在使用中 - 仅 Netbeans 中出现错误

    在我的机器上 以下代码在 Eclipse 中编译 但在 Netbeans 中引发异常 错误消息显示 线程 main java net BindException 中出现异常 地址已在使用中 Netbeans 中使此代码编译的正确配置是什么
  • perl5 库可以在 perl6 中导入吗?

    我知道 perl6 将明确允许导入 perl5 代码 但我无法做到这一点 这是perl6code use perl5 Net FTP 它报告了一个error 是否存在任何配置问题或尚未准备好 Use 内联 Perl5在 Raku 中嵌入任意
  • C++ 中的向量::size_type

    这个C 语句是什么意思 vector
  • 为什么更改一个组合中的 SelectedItem 会更改所有其他组合?

    我以这种方式填充组合框 foreach Control c in this Controls if c is ComboBox c as ComboBox DataSource DataSet1 Tables 0 c as ComboBox
  • OpenCL/OpenGL 纹理互操作/窗口问题

    为了提高渲染质量 我正在 OpenCL 1 1 中编写多功能可分离缩减器 基本图像 仅覆盖最终图像的一小部分 被渲染到非常大的帧缓冲区中 然后 其附加颜色的纹理被下采样并通过 OpenCL 放入另一个纹理中 最后 渲染一个与屏幕对齐的四边形
  • 付款处理商 - 如果我想在我的网站上接受信用卡,我需要了解什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 这个问题谈论不同的支付处理
  • Firebase 在创建帐户后返回用户对象

    我尝试在 Firebase 中创建一个用户 然后在 Web 服务器上的数据库中创建一个用户配置文件 我已经实现了以下代码 它很好地创建了用户 但是我不确定如何接收用户 ID 我需要一个唯一的 ID 来创建数据库结构 有没有办法在调用 cre
  • Java:如何将字符串(HH:MM:SS)转换为持续时间?

    我想将格式为 HH MM SS 或 MM SS 或 SS 的字符串转换为 Duration 数据类型 解决方案 private ArrayList
  • 检查 YouTube 视频是否实时或已上传

    我有一个 YouTube 直播活动 我可以使用 YouTube IFrame Player API 播放视频 我想知道是否有任何方法可以确定该视频是直播活动视频还是常规上传的视频 我需要这些信息来设计我的控件 您可以做到这一点 目前 的唯一
  • 允许协同设计使用我的钥匙串时遇到问题

    I am using El Capitan and Xcode 7 1 I am trying to build and archive my application to upload to app store After compili
  • 为什么 OpenFST 似乎没有“运行”或“接受”或“转换”命令?

    我听说过许多有关 OpenFST 的好消息 但我却很难让它发挥作用 我正在构建一个 FST 自动机 fstcompile 我想将其用作接受器来检查一组字符串是否匹配 与正则表达式非常相似 但具有 OpenFST 提供的自动机优化所提供的优点