“技术需求”与“技术成果”关联度比赛

CCF BDCI “技术需求”与“技术成果”项目之间关联度计算比赛由中国计算机学会和八六三软件发起,赛题目的是发现好的方法、算法或模型,并提供用于验证的程序源代码,可应用于平台模拟人工,实现“需求——成果智能匹配服务”。

文本将介绍冠军团队"莽就完事了"的赛题分享,冠军团队由马凯欣一人组成。凯欣来自东北林业大学,本文将包括凯欣的参赛方案分享代码分享

莽就完事了 | 马凯欣

我叫马凯欣,来自东北林业大学,目前是计算机技术专业一年级在读,专业方向是自然语言处理。我之前没有参加过大数据与人工智能的相关比赛,这次是我的头一次,CCF BDCI的赛题我也不知道挑哪一个好。

说到参赛经历我倒是有一些,本科参加过ACM-ICPC竞赛,也取得过一些奖项。

by 马凯欣

赛题介绍&数据

人工判断技术需求和技术成果关联度的方法是:从事技术转移工作的专职工作人员,阅读技术需求文本和技术成果文本,根据个人经验予以标注。

“技术需求”与“技术成果”项目之间关联度计算模型技术需求与技术成果之间的关联度分为四个层级:强相关、较强相关、弱相关、无相关。

文件名称  说明 
DataSet.zip 包含两个csv文件, 其中Achievements为技术成果表,Requirements为技术需求表。
Train_Label.csv 为关系表,标注了部分Achievements技术成果表跟Requirements技术需求表的关联关系。
Test.csv 为待预测的关系表,需要预测技术成果表跟技术需求表的关联关系。

Achievements为技术成果表,文件中的(.csv)(UTF-8编码)一行对应于一个技术成果,以“,”分割不同的识别字段,具体描述具体格式如下:

  字段信息  类型  描述 
Guid string ID列
Title string 技术成果的标题
Content string 技术成果的具体内容 

Requirements为技术需求表,文件中的(.csv)(UTF-8编码)一行对应于一个技术需求,以“,”分割不同的识别字段,具体描述具体格式如下:

字段信息  类型  描述 
Guid string ID列 
Title string 技术需求的标题 
Content string 技术需求的具体内容 

Train_Label.csv是Achievements技术成果表跟Requirements技术需求表的关联关系:

字段信息 类型  描述 
Guid string ID列
Aid string 技术成果的表的ID
Rid string 技术需求的表的ID
Level string 1无相关、2弱相关、3较强相关、4强相关 

评测方法

本次竞赛初赛评价指标使用MAE系数。平均绝对差值是用来衡量模型预测结果对标准结果的接近程度一种衡量方法。计算方法如下:

‍‍其中pred_i为预测样本,y_iy_i为真实样本。MAE的值越小,说明预测数据与真实数据越接近。最终结果为:

最终结果越接近1分数越高.

数据清洗&数据增广

经过对赛题文本的内容进行筛选查看,发现其中存在一定量的空白、"\n"、"未提供"等无效信息。简单的使用对应标题对无用信息进行替换即可。

对问题进一步化简,可以简化成两个文本之间的关联度计算。

  1. 那么A文本与B文本之间关联度,同样也是B文本与A文本之间关联度。该方法在仅取标题时可以提升成绩。当加入内容时会造成过拟合,最终未采用该方法。

  2. 那么假设A文本与B文本之间关联度为4,A文本与C文本之间关联度为3,那么可以假定B文本与C文本之间关联度为3,按照这个思路可以假设关联矩阵

其中A文本与B文本之间关联度为i,A文本与C文本之间关联度为j,那么B文本与C文本之间关联度为R_(i,j)。此方法可增加数据295994条,从中按照原数据集各个关联度等级的比例从中随机取出10000条。

该方法我认为具有一定的可能性,但由于训练时间过长、提交次数有限,尝试过的参数均会造成过拟合现象。最终模型中未对数据进行数据增广。

构建模型

经过一定量的实验对比最终的模型确定为分别进行标题与内容关联度判别的孪生BERT模型,其中进行技术成果标题和技术需求标题关联度计算的BERT采用谷歌开源的BERT-base;进行技术成果内容与技术需求内容关联度计算的BERT采用哈工大提出的BERT-wmm。

