最近在复现ubuntu dialogue corpus 中用到的一些语义匹配模型的方法。
先是试了试siamese lstm network。模型结构图如下:
context是对话的上文,response是对话的回复。简单来说,模型目的就是选出符合context的response。为了提取出context,和response的语义信息,模型采用了共享参数的lstm来提取特征。然后用了双线性的方法计算句子间的语义匹配度。最后通过sigmoid激活函数,然后计算交叉熵loss。训练语料分为两部分。100w训练集(正负例1:1),以及50w条测试集(正负例1:9).
评价指标是R2@1, R10@1.
在训练模型中遇到的一些问题:
- 刚开始测试集指标始终上不来。发现是由于Lstm没有共享参数导致。
- 训练过程中每10w个step,对测试集计算R2@1 和 R10@1的指标。发现训练过程中loss趋于稳定,但是指标仍然继续上升。仔细检查了dataset,并没有发现问题。但最终指标到达了论文里提到的指标。
p.s. 之后要再继续检查一下模型和数据。