比赛详情见https://tianchi.aliyun.com/competition/entrance/531826/introduction

数据集:链接:https://pan.baidu.com/s/1IuVhtPFYPPPbgFxqVa-M6g 提取码:ua70

第一次读到这个比赛,脑子出跳出来的就是苏大神的bert4keras(https://github.com/bojone/bert4keras),因此,我就用bert4keras来做了,而且苏大神也给了我们example。

我给一下我用的一些包的版本:

tensorflow-gpu =2.1.0   keras=2.3.1  bert4keras=0.8.3

先来导包

import tensorflow as tf
import os
os.environ['CUDA_VISIBLE_DEVICES'] = "0"
import json, os
import numpy as np
from bert4keras.backend import keras, K
from bert4keras.layers import Loss
from bert4keras.models import build_transformer_model
from bert4keras.tokenizers import Tokenizer, load_vocab
from bert4keras.optimizers import Adam
from bert4keras.snippets import sequence_padding
from bert4keras.snippets import DataGenerator, AutoRegressiveDecoder
from bert4keras.snippets import text_segmentate
from keras.models import Model
from tqdm import tqdm
tf.test.is_gpu_available()

用tf.test.is_gpu_available()来判断gpu是否可用

需要的参数设置:

# 基本参数
max_p_len = 128batch_size = 18
epochs = 20# bert配置
config_path = './bert/publish/bert_config.json'
checkpoint_path = './bert/publish/bert_model.ckpt'
dict_path = './bert/publish/vocab.txt'# 切分句子标志
seps, strips = u'\n。!?!?;;,, ', u';;,, '# 文件路径
train_file = './data/round1_train_0907.json'
test_file = './data/round1_test_0907.json'# K折交叉验证
k_folds = 5

数据处理:

def process_data(file_name):with open(file_name,mode="rb") as f:data_json = json.loads(f.read())data = []for line in data_json:for p in line['annotations']:if p['A']:for t in text_segmentate(line['text'], max_p_len - 2, seps, strips):if p['A'] in t:data.append((t, p['Q'], p['A']))return datadata = process_data(train_file)

这样生成了训练数据,(篇章,问题,答案)组合一条数据。

来看一下训练数据中问题和答案的长度情况:

def plot_process(data):import matplotlib.pyplot as pltq_len = list(map(lambda x:len(x[1]), data))a_len = list(map(lambda x:len(x[2]), data))print("max q_len: {}".format(max(q_len)))print("max a_len: {}".format(max(a_len)))plt.figure(figsize=[18,12])plt.subplot(221)plt.hist(x = q_len, bins = 20, color = 'steelblue', edgecolor = 'black', rwidth=0.7         )# 添加x轴和y轴标签plt.xlabel('q_len')plt.ylabel('freq')# 添加标题plt.title('q_len distribution')plt.subplot(222)plt.boxplot(q_len)  #垂直显示箱线图plt.title('q_len distribution')plt.subplot(223)plt.hist(x = a_len, bins = 20, color = 'r', edgecolor = 'black', rwidth=0.7         )# 添加x轴和y轴标签plt.xlabel('a_len')plt.ylabel('freq')# 添加标题plt.title('a_len distribution')plt.subplot(224)plt.boxplot(a_len)  #垂直显示箱线图plt.title('a_len distribution')# 显示图形plt.show()plot_process(data)

因此我就把问题最大长度max_q_len设置成80,答案最大长度max_a_len也设置成80

接下来这段代码是用来产生随机数的,记录下来,方便用来做K折交叉验证:

def prodece_random_order(data):# 保存一个随机序(供划分valid用)if not os.path.exists('../user_data/random_order.json'):random_order = list(range(len(data)))np.random.shuffle(random_order)json.dump(random_order, open('../user_data/random_order.json', 'w'), indent=4)else:random_order = json.load(open('../user_data/random_order.json'))return random_order

接下来就是搭建模型,k折交叉验证了,下一篇继续。

中医药天池大数据竞赛——中医文献问题生成挑战(一)相关推荐

  1. AI比赛-NER:“万创杯”中医药天池大数据竞赛——中药说明书实体识别挑战

    大赛概况 疫情催化下,人工智能正在持续助力中医药传承创新加速发展,其中中医用药知识体系沉淀挖掘是一个基础工作.通过挖掘中药说明书构建中药合理用药的知识图谱,将为中医规范诊疗奠定较好基础.挑战旨在通过抽 ...

  2. 阿里巴巴天池大数据竞赛黄金联赛全面开战,全球同步报名,只为寻找最聪明的你!...

    阿里巴巴天池大数据竞赛黄金联赛全面开战,全球同步报名,只为寻找最聪明的你!          天池大数据竞赛是由阿里巴巴集团主办,面向全球新生代力量的高端算法竞赛.通过开放海量数据和"天池& ...

  3. 【TIANCHI】天池大数据竞赛(学习赛)--- 淘宝用户购物行为数据可视化分析

    目录 前言 一.数据集的来源和各个字段的意义 二.数据分析 1.引入库 2.读入数据 3.查看数据数量级 4.PV(Page View)/UV访问量 5.漏斗模型 6.用户购买商品的频次分析. 7.A ...

  4. 天池大数据竞赛第一名,上海交通大学人工智能实验室如何用AI定位肺结节

    癌症,犹如黑暗中的魔鬼,带给人们恐惧与绝望.而肺癌,在我国作为发病率.死亡率最高的一类癌症,伤害着无数家庭.在我国每年都有近60万人死于肺癌.然而,癌症的死亡率与首次发现癌症的时期紧密相关,早期肺结节 ...

  5. 阿里天池大数据竞赛——口碑商家客流量预测 A2

    阿里天池大赛koubeiyuce1 2017年二月份,天池大数据比赛,口碑商家客流量预测,参赛地址及详情: https://tianchi.shuju.aliyun.com/competition/i ...

  6. 9个比赛7进top10,阿里天池大数据竞赛思路分享

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

  7. 阿里天池大数据竞赛第一名,如何用AI检测肺癌

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

  8. 阿里天池大数据竞赛(一)用ODPS提取特征

    //2015年4月30日 提取特征之所以难,是因为我们写出的sql语句往往只能提取一个特征. 而在ODPS上却不一样,一条语句可以提取很多特征. 如提取最近1.2.3.4天四种行为的数量 重点是dec ...

  9. 【数据竞赛】2020年11月国内大数据竞赛信息-奖池5000万

    2020年11月:下面是截止到2020年11月国内还在进行中的大数据比赛题目,非常丰富,大家选择性参加,初学者可以作为入门练手,大佬收割奖金,平时项目不多的,比赛是知识非常好的实践方式,本号会定期发布 ...

  10. ​阿里云天池工业AI大赛暨中国“印象盐城,数创未来”大数据竞赛正式启动

    记者 | 张俊潇 官网 | www.datayuan.cn 微信公众号ID | datayuancn 10月11日,"2017杭州·云栖大会"在万众期待中盛大召开,会上马云宣布组建 ...

最新文章

  1. 使用ultraedit和cl编译器打造简易c/c++开发环境
  2. 面了BAT,我总结了他们会问的JVM基础知识
  3. 数据结构——算法的基本概念
  4. JavaWEB后端支付银联,支付宝,微信对接
  5. 前端学习(1029):jquery其他方法
  6. 恋舞ol服务器维护中,《恋舞OL》更新维护公告
  7. 跟兄弟连学PHP PDF 分享
  8. linux未找到命令rpm,RPM命令执行失败:bash: rpm: 未找到命令...
  9. 哪些行业申请网站备案时需要提供前置或专项审批文件?
  10. 移动跨平台框架ReactNative文本组件Text【06】
  11. 俄罗斯方块游戏(Python实现)
  12. 深入理解C#面向对象之继承
  13. ubuntu搭建php运行环境
  14. 什么样的产品可以做为引流款?请选择这些产品作为引流爆款
  15. 安装pyrit qq5ed84579da89e
  16. ios 配置了代理且使用 chls.pro/ssl 下载不了证书,无法弹出下载证书的提示
  17. Speedoffice(word)如何添加小方框和勾
  18. 【c语言】进阶篇学习笔记
  19. JavaScript奇淫技巧:按键精灵
  20. UEStudio/UltraEdit 的语法高亮文件 (*.uew)

热门文章

  1. 汇编 十六进制转二进制
  2. 百度离线地图JS API V3.0
  3. 密码编码学与网络安全(学习)
  4. 流程图绘制软件 Dia
  5. STM32:FSMC驱动TFTLCD(ST7789)
  6. 二、17【FPGA】无源蜂鸣器驱动实验
  7. JJ斗地主记牌器java开发,【欢乐斗地主记牌器制作】遇到两个问题
  8. html5将网页保存成图片,保存网页为图片(保存整个网页为图片)
  9. debian8.4安装sqliteman总结
  10. erdas2015几何校正模块在哪_什么是几何校正和正射校正还有怎样用erdas做几何校正...