重新看了HSMM代码,发现该模型的对齐过程是,直接从输出中找到输入中出现的词。如果没有出现,代码中会将之置为null。
有很多文章专门研究如何进行输入输出之间对齐的问题。最近看了三篇文章,简单记录一下
一、Learning Semantic Correspondences with Less Supervision
semantics-acl2009.pdf (stanford.edu)
基础。后面的文章都是针对这篇文章的改进。
用了三个级联的HMM学习
二、Learning Latent Semantic Annotations for Grounding Natural Language to Structured Data
这篇文章的工作可以理解为弱监督学习中的语义解析器,给一个句子,学习句子中的实体或者标签。
文章的亮点在于可以更好的学习如下几种类型的关系映射:
- 数字-数字:由于习惯会对数字进行一些变化,(个人理解类似四舍五入或者取整操作)
- 字符串-字符串:由于习惯会对字符串进行一些变化(个人理解类似简称、昵称)
- 类别-字符串:可枚举的或者专有名词,比如星期天,职位
- 数字-字符串:3km→ 三千米
三、Data2Text Studio: Automated Text Generation from Structured Data
感觉这个就是我们最开始想要的那种界面工具:
- 可以自己选择槽位
- 可以自己写比较逻辑
核心亮点是可以自动学习出trigger。但是目前仅限于两个数直接的相减操作。