对于给定的有限代表字符串列表,正则表达式的语法推理?

2024-01-09

我正在分析一个大型公共数据集,其中包含许多详细的人类可读字符串,这些字符串显然是由某些常规(在形式语言理论意义上)语法生成的。

逐一查看这些字符串组以了解其中的模式并不太难;不幸的是,大约有 24,000 个独特的字符串被分为 33 个类别和 1714 个子类别,因此手动执行此操作有点痛苦。

基本上,我正在寻找一种现有的算法(最好使用现有参考实现) 获取任意字符串列表并try推断一些可用于生成它们的最小(对于最小的合理定义)跨越正则表达式集(即从该语法生成​​的语言的有限字符串集中推断正则语法)。

我考虑过重复进行贪婪的最长公共子串消除,但这只是到目前为止,因为它不会崩溃除了精确匹配之外的任何内容,因此不会检测到,例如,在特定位置处变化数字字符串的常见模式语法。

暴力破解任何不属于公共子串消除范围的东西都是可能的,但在计算上可能不可行。 (此外,我已经考虑过,子字符串消除可能存在“阶段排序”和/或“局部最小值”问题,因为您可能会进行贪婪的子字符串匹配,最终迫使最终语法压缩程度较低/最小,尽管它最初似乎是最好的减少)。


是的,事实证明这确实存在;所需要的是学术上所谓的DFA学习算法,其中的例子包括:

  • 安格鲁因 L*
  • L*(向列中添加反例)
  • 卡恩斯/瓦齐拉尼
  • 里维斯特/夏皮尔
  • NL*
  • 正负推理(RPNI)
  • DeLeTe2
  • Biermann & Feldman 算法
  • Biermann & Feldman 算法(使用 SAT 求解)

上述内容的来源是libalf http://libalf.informatik.rwth-aachen.de/,一个开源的C++自动机学习算法框架;至少其中一些算法的描述可以在这本教科书 https://rads.stackoverflow.com/amzn/click/com/0521763169等。还有语法推理算法(包括DFA学习)的实现吉工具箱 https://code.google.com/p/gitoolbox/对于 MATLAB。

Since 这个问题以前曾出现过 https://stackoverflow.com/questions/5958483/grammar-inference-library并且过去没有得到令人满意的答案,我正在评估这些算法,并将更新更多关于它们有多有用的信息,除非在该领域具有更多专业知识的人首先这样做(这是更好的选择)。

NOTE: I am accepting my own answer for now but will gladly accept a better one if someone can provide one.

FURTHER NOTE: I've decided to go with the route of using custom code, since using a generic algorithm turns out to be a bit overkill for the data I'm working with. I'm leaving this answer here in case someone else needs it, and will update if I ever do evaluate these.

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

对于给定的有限代表字符串列表,正则表达式的语法推理? 的相关文章

