知识图谱驱动对话模型的解读

最近在做知识图谱驱动的多轮对话,查了很多资料,很多方案都采用“分类+NER+图谱规则”的方式做,在特别狭窄的领域感觉还可以,但是在宽一点的领域,就感觉图谱规则特别像机器人不太自然。

在看了Knowledge-driven-dialogue项目后感觉很受启发。感谢作者的方案分享,在这里记录下自己对这个项目模型的一点点小的认识,由于对专业术语掌握的不精,主要采用通俗的描述方式,可能描述不精确,大家意会就行啦。

https://github.com/lihanghang/AI-Competition/tree/master/Knowledge-driven-dialogue

模型采用端到端的方式,也就是Encoder-Decoder架构。

模型训练输入分为三部分,对话现场src, 生成回复tgt,  知识图谱cue。

src包括goal, konwledge, history三部分,将goal,konwledge, history的内容拼接在一起,为对话现场;tgt是基于对话现场src生成的回复,cue是知识图谱,konwledge的内容拼接,是tgt生成的内容参考。

如此回复的生成不再严格依赖分类,ner模型的精确性,而且基于训练好的端到端生成式模型,生成过程引入了goal和知识图谱有针对性的生成回复,使得生成内容具有较好的可解释性。

"goal":[ ["START",  "等爱的女人",  "丹尼尔 · 布鲁赫"], ["等爱的女人","主演","丹尼尔 · 布鲁赫"]],

 "knowledge":[
        ["等爱的女人", "是否 上映",  "已 上映"],
        ["等爱的女人",  "时光网 短评", "两位 爵士 就 够了 。 何况 这么 虐 。" ],
        [ "等爱的女人",  "发布 日期 信息",  "5 年前 上映"  ],
        [ "等爱的女人",  "类型", "音乐" ],
        [ "等爱的女人",  "领域",  "电影" ],
        [ "等爱的女人",  "主演", "丹尼尔 · 布鲁赫" ],
        [  "丹尼尔 · 布鲁赫",  "描述", "德国 男星" ],
        [ "丹尼尔 · 布鲁赫", "主要 成就", "第16届 欧洲电影奖 最佳 男演员 奖"  ],

]

"history": [
        "国外 的 一些 剧情片 往往 也 能 打动 人 呢 。",
        "是 啊 , 这 也是 看 情节 的 , 看 编导 厉 不 厉害 了 。",
        "是 啊 , 朱迪 · 丹奇 你 认识 吗 , 我 刚 看 了 一部 他 编导 的 电影 。",
        "不 认识 哦 , 不过 你 看 的 是 什么 电影 。"
    ]

tgt: "我 看 的 是 等爱的女人 , 很 细腻 。","

这个项目采用基于RNN的Encoder和Decoder。以下是我猜测的模型设计思路,具体内容参考原始github项目。

Encoder过程

1:  使用encoder处理src, 记录结果为enc*, 

2: 使用encoder处理cue、tgt,记录结果为cue*, tgt*,

3. posterior_attention处理cue*, tgt*, 记录结果为k*,step2和step3目的应该是konwledge和tgt之间可能的关联。

4. 使用decoder.initialize_state处理enc, k*, 记录结果为dec_init_state,目的应该是计算src和知识图谱、tgt之间的关联。

Decoder过程

1. 使用Decoder处理输入dec_init_state,理想输出为tgt。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值