写在前面

这场比赛真的是旷日持久,从8月25开始,直接干到11月下旬。当然我是从国庆才开始参赛。由于主办方延长比赛时间,我甚至付出了专业课凉凉的代价(当然,不是挂科hhh),每天基本深更半夜不睡觉(有的时候打扰到舍友了,对不起┭┮﹏┭┮)。但是这次比赛真的收获颇丰,经验值估计比我大二一整年涨的都多。还有,真的,真的很感谢我的队友,人真的超级nice nice nice,在我刚进比赛还是个小白的时候没有嫌弃我,把自己攒的赛题经验仔仔细细全给我讲了一遍,工作忙的时候也在坚持着打比赛,每天都能和我交流一下,最终我们俩人两套方案互补,算是冲进了前十。这个比赛是我真正意义上第二次参赛,也是我第一个拿到前十的比赛。


赛题描述:

提取出每篇文章中所有的金融新实体,
例如某篇文章的文本如下(此处只做示例,实际每篇文章文本长度远远大于以下示例):
度小满金融在首次发布的《科创板基金》中提到,今年前5月,京东金融的股票迅速升值。
那么该篇文章对应的金融新实体列表为:度小满金融;科创板基金。
由于京东金融是知名的(金融)实体,所以“京东金融”并不算新实体。

个人理解:

结合出题方是“国家互联网应急响应中心”来看,这个赛题的目的实际上是找那种类似校园贷的实体(其实就是不知名的金融实体)。
整个赛题要把握住的重点是:
①这个赛题实际上偏向于“领域词抽取”(主要针对的是金融领域),但实际上却又不失关键词抽取的要素。
②注意把握赛题要求中“新实体发现”的“新”,题目中说明了:持有金融牌照的银行、证券、保险、基金等机构、知名的互联网企业如腾讯、淘宝、京东等认为是已知实体(即不能让这些已知实体出现在最终预测结果中)。


方案细节

我的方案具体逻辑思路和代码已经放到我github上了,欢迎star
https://github.com/gaozhanfire/CCF-BDCI2019_Entity_Discovery
在这里我只说一下本方案的重点、思考与可以改进的地方。

由本次比赛得到的一些基础知识

数据清洗方面:

  • 不要,不要,不要洗的太干净!!
    这点在我做情感那个赛题的时候深有体会:
    我记得我当时清洗非常细节,细节到啥程度呢,有的标点是英语里的标点,如“,”(还有其他的一些汉语符号),我把这些英语标点都统一归一到了汉语的标点。我把什么特殊符号啊、html标签啥的都去掉了,还有停用词也去掉了!!这些操作竟然让我掉了3个千分点。个人觉得是bert已经足够强大了,他可以分辨出那些网页标签、特殊符号之类的,并且能够在其中提取出一些信息。(我最一开始实际上是把所有标点符号直接暴力去掉了,这样效果更懒)

BIO和BIOES

如我github中写的一样,BIO标注,预测结果里有好多好多断开的词(小米钱包被标成BOII),要不就是预测多了(小米钱包被标成“小米钱包的”),听了队友的推荐,我把bio换成了BIOES,真的提升了一些,我把这个归结于BIOES的标注字符更多,模型对分类边界的划分更加清晰明确。(和crf转移矩阵是不是有关系我还正在研究)

bert预训练与fine-tune

这两个过程是不一样的!!!!
就拿普通的word2vec举例,我们打比赛的时候常常先用gensim来训练一个word2vec,然后用训练好的embedding去接一个全连接层之类的,反向传播,如果不固定embedding权重的话,在反向传播的过程中,不仅会更新全连接层参数,还会更新embedding的权重!!!。
这实际上是分有两个过程的
①训练一个word2vec,这实际上称为“预训练”过程
②使用训练好的word2vec,接全连接做分类任务训练,更新word2vec,这个过程才是“fine-tune”