最终只采用这个模型,也没有进行融合。当然可以很简单的认为它就是分别使用两个BERT进行相似度判别然后进行拼接。

其中进行技术成果标题与技术需求标题关联度计算的BERT采用谷歌开源的BERT-base;进行技术成果内容与技术需求内容关联度计算的BERT采用哈工大讯飞联合实验室发布基于全词覆盖的BERT-WWM。该预训练由于采用了全词覆盖,在多数情况下可以取得更好的效果。

在第一个进行技术成果标题与技术需求标题关联度计算的BERT中输入最大长度MaxLenT设置为128,两个标题拼接最大长度也没有超过128个字,同时这样可以减少训练时间和显存需求;在第二个进行技术成果内容与技术需求内容关联度计算的BERT-WWM中输入最大长度MaxLenC设置为512,尽可能多的读取数据内容。

两个BERT都采用12layers, 768hidden states, 12heads版本,该模型采用7折交叉验证,其中batch size取16,epoch取8,并在训练时保存较好的模型权值,初始学习率设置成5e-5,后续学习率设置成1e-5。

预测后处理

通过观测评测指标发现,当模型判断关联度为1和2的概率非常接近时,输出为2更加合理。所以当模型无法判别时,通过修正可以将输出偏向2或3。

模型对比

1.其中BERT-base、RoBERTa-base、BERT+数据增广-1、BERT+数据增广-2、BERT+数据增广-3模型中输入均只有技术成果标题与技术需求标题,MaxLenT为128,其余超参数与最终模型中基本相同。

2.孪生BERT-1模型为标题与内容拼接的孪生BERT模型,MaxLen为512,其余超参数与最终模型中基本相同。

3.孪生BERT-2模型为分别进行标题与内容关联度判别的孪生BERT模型,MaxLen为512,其余超参数与最终模型中基本相同。

4.BERT+数据增广-1模型中,数据增广采用第一种方式。

5.BERT+数据增广-2模型中,数据增广采用第二种方式,且取全部增广数据。

6.BERT+数据增广-3模型中,数据增广采用第二种方式,但按照原数据集各个关联度等级的比例从中随机取出。

7.BERT-T128C512模型中BERT均采用谷歌发布的BERT-base,其余超参数与最终模型中相同。

8.BERT-WWM-T128C512模型中BERT均采用采用哈工大讯飞联合实验室发布的BERT-WWM,其余超参数与最终模型中相同。

9.最终模型中标题采用谷歌发布的BERT-base,内容采用哈工大讯飞联合实验室发布的BERT-WWM。

比赛总结

我个人认为BERT-WWM预训练相比于BERT预训练对中文效果应该更好,而得到这样的结果,可能的原因是两个预训练在训练时使用的语料库不同,标题部分中专业名词比重较大且短小,BERT对此比较敏感,而BERT-WWM对常规文本比较敏感。当然这个成绩中也有预测偏好处理的功劳。

本次比赛十分感谢华南理工大学Chevalier同学在知乎上分享的BaseLine。本代码修改于该代码。由于刚开始接触深度学习,也是头一次参加比赛,本人水平有限欢迎批评指正。邮箱:1239977613@qq.com

冠军代码分享:

https://github.com/Makaixin/Correlation-between-requirements-and-achievements

备注:公众号菜单包含了整理了一本AI小抄非常适合在通勤路上用学习

往期精彩回顾那些年做的学术公益-你不是一个人在战斗适合初学者入门人工智能的路线及资料下载机器学习在线手册深度学习在线手册AI基础下载(第一部分)备注:加入本站微信群或者qq群,请回复“加群”加入知识星球(4500+用户,ID:92416895),请回复“知识星球”

喜欢文章,点个在看

