Neuralizing Regular Expressions for Slot Filling 神经网络转回自动机

本文为作者个人观点,仅供参考、交流、学习
论文地址:Neuraling Regular Expressions for Slot Filling
GitHub地址:RE2NN-SEQ

  在论文中,讲述了如何将正则表达式转换为神经网络(具体流程见Neuralizing Regular Expressions for Slot Filling 流程解析)并且在zero-shot或者few-shot的情况下均优于其它方法

与其它方法对比图


  根据屠可伟教授的分享,正则表达式转换成的神经网络可以转换成自动机,为研究神经网络的可解释性提供了新的思路。但在文中并没有提出具体的转换方法。于是我按照屠可伟教授的思路,将i-FST分解成的三个权值矩阵经过训练后重新合并,然后对其round,尝试获得新的自动机。

合并三个权值矩阵

with torch.no_grad():V     = tl.tensor(model.V_embed)S1    = tl.tensor(model.S1)S2    = tl.tensor(model.S2)t_mat = tl.kruskal_to_tensor((np.ones(args.rank), [V, S1, S2]))t_mat = np.round(t_mat)

构建新的自动机

new_automata   = AutomataMultipleStart()
automata_dicts = load_pkl(args.automata_path)
new_automata.states = automata_dicts['automata']['states']
new_automata.startstate  = automata_dicts['automata']['startstate']
new_automata.finalstates = automata_dicts['automata']['finalstates']
# 可选项,加上则是在原自动机的基础上新增转移情况,不加则是单纯构建新的自动机,本文选择不加
# new_automata.transitions = automata_dicts['automata']['transitions']for i in trange(t_mat.shape[0]):for j in range(t_mat.shape[1]):for k in range(t_mat.shape[2]):if t_mat[i][j][k] == 1:for s in range(C_output_mat.shape[0]):if C_output_mat[s][k] == 1:breakif s == C_output_mat.shape[0]-1:new_automata.addtransition(j, k, '{}<:>{}'.format(i2t[i], 'oo'))else:new_automata.addtransition(j, k, '{}<:>{}'.format(i2t[i], i2s[s]))
  • 由于状态数众多,仅展示部分状态转移条件
  • 新自动机转移情况复杂不在此展示

原始状态转移图

原状态 s0

{0: {'$<:>oo'}, 1: {'download<:>o', 'show<:>o', 'find<:>o', 'get<:>o'}, 2: {'looking<:>o'}}

新状态 s0

{1: {'download<:>o', 'show<:>o', 'find<:>o', 'get<:>o'}, 9: {'show<:>o'}, 2: {'looking<:>o'}}

可见新状态 s0没有保留自循环部分,并且新增了至状态9的转移

原状态 s3

{4: {'the<:>o', 'a<:>o'}}

新状态 s3

{4: {'the<:>o', 'a<:>o'}, 35: {'the<:>i-playlist', 'a<:>i-playlist'}, 91: {'a<:>b-service', 'the<:>b-service'}, 33: {'playlist<:>o'}, 38: {'playlist<:>o'}, 143: {'2011<:>b-year', 'thirties<:>b-year', 'fourties<:>b-year', 'nineties<:>b-year', 'fifties<:>b-year', 'sixties<:>b-year', 'seventies<:>b-year', 'twenties<:>b-year', '2003<:>b-year', 'eighties<:>b-year', '2016<:>b-year', '1958<:>b-year'}, 84: {'see<:>o', 'watch<:>o'}}

除了状态4还增加了许多新的状态转移

原状态 s9

{10: {'$<:>b-object_name'}}

新状态 s9

{73: {'the<:>i-spatial_relation'}, 9: {'called<:>o'}, 136: {'house<:>i-object_location_type', 'theatre<:>i-object_location_type'}}

原状态s137

新状态s137

总结

RE2NN通过神经网络将并行的多个独立规则变得相互联系,形成一个状态转移网络,同时去掉了一些“不必要”的转移情况,可能是数据集中未出现的转移情况,使其更加合理。感谢屠可伟教授提供的思路,确实让人耳目一新。

