【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的竞赛项目学习资料,作为参考学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 JDDC大赛第4名解决方案参赛源码+学习说明.zip ## 初赛阶段思路及算法模型 初赛采用的是基于TFIDF的检索式算法。TF-IDF (Term Frequency-Inverse Document Frequency) 表示词频和逆文档频率的乘积,代表了单词对文章的重要程度。TF-IDF是深度学习应用于NLP之前的经典表示方法。我们将TF-IDF作为检索的第一步操作,即检索出top 10 的候选集结果,再对候选集进行重新排序。 TF-IDF中TF的定义如下: ![](media/8659ed935357d383513379963bac3424.png) IDF的定义如下: ![](media/4bef51dfd171cb29ab3f98dfdd9af41d.png) 我们对数据进行了一些预处理,主要包括:1)删除轮次低于3的会话;2)将同一角色连续说的话合并成单句;3)将每个对话整理成Q1A1Q2A2Q3+A3的形式,删除多余轮次的对话记录。 **针对tfidf检索式方案的优化,主要有两个方面:1)文本特征提取中加入了tri-grams;2)结果生成方式改成top10重排序,重排序准则为A的长度。** ![](media/e9bcc33f41e9358c814584b5db3bca0e.png) 图 1:初赛解决方案 在初赛阶段,我们还尝试了多种不同的检索方案,主要有:1)BM25;2)使用word2vec创建词向量,构建句子向量后计算余弦相似性;3)LSI等。这些方案的最终得分都没能超越经过优化的tfidf基线。 ## 决赛阶段思路及算法模型 决赛刚开始阶段,我们顺延初赛的思路,继续尝试了一些检索式方法,如:BM25、TFIDF等,最终发现,检索式方法效果是比较差的,测评得分徘徊在0.3。进而,我们开始采用生成式方法。生成式模型方面,我们主要尝试了两个算法,分别是seq2seq和Transformer,这两个算法都是端到端的模型。从测评的结果来看,seq2seq+attention+dropout+beam search方案的测评得分在0.56\~0.6之间;transformer+beam search方案得分能够超过0.7。 由于决赛中包含多轮测评,因此,一个合理的context信息引入方案是十分重要的。经过分析、讨论以及实践,我们最终的context引入方案是:“**仅使用用户上一轮次说的内容作为当前轮次的context**”。这个方案在比赛中被证实为有效,正是这个方案的引入,使得我们可以使用一个模型同时完成单轮和多轮评测。基于这个方案,数据集中的每一个历史对话都被处理成Qn-1Qn+An形式的QA对。同时,为了兼顾模型的单轮评测效果,选择了部分(约10%)历史对话仅按照Q2Q3+A3方式构造QA对,这种数据划分处理方案是确保单一模型同时完成单轮和多轮测评的关键之一。同时,在开发过程中发现数据集中部分QA对中A的长度过长,影响到模型的整体性能,因此,我们仅保留A的长度在[3, 200]范围内的QA对。 我们的最终方案是transformer+beam search。Transformer 最初被用在机器翻译上,在文章发表时取得了state-of-the-art 的翻译结果,其网络结构如下图所示: ![](media/b38d6c17cc4137fa7058db16c5467765.png) 图 2:Transformer模型架构(摘自文献3) 上图左边为Encoder模块,右边为Decoder模块。Encoder模块包括6层堆叠,每一层都具有相同的结构:Multi-Head Attention层和Feed Forward Neural Network层,同时,使用residual connection和layer normalization进行正则化,为了让正则计算方便,所有sub-layer的输出维度都定义为512。Decoder模块也是6层堆叠,每层除了包括Multi-Head Attention层和Feed Forward Neural Network层外,还有一个Masked Multi-Head Attention层,同样的使用了residual connection和layer normalization作为正则。由于Attention无法捕捉文本顺序信息,Transformer在input embedding和output em
- 1
- 2
- 粉丝: 1516
- 资源: 5643
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助