## 欢迎Star,感谢Star~
## 代码框架介绍与[详细代码讲解](https://zhuanlan.zhihu.com/p/100884995)
* 笔者此次介绍的代码框架复用性与解耦性比较高。笔者在这里大致说明一下怎么去使用这个框架。对于一个问题,我们首先想的是解决问题的办法,也就是模型构建部分model.py。当模型确定了,那我们就要构建数据迭代器(utils.py)给模型喂数据了,而utils.py读入的数据是preprocess.py清洗干净的数据。
* 当构建以上这几部分之后,便是模型训练部分train_fine_tune.py,这个部分包含训练、验证F1和保存每一个epoch训练模型的过程。一开始我们训练单模得先确定单模是否有效,我们可以通过train_fine_tune.py的main函数将训练集和验证集都用验证集去表示,看一下验证集F1是否接近90%,若接近则说明我们的模型构建部分没有出错,但不保证我们的F1评估公式是否写错。因此,我们使用刚刚用验证集训练得到的模型,通过predict.py来预测验证集,人工检验预测的结果是否有效,这样子就能保证我们整体的单模流程完全没问题了。
* 最后就是后处理规则postprocess和融合ensemble两部分,这里的主观性比较强,一般都是根据具体问题具体分析来操作。
* 其中,utils.py也有main函数,可以用来检验我们构造的Batch数据是否有误,直接打印出来人工检验一下即可。整个框架的超参数都在config.py处设置,加强框架的解耦性,避免了一处修改,处处修改的情况。
* 整体的框架也可复用到其他问题上,只需要根据我们修改的model.py来确定喂入的Batch数据格式,其他的代码文件也只是根据问题去修改相应部分,降低了调试成本。
## 2019BDCI互联网金融新实体发现(单模成绩第一,最终成绩第二)
* 实践是检验理论的唯一标准。为此,笔者将通过中国计算机学会举办的[2019CCF大数据与计算智能大赛的互联网金融新实体发现竞赛](https://www.datafountain.cn/competitions/361)作为实践,让读者们在了解预训练模型强大的同时,顺便掌握打比赛的流程。
* 笔者的代码在竞赛中获得了全国第二的成绩,加之笔者的单模成绩在TOP5中最好以及代码的复用性与解耦性强,值得大家学习与借鉴。
### 赛题分析
* 赛题要求从提供的金融网络文本中识别出现的未知金融实体,包括金融平台名、企业名、项目名。网络文本包括标题和内容,标题和内容至少有一个不为空。
* 数据集中的文本长度分布下图所示,文本长度0-500的数据有3615条,超过500的则有6390条。大部分数据文本长度较长。其中文本最短长度为4,最大长度为32787,平均长度为1311。
* 在训练集中还存在200多条数据有标签谬误。
* 数据集中出现了部分噪音,包括一些HTML文字和特殊字符。
* 可以看出,数据集存在文本过长,噪声过多等问题。
![image]( https://github.com/ChileWang0228/Deep-Learning-With-Python/blob/master/chapter8/images/%E6%96%87%E6%9C%AC%E9%95%BF%E5%BA%A6%E7%BB%9F%E8%AE%A1.png
)
### 数据处理
* 针对数据分析中提到的噪音及标签谬误等问题,使用了正则表达式定位噪声与标签谬误数据,进而清洗噪声与修正标签谬误。
* 针对数据分析中提到的文本过长的问题,本团队对金融文本采用了按句子切割的方法,以标点符号优先级对句子进行切割,并按原顺序进行重组,当重组的句子长度超过512时,则新生成一条子数据并对剩余句子重复执行上述过程,直到所有的句子都被组装完成。这种数据处理的方式有效的解决了数据集文本长度过长的问题,并且完整地利用了数据信息。
### 模型方法
* BERT + BILSTM + CRF
* BERT + IDCNN + CRF
* 动态权重BERT + IDCNN + CRF
* 动态权重BERT + BILSTM + CRF
![image](https://github.com/ChileWang0228/Deep-Learning-With-Python/blob/master/chapter8/images/BILSTM.png)
![image](https://github.com/ChileWang0228/Deep-Learning-With-Python/blob/master/chapter8/images/IDCNN.png)
![image](https://github.com/ChileWang0228/Deep-Learning-With-Python/blob/master/chapter8/images/%E5%8A%A8%E6%80%81%E6%9D%83%E9%87%8D%E8%9E%8D%E5%90%88.png)
### 模型融合
* 上面提到的四种异构单模分别搭载其他预训练模型{BERT_WWM, ROBERTA, ERNIE}得到多种异构单模。
* 将recall>0.64的异构单模抽出来进行预测,得到每个异构单模的文字结果。
* 设置阈值 thresh=ensemble_model_num / 3, 当这个实体在thresh个以上的模型出现时,则保留。
![image](https://github.com/ChileWang0228/Deep-Learning-With-Python/blob/master/chapter8/images/%E6%A8%A1%E5%9E%8B%E8%9E%8D%E5%90%88.png)
### 后处理规则
* 对含有标点符号的文字结果进行了一些一般化后处理工作。
```python
"""
场景1:extra_chars = set("!,:@_!,:。[]") # 直接干掉。
场景2:extra_chars = set("·") # 在头or尾直接舍弃
场景3:extra_chars = set(".") # 去头去尾,‘.’在中间,要保证前后都是英文字符,出现中文字符则直接舍弃。
场景4:extra_chars = set("#$¥%+<=>?^`{|}~#%?《{}“”‘’【】") # 直接替换成''
场景5:extra_chars = set("-&\/&") # 去头去尾 ‘-’在实体中间是合法实体
场景6:extra_chars = set("()()") # 若不是对应匹配的括号,括号半边在头与尾,替换成‘’,括号在实体中间则舍弃
场景7:extra_chars = set('、;、') # split
场景8:删除单字情况和删除训练集存在的实体
"""
```
* 删除训练集出现过的实体(赛题规则)。
# 其他平台
* 微信公众号
![image](https://github.com/ChileWang0228/Deep-Learning-With-Python/blob/master/images/%E5%BE%AE%E4%BF%A1%E4%BA%8C%E7%BB%B4%E7%A0%81.jpg)
* [知乎](https://www.zhihu.com/people/bie-ying-xiang-zhi-li/activities)
* [BiliBili](https://space.bilibili.com/299585150)
* 个人微信号:xilan912427166
![image](https://github.com/ChileWang0228/Deep-Learning-With-Python/blob/master/images/%E5%BE%AE%E4%BF%A1%E5%8F%B7.png)
# 深度学习炼丹化缘
![image](https://github.com/ChileWang0228/Deep-Learning-With-Python/blob/master/images/%E7%82%BC%E4%B8%B9%E9%A6%99%E7%81%AB%E9%92%B1.jpg)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于Python机器学习及实践 (103个子文件)
config-feedforward 2KB
Digraph.gv 1KB
CCF_ner.iml 591B
4_7_2_MLP_Text.ipynb 564KB
4_7_3_CNN_text.ipynb 563KB
xor.ipynb 349KB
4_7_5_AutoEncoder.ipynb 306KB
3_4_Basis_high_ranking.ipynb 160KB
4_7_6_stock_trend_predict.ipynb 137KB
5_3_GAN.ipynb 113KB
4_7_1_MLP.ipynb 60KB
7_3_Transfer_learning_cnn_image.ipynb 54KB
4_7_4_Tradition_cnn_image.ipynb 49KB
6_1_4_EDEN.ipynb 30KB
3_3_Basis_Advance.ipynb 13KB
3_2_Basis.ipynb 11KB
xor-checkpoint.ipynb 72B
知乎.jpg 207KB
合体收款.jpg 139KB
B站二维码.JPG 133KB
扫一扫微信.jpg 91KB
微信二维码.jpg 27KB
README.MD 6KB
README.md 6KB
neat-checkpoint-104 116KB
neat-checkpoint-109 122KB
neat-checkpoint-114 129KB
neat-checkpoint-119 135KB
neat-checkpoint-124 135KB
neat-checkpoint-14 57KB
neat-checkpoint-19 58KB
neat-checkpoint-24 30KB
neat-checkpoint-29 37KB
neat-checkpoint-34 44KB
neat-checkpoint-39 48KB
neat-checkpoint-4 57KB
neat-checkpoint-44 53KB
neat-checkpoint-49 61KB
neat-checkpoint-54 69KB
neat-checkpoint-59 81KB
neat-checkpoint-64 88KB
neat-checkpoint-69 92KB
neat-checkpoint-74 99KB
neat-checkpoint-79 109KB
neat-checkpoint-84 121KB
neat-checkpoint-89 123KB
neat-checkpoint-9 57KB
neat-checkpoint-94 131KB
neat-checkpoint-99 111KB
NULL 1B
NULL 1B
IDCNN.png 74KB
章节目录.png 46KB
动态权重融合.png 42KB
模型融合.png 33KB
BILSTM.png 26KB
Python深度学习体系.png 22KB
文本长度统计.png 18KB
bert_modeling.py 48KB
preprocess.py 35KB
memory_saving_gradients.py 17KB
model.py 13KB
tokenization.py 12KB
optimization.py 11KB
train_fine_tune.py 11KB
ops.py 10KB
rnncell.py 9KB
post_ensemble_final_result.py 9KB
utils.py 7KB
ensemble.py 6KB
visualize.py 6KB
predict.py 5KB
get_ensemble_final_result.py 3KB
xor.py 2KB
text_result_vote_ensemble.py 2KB
config.py 2KB
check_F1.py 1KB
test.py 32B
bert_modeling.cpython-35.pyc 32KB
bert_modeling.cpython-36.pyc 31KB
tokenization.cpython-35.pyc 23KB
tokenization.cpython-36.pyc 10KB
model.cpython-35.pyc 9KB
model.cpython-36.pyc 8KB
train_fine_tune.cpython-35.pyc 8KB
train_fine_tune.cpython-36.pyc 7KB
optimization.cpython-35.pyc 7KB
optimization.cpython-36.pyc 6KB
utils.cpython-35.pyc 6KB
utils.cpython-36.pyc 6KB
visualize.cpython-37.pyc 5KB
visualize.cpython-36.pyc 5KB
config.cpython-35.pyc 2KB
config.cpython-36.pyc 2KB
speciation.svg 727KB
avg_fitness.svg 43KB
Digraph.gv.svg 6KB
text.txt 60B
tx.txt 15B
workspace.xml 29KB
共 103 条
- 1
- 2
资源评论
Kwan的解忧杂货铺@新空间代码工作室
- 粉丝: 4w+
- 资源: 3731
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功