利用Lisp语言的形式表示问题的semantic,可以通过程序执行得到检索答案
整个系统由三部分组成:computer,programmer,manager
computer是可以执行程序的部分
manager是提供weak supervision的部分
主要的解析部分为programmer
programmer基于带attention的seq2seq模型,为了使得程序能够解析出符号和变量,又引入了key-variable记忆模块
key-variable中,key v是连续向量,variable R代表了computer中的某个value。在encoding过程中,对每一个entity link到的实体,在memory中加入相应的v-R对,其中v是entity的GRU hidden state的均值,R是相应的name。在decoding过程中,每当生成一个完整的表达式(即生成了有括号')'),该表达式被执行,得到的值作为variable存在memory中,对应的key是该时刻GRU的hidden state。每当memory中增加了v-R对,decoder中就增加相应的一个vocabulary。最后执行的结果作为答案。
利用强化学习训练