Neuralizing Regular Expressions for Slot Filling 神经网络转回自动机相关推荐

  1. 《D o C P》学习笔记(3 - 1)Regular Expressions, other languages and interpreters - Lesson 3

    备注1:每个视频的英文字幕,都翻译成中文,太消耗时间了,为了加快学习进度,我将暂停这个工作,仅对英文字幕做少量注释. 备注2:将.flv视频文件与Subtitles文件夹中的.srt字幕文件放到同1个 ...

  2. Slot-Gated Modeling for Joint Slot Filling and Intent Prediction论文笔记

    文章目录 摘要 方法 Attention-Based RNN Model Slot Filling Intent Prediction Slot-Gated Mechanism Joint Optim ...

  3. Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling论文笔记

    文章目录 摘要 方法 Encoder-Decoder Model with Aligned Inputs Attention-Based RNN Model 实验 论文连接:Attention-Bas ...

  4. Slot Filling详细讲解

    1. 从一个栗子开始 - Slot Filling 比如在一个订票系统上,我们的输入 "Arrive Taipei on November 2nd" 这样一个序列, 我们设置几个槽 ...

  5. Coursera课程Python for everyone:Quiz: Regular Expressions

    Quiz: Regular Expressions 10 试题 1. Which of the following best describes "Regular Expressions&q ...

  6. 正则表达式(Regular Expressions)

    正则表达式(Regular Expressions) 正则表达式在其他编程语言中的应用非常广泛,网上资料也非常多,而网上在ABAP语言中应用的资料却很少,尽管各语言中正则表达式语法知识都很类似,但仍然 ...

  7. .NET Regular Expressions

    HTML去空白回车换行 private static readonly Regex REGEX_LINE_BREAKS = new Regex(@"\n\s*", RegexOpt ...

  8. 8 Regular Expressions You Should Know

    2019独角兽企业重金招聘Python工程师标准>>> Regular expressions are a language of their own. When you learn ...

  9. Optimizing regular expressions in Java

    2019独角兽企业重金招聘Python工程师标准>>> SRC URL:http://www.javaworld.com/article/2077757/core-java/opti ...

  10. 《D o C P》学习笔记(3 - 0)Regular Expressions, other languages and interpreters - 简介

    Regular Expressions, other languages and interpreters 你可以学到什么: 定义正则表达式的语言:解释这个语言. 定义被1个正则表达式匹配的字符串集合 ...

最新文章

  1. ProcessDialogKey 方法实现回车自动换行
  2. JAVA CGI 远程代码执行_Apache Tomcat CVE-2019-0232 远程代码执行漏洞
  3. opencv7-绘制形状和文字
  4. JZOJ 3426. 封印一击
  5. 2017蓝桥杯B组:取数位(递归,求余和除法)
  6. springcloud五大组件?注解_Spring Cloud学习
  7. 怎样能看懂matlab中的代码,初学者怎样能看懂代码
  8. PMP备考资料和备考经验分享(基于PMP第六版)
  9. 2021年REITs行业发展研究报告
  10. Linux shell:echo显示彩色字体
  11. 什么是seo?seo是什么意思,如何理解?
  12. 面试官:生产环境中 CPU 利用率飙高怎么办?
  13. TypeError: only size-1 arrays can be converted to Python scalars 报错如何解决
  14. vue单页面SEO优化
  15. VMware安裝Ubuntu 16.04.4-server服务器版
  16. 刷题总结——宠物收养所(bzoj1208)
  17. git创建补丁和打补丁
  18. React -- Switch的使用
  19. K2P没有无线信号LED灯不亮,居然成功修复
  20. 阿里云HaaS100物联网开发板学习笔记(四)轻应用初步--用javascript连接阿里云物联网平台

热门文章

  1. 喜欢“唱跳rap和篮球”的不止有蔡徐坤,还有周杰伦,他可是唱跳rap的鼻祖
  2. Android仿人人客户端(v5.7.1)——项目框架新做的调整描述(项目中基类java源码)
  3. HTML css把图片变圆,HTML+CSS:圆形和圆角图片格式
  4. 【CUDA】解决NVIDIA安装程序失败问题
  5. 浅谈IO_Link模块与现场总线模块
  6. 油藏弹性存储量计算公式_各类油藏采收率计算公式
  7. python 64式: 第28式、分布式锁与群组管理__3、tooz应用之分布式锁
  8. linux下使用opengL Glad + EGL问题记录
  9. 华三服务器如何修改默认ip,H3C路由器默认登录入口 192.168.124.1 设置步骤
  10. apktool助手转java_apktool助手