我看到有人说,反正有已经训练好的bert权重,直接拿过来,只用下游任务做finetune就可以了,不用费时间去用新数据再练一下bert(预训练),这实际上是错误的!!!
预训练不仅可以用来使原来预训练好的模型更加适应你的场景,更是因为在预训练的时候你不仅可以用训练集的数据,还可以用测试集的数据!!而你用下游任务更新embedding,只能用训练集来更新。

预训练是非常非常重要的,好的预训练方式以及预训练时设置的参数能在embedding重新加入到模型后让模型效果变得更加稳定。

bert的下游模型选择以及是否要finetune

这个真的没办法凭经验来说,比如初赛的时候我队友的简单全连接就是要比我的bilstm要好,因为bert这个语言模型本来就非常强了,有的时候下游设计的更复杂甚至会带来反效果。所以,像这种允许用bert的比赛,我们只能不断的去测试不同的下游模型!!!

关于特征work不work的问题

本次比赛初期,我设计了一个lgb模型,
模型输入的负样本是{京东、阿里、腾讯、百度……}这样的知名实体集在文本中提取出来的特征。
一开始的时候,我提取了很多特征,比如“京东”在文本中的tfidf、在文本中的位置平均位置、词的长度、文章的主题特征(lsi)等等,然后上了一个百分位,效果非常好。
后来有一天我突然想去掉一些特征,把词在文本中的位置、词的长度、lsi都去掉了,只留下了tfidf、tfidf在文章中所有词的排名特征,发现效果比原来更好了。这说明那些平均位置、文章主题等特征都是没用的。
我想去掉这些特征的原因,是:我做这个模型的目的,是为了去去掉这些知名实体(肯定不是金融新实体的实体),像‘京东’这个实体在文中的各个地方都有可能出现,且我的知名实体集里也就 京东、腾讯、阿里、百度、AI……这么几种固定的实体,他们的词长固定也就这么几种。数据的种类非常少,且造出来的特征和我们的任务目标不符合(专业一些来说就是特征与目标分布相关性较小),这在一定程度上限制了特征的发挥。所以,决定特征能否发挥作用的不只有特征的意义,还有数据的多样性,数据分布都会决定特征是否能够发挥作用。

关于“规则”的方法:

记住:大多数的规则都可以转化成对应的特征!
比如这次比赛里,队友写的一条规则:去掉一篇文章预测出来的实体中,在文章中出现频次最低的词比频次最高的词 频次差出10以上的。
这个就可以写成我github中写的“组特征”

但是,如果把规则单独拿出来写脚本,由于规则是独立、固定的,所以他和模型比可能会有很大的差异性,常常可以用规则来预测,之后和模型的结果做融合。

关于模型的参数:

这真的是我这次比赛收获最深的一点:
有参数 lstm的维度,根据高校赛的经验,最一开始我设置了512,比较大,后来偶然改成了256,发现线上有三个千分点的提升,后来改成了128,又来了三个千分点的提升。这说明不是神经元越多越好,而是要根据数据规模‘因地制宜’
同时,epoch、batch_size都会影响模型的效果:比赛后期,我将原本训练轮次为40,调整到了10,便有了几个千分点的提升,后来把10改成1(即只训练1轮),竟然又有了几个千分点的提升,说明在小数据量下,一定要注意训练轮次的控制!
同时 batchsize从512一直调至32,也获得了很大的提升。