随机推荐

  • WCF 错误 - 找不到引用合同“UserService.UserService”的默认端点元素

    任何想法如何解决这一问题 UserService UserServiceClient userServiceClient new UserServiceClient userServiceClient GetUsersCompleted n
  • pandas,按函数分组后的列名称

    我有一个简单的 Pandas Dataframe 名为purchase cat df email cat 0 email protected cdn cgi l email protection Mobiles Tablets 1 emai
  • MongoDB 主机名/URI 配置

    请注意 这看起来很长 但提供了上下文并在底部列出了我的主要问题 我研究了所有部分并包括参考资料 我用的是 这在三个独立的虚拟机上创建了两个 Mongo 服务器 主服务器和辅助服务器 和仲裁器的副本集 我没有更改任何虚拟机配置 除了打开防火墙
  • 无法在 iPhone/iPod touch 的 Safari iOS 7 中隐藏导航栏

    我不相信有任何解决方案可以使用 javascript css html 以编程方式隐藏栏 但让我尝试描述一个问题 我们是移动游戏开发团队 我们开发一款游戏已经一年了 iOS 7 发布后 我们遇到了无法隐藏导航栏的问题 一旦用户点击 Safa
  • Rails:更改操作邮件程序中的默认发件人

    我正在使用 Rails 应用程序中的操作邮件程序发送电子邮件 但它只允许一个默认发件人 这是我的 UserMailer 类 class UserMailer lt ActionMailer Base default from gt emai
  • 停止线程:标志与事件[重复]

    这个问题在这里已经有答案了 我看到了例子例如这里 https stackoverflow com a 325528 4653485使用一个Event https docs python org 3 library threading htm
  • QML:无法将[未定义]分配给

    我正在尝试将 Qt Android 程序的界面从 QWidgets 重写为 QML 我之前从未使用过它 因此错误可能非常明显且愚蠢 新界面基于ListView 看起来像 ListView id listView x 16 y 146 wid
  • 如何在 XCode 4.3 中为仅限 iPhone 的应用程序指定 iPad Retina 图标?

    我的 iPhone 应用程序图标在 iPhone Retina 和 iPad 中显示良好 但在 iPad 视网膜 模拟器和设备 上 我得到一个图标 显然包含应用程序的开始屏幕 鉴于我的应用程序仅针对 iPhone 设计 而非 通用 因此 X
  • 当我的网站打开多个选项卡时,为什么 setTimeout 会加速?

    我有一个每秒倒计时的计时器 它工作得很好 直到用户打开我的网站的 3 或 4 个选项卡 此时最新选项卡的计时器速度变为两倍或三倍 我目前只能在 IE8 中重现该错误 我之前使用的是 setInterval 并且也可以在 Firefox 中重
  • 使用itextsharp将字体嵌入到pdf中

    我尝试使用 itextsharp 5 2 1 0 嵌入字体 但出现错误 字体是 KozGoPro Light otf 经过一番研究后发现它是日语字体 我已经尝试过以下 Dim tblx1 As PdfPTable New PdfPTable
  • HTTP 标头中的“Content-Length”字段是什么?

    这是什么意思 使用标头中指定的编码的编码内容字符串的字节数 内容字符串的字符数 特别是在以下情况Content Type application x www form urlencoded 它是请求或响应正文中数据的字节数 正文是标题下方空
  • 如何将文件句柄传递给函数?

    当我运行下面的代码时我得到 Can t use string F as a symbol ref while strict refs in use at T pl line 21 其中第 21 行是 flock fh LOCK EX 我究竟
  • glDrawElements 使用了错误的 VBO?

    我正在尝试在屏幕上渲染两个不同的对象 据我所知 问题是OpenGL使用了错误的顶点缓冲区 但使用了正确的索引缓冲区 但我不太确定我目前正在做的任何事情 因为我几乎已经开始再次学习OpenGL 这是当前显示的内容 http puu sh ek
  • Python itertools 产品,但有条件吗?

    我有一个函数 fun 需要几个参数 p0 p1 对于每个参数 我给出一个可能值的列表 p0 list a b c p1 list 5 100 我现在可以为 p0 p1 的每个组合调用我的函数 for i in itertools produ
  • en_US 或 en-US,您应该使用哪一个? [复制]

    这个问题在这里已经有答案了 假设您想在数据库中存储用户首选项的区域设置 您将使用哪个值 en US 或 en US 它们是两个标准 但是您更喜欢使用哪一个作为您自己的应用程序的一部分 Updated 似乎许多网站都使用破折号而不是下划线 例
  • 以纱线集群模式在 YARN 上运行 Spark:控制台输出去了哪里?

    我按照此页面在 YARN 上以纱线集群模式运行 SparkPi 示例应用程序 http spark apache org docs latest running on yarn html http spark apache org docs
  • http-equiv="refresh" 是否保留引用信息和元数据?

    如果我设置一个这样的页面 执行重定向时浏览器是否会发送引用者信息和其他元数据 此处测试时 Firefox 和 IEdo not但铬does发送引荐来源网址 尽管这也不一致 无论它是否发送到同一域 因为我找不到任何说明什么的规范should是
  • MVC 的缓存层 - 模型还是控制器?

    我正在重新考虑在哪里实现缓存部分 您认为最合适的实施地点在哪里 在每个模型中 还是在控制器中 方法 1 伪代码 mycontroller php MyController extends Controller class function
  • 从 ActivityGroup 开始ActivityForResult?

    尝试从活动组启动活动时 我似乎无法得到任何结果 我已将 onactivityresult 放入活动和活动组中 具体来说 我试图让用户从 Intent ACTION GET CONTENT 中选择照片 视频 但我从来没有得到任何回报 我究竟做
  • 对于给定的有限代表字符串列表,正则表达式的语法推理?

    我正在分析一个大型公共数据集 其中包含许多详细的人类可读字符串 这些字符串显然是由某些常规 在形式语言理论意义上 语法生成的 逐一查看这些字符串组以了解其中的模式并不太难 不幸的是 大约有 24 000 个独特的字符串被分为 33 个类别和