CCF BDCI 技术需求与技术成果关联度冠军分享相关推荐

  1. “技术需求”与“技术成果”项目之间关联度计算模型 复赛top1解决方案

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 技术需求库和技术成果库的数据来源有两种: (1)会员单位发布: (2)非会员单位官方网站采集. ...

  2. tensorboard ckpt pb 模型的输出节点_“技术需求”与“技术成果”项目之间关联度计算模型 TOP10 baseline...

    竞赛网址:传送门 线上分数:0.78490746000,目前可以进入前10 参考了苏神的代码,非常感谢:传送门 调参技巧:传送门 中文bert权重:传送门 #! -*- coding:utf-8 -* ...

  3. “技术需求”与“技术成果”项目之间关联度计算模型top1

    向AI转型的程序员都关注了这个号

  4. 神策数据陈宁:前端国际化技术需求及模型实现

    本文根据神策数据资深前端研发工程师陈宁<前端国际化>的直播整理而成,主要包含以下内容: · 国际化概述 · 国际化技术需求 · 国际化技术模型 · 国际化技术模型实现 一.国际化概述 国际 ...

  5. 论软件需求获取技术及应用

      声明:本文为本人在软考系统架构设计师备考期间的练手写作,不保证内容的原创性与正确性,仅供参考,请勿照抄和用于学术论文等正规场合,因不当使用产生后果一律自负. 摘要   2019年3月,我单位联合某 ...

  6. 会向业务“砍需求”的技术同学,该具备哪6点能力?

    阿里妹导读:"会"砍需求,并不是件容易的事情,这涉及到工程师的商业头脑,要会判断技术和业务的关系.技术与业务好比"两条腿",相互配合才能走得更远.如何具备bus ...

  7. 这里有最全的C++工程师的技术需求,你要做哪方面的开发?

    一.C++服务器程序员(流媒体后台,游戏后台,高性能服务器后台) 1. 精通C++,STL,Linux等,熟悉设计模式: 2. 熟练掌握一门脚本语言(Lua, Python, Perl等): 3. 对 ...

  8. 爬取了BOSS直聘、拉勾等近1000+招聘需求,总结出3年+Java开发的高频技术需求

    工作3-5年,是很多技术人的职业发展分水岭. 在这个阶段,如果你能迈过「写业务代码」到「高级开发&架构师」的坎,未来的 5-10 年还将是你的上升期,你的年薪也将越来越高,甚至有机会迈入 50 ...

  9. 《XXX重大技术需求征集系统》的可用性和可修改性战术分析

    在网站的界面完整有效的呈现在最终用户面前前,其中经历的每一环节出现问题都会导致网站页面不可访问.原因如,如DNS被劫持.网站交换机失效,硬盘损坏,网卡松掉,机房停电等都可能导致网站不可用(网站故障)情 ...

最新文章

  1. git 提交丢失Warning, you are leaving 2 commits behind,
  2. 《SVG精髓》笔记(二)
  3. 浅谈CMMI几个过程概念流程管理 (转)
  4. Ubuntu12.04 LTS 忘记登录密码的解决方法
  5. amp 显示成转义字符 in html,如何在HTML标签中转换转义字符?(How to convert escape characters in HTML tags?)...
  6. 好玩的抖音、快手无水印视频下载工具
  7. 思维导图设计测试用例
  8. 中英文 织梦 html5,织梦dedecms如何做中英文多语言站点
  9. 如何批量将 Txt 文本文档转换为 PDF 文档
  10. 多测师_swipe 滑动操作
  11. [flink]各种大厂开源案例
  12. web页面之弹出窗口
  13. sublimelinter_开发人员使用SublimeLinter指南
  14. 银行排队系统 c语言,C++实现银行排队系统
  15. Zigbee使用MT层实现串口写和读操作,简要了解osal_msg_send消息机制
  16. 这些前后端性能指标,面试一问我就懵了
  17. Mask R-CNN 训练自己的数据集(balloon过程+报错解释)
  18. 为什么要学习 Python?这是我听过最实用的答案
  19. 如何给小朋友解释单摆运动_单摆教案完美版
  20. 简约商务通用PPT模板

热门文章

  1. (数据科学学习手札61)xpath进阶用法
  2. 基于卷积神经网络的匹配代价算法
  3. netty源码分析之一:server的启动
  4. stand up meeting 12/25/2015 weekend 12/26/2015~12/27/2015
  5. Spark1.3.0安装
  6. 每天看一片代码系列(二):WebSocket-Node
  7. MMORPG大型游戏设计与开发(part3 of net)
  8. Java中的IO整理完整版
  9. MyBatis(二)——多对一、一对多
  10. 机器人学习--从路径规划侧面看栅格地图