ccf-bdci 互联网金融新实体发现9st 赛题基础收获总结相关推荐

  1. 2019BDCI互联网金融新实体发现 | 思路与代码框架分享(单模第一,综合第二)...

    代码框架介绍 笔者此次介绍的代码框架复用性与解耦性比较高.笔者在这里大致说明一下怎么去使用这个框架.对于一个问题,我们首先想的是解决问题的办法,也就是模型构建部分model.py.当模型确定了,那我们 ...

  2. BERT+CRF互联网金融新实体发现

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 项目代码  获取: 关注微信公众号 datayx  然后回复  信息抽取  即可获取. AI项 ...

  3. 华为云获CCF BDCI 2019金融实体级情感分析大赛冠军

    近日,在2019 CCF大数据与计算智能大赛(CCF Big Data & Computing Intelligence Contest,简称CCF BDCI)决赛中,华为云语音语义创新Lab ...

  4. “互联网+”大赛之AI创新应用赛题攻略:大胆脑洞,共绘智慧生活蓝图

    摘要:本次"互联网+"大赛AI创新应用赛题的设置是希望学生可以从日常实际应用需求出发,结合自己的奇思妙想,提升智能终端用户的使用体验,为构建万物互联的智能世界贡献一份力量. 本文分 ...

  5. 数据挖掘实践(金融风控)——task1:赛题理解

    文章目录 数据概况 数据读取 评估指标 数据概况 数据量超过120w,包含47列变量信息,其中15列为匿名变量.80万条作为训练集,20万条作为测试集A,20万条作为测试集B,变量含义如下: id 为 ...

  6. 2020厦门国际银行数创金融杯建模大赛(一)----赛题说明数据重塑Baseline

    比赛介绍 比赛连接 https://js.dclab.run/v2/cmptDetail.html?id=439 任务 随着科技发展,银行陆续打造了线上线下.丰富多样的客户触点,来满足客户日常业务办理 ...

  7. 互联网金融如何助力实体经济?

    本文讲的是互联网金融如何助力实体经济,近日,国务院印发<关于加快融资租赁业发展的指导意见>,其中明确提出"支持融资租赁公司与互联网融合发展",同时,在贯彻国务院办公厅& ...

  8. 大数据应用之金融行业-互联网金融对传统银行业的冲击,狼真的来了

    一.背景资料 2013年6月13日,余额宝面世,截止3季度末,余额宝已经吸纳资金556.53亿元,实际用户1367.88万户,11月11日当天即时收益率4.8250%.10月28日,"百度金 ...

  9. 新金融 新生态 银行高管热议互联网金融

    7月8日,主题为"未来银行之路·变革与回归"的2014年银行业发展论坛在北京金融街威斯汀酒店举行.在当天下午由新浪财经与中国金融认证中心(CFCA).中国电子银行网合作举办的&qu ...

最新文章

  1. Wp7下的Timer DispatcherTimer使用
  2. 三款运用二维码分享与预览的原型设计工具
  3. html正则表达式识别网址,JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)...
  4. RyuJIT的华丽转身
  5. 【斜率优化】玩具装箱(luogu 3195)
  6. 容器中apscheduler不执行_APScheduler:定时任务框架
  7. 当你用浏览器打开一个链接的时候,计算机做了哪些工作
  8. 抵御风险——漫谈运维核心价值和方法论
  9. 每日一九度之 题目1091:棋盘游戏
  10. python中bool怎么用_python函数之bool([x])用法详解
  11. 如何配置Java环境
  12. linux好用的下载工具,四款linux下的好工具
  13. 飞行管理计算机在ATA章节,民航ATA章节中英文对照.docx
  14. android教务系统框架,基于android的面向学生的移动教务管理系统设计与实现
  15. 【数学建模】——1992~2019国赛优秀论文
  16. matlab基于凹点匹配的分割算法,基于凹点寻找标记的分水岭算法分割粘连谷粒
  17. 关于GHO文件怎么安装,GHO文件怎么打开等问题解答
  18. 计讯物联AI视频网关TG463为城市智慧交通赋能
  19. jenkins添加从节点
  20. java--删除TMP文件

热门文章

  1. String字符串按照指定长度进行分割,并生成新的字符串
  2. CTF中SQL注入常见题型整理
  3. Perfect ScrollBar插件使用方法
  4. 非root用户安装python第三方模块出现Permission denied的解决办法
  5. 修复el-amap高德地图加载空白的bug
  6. 为什么说云正在改变制造业和分销商流程
  7. 执行日志(2)文件结构
  8. 163邮箱注册,怎么注册申请 vip.tom.com邮箱?
  9. Java HttpClient 如何使用代理IP请求接口
  10. Elasticsearch官方文档