zoukankan      html  css  js  c++  java
  • 第三届魔镜杯大赛(NLP-text matching)

    第一次参加数据应用比赛,比赛过程中付出了很多精力, 经常写代码,检查代码带凌晨一两点。前期查阅了许多资料, 试了四五个模型。单模型最好的结果是0.28左右。离进入复赛只有一步之遥。初赛结束前两天,刚好赶上了期末考试,没有时间进行stacking。我觉得做一下模型集成,进入复赛还是由希望的。

    这篇博客旨在总结参赛经历,将参赛过程当中学到的知识,模型,技巧整理一下,达到巩固的作用。

    这个比赛是自然语言处理类的。智能客服聊天机器人场景中,待客户提出问题后,往往需要先计算客户提出问题知识库问题的相似度,进而定位最相似问题,再对问题给出答案。本次比赛的题目便是问题相似度算法设计。

     为保护用户隐私并保证比赛的公平公正,所有原始文本信息都被编码成单字ID序列和词语ID序列。单字包含单个汉字、英文字母、标点及空格等;词语包含切词后的中文词语、英文单词、标点及空格等。单字ID和词语ID存在于两个不同的命名空间,即词语中的单字词或者标点,和单字中的相同字符及相同标点不一定有同一个ID。

    以“彩虹年华多少?”为例子,用单字为单位划分得到:彩,虹,年,化,多,少,?。以词语为单位划分得到:彩虹,年华,多少,?。分别用单字级别的词向量和词语级别的词向量来表示。

    给定两个句子question1和question2的基于词向量的表达,将它们作为模型的输入,经过模型的运算以后,模型输入两个相似的概率([0, 1])。

    经过一番搜索后,发现这属于text match类的问题。于是,在Github上面以text matching 为关键字进行搜索,匹配到的star最多的是matchzoo。matchzoo是中科院做的一个文本匹配的开源工具,里面有8个左右的模型,我试了其中的matchsrnn, matchpyramid, asci, ascii, 效果都不好,可能是我没有仔细调参数的原因。另外我还试了siamese LSTM + manhantan  distance。siamese LSTM + manhantan的结果不错, 没有用CV的时候,线上能达到0.29左右。(为什么没有CV? 第一次参赛,好多骚操作都不知道。。。)。想着要用stacking,而LSTM的训练比较慢,因为LSTM不能并行计算。所以我又尝试了siamese CNN, 用到了dialated convolution。siamese CNN没有CV的时候效果能达到0.28左右。在这个模型上使劲地调了参数,也没有得到一个更好的结果。之后我又试了最新出的论文里面的模型DIIN,这个模型很复杂,准确率高但是loss却不理想,甚至比不上siamese LSTM.。这个模型的参数也难调,稍不注意,模型就不收敛了。

    总结起来,这次参加比赛,没有做太多事情,基本上就是尝试了几个模型,然后知道了参加这类比赛特征工程和模型集成很重要。

    后期,我准备白赛中用到的代码整理一下,发布到我的Github上面。

  • 相关阅读:
    【H5】ie8如何兼容html5标签(hack)
    mysql数据库:分表、多表关联、外键约束、级联操作
    mysql数据库:mysql初识
    mysql数据库:数据类型、存储引擎、约束、
    并发编程:协程TCP、非阻塞IO、多路复用、
    并发编程:同步异步、队列、协程与实现方式
    并发编程: GIL锁、GIL与互斥锁区别、进程池与线程池的区别
    并发编程:生产消费模型、死锁与Rlock、线程、守护线程、信号量、锁
    并发编程:守护进程、互斥锁、案例、进程间通讯
    并发编程:进程、多道、进程执行顺序与常用属性
  • 原文地址:https://www.cnblogs.com/yangkang77/p/9291421.html
Copyright © 2011-2022 走看看