前两篇主要写了数据预处理(https://blog.csdn.net/jasmine0244/article/details/108888236)和模型搭建(https://blog.csdn.net/jasmine0244/article/details/108902127),接下来就是K折模型验证评估。

官方的评估标准是以ROUGE-L(https://www.aclweb.org/anthology/W04-1013.pdf)为准。我在github上找到了一个免安装的版本,rouge4chinese(https://github.com/hpzhao/nlp-metrics)。

首先我们将K折的验证集也输出来,方便和验证集的预测结果进行评估

from tqdm import tqdm
k_folds = 5
for mode in range(k_folds): valid_data = [data[j] for i, j in enumerate(random_order) if i % k_folds == mode]print(len(valid_data))with open("ref_{0}".format(mode), 'w', encoding='utf-8') as f:for d in tqdm(iter(valid_data), desc=u'正在输出(共%s条样本)' % len(valid_data)):s = '%s\t%s\t%s\n' % (d[1], d[2], d[0])f.write(s)f.flush()

又因为rouge4chinese用来评估的文件文本是分词后的结果,因此对输出文本均做分词处理,我这里用的是jieba分词器

import jieba
def cut(old_file, new_file):with open(old_file,"r") as f:lines = f.readlines()with open(new_file, 'w', encoding='utf-8') as f:for line in lines:s = " ".join(list(jieba.cut(line))) + "\n"f.write(s)f.flush()# 验证集预测输出分词
for mode in range(k_folds):cut('qa_{0}.csv'.format(mode),'qa_{0}.txt'.format(mode))
# 验证集原始分词
for mode in range(k_folds):cut('ref_{0}'.format(mode),'ref_{0}.txt'.format(mode))

然后修改rouge4chinese里的run.sh脚本 中GEN和REF的路径即可

生成了5个sh文件,分别表示K=0-4这5种情况的评估结果,看下面记录,第0份结果比较好(第1份效果最差,已经删除了,没记录)

最后就是采用最优模型来预测:

def submit(qag,submit_file):with open(test_file,"r") as f:text = f.read()test_json = json.loads(text)print("test_json's size: {0}".format(len(test_json)))pre_data = []for line in tqdm(iter(test_json), desc=u'正在预测(共%s条样本)' % len(test_json)):one_json = dict()one_json['id'] = line['id']one_json['text'] = line['text']one_json['annotations'] = []for p in line['annotations']:if p['A']:ans = p['A']para = Nonefor t in text_segmentate(line['text'], max_p_len - 2, seps, strips):if ans in t:para = tbreakif para:q = qag.generate(para, ans)else:q = qag.generate(line['text'], ans)one_json['annotations'].append({'Q': q, 'A': p['A']})else:one_json['annotations'].append(p)pre_data.append(one_json)print("pre_data's size: {0}".format(len(pre_data)))with open(submit_file, 'w', encoding='utf-8') as f1:f1.write(json.dumps(pre_data, indent=4, ensure_ascii=False))
if __name__ == "__main__":
#     k_folds_train(k_folds)best_model='../best_model.weights_0'model = build_model()model.load_weights(best_model) qag = QuestionAnswerGeneration(start_id=None, end_id=tokenizer._token_end_id, maxlen=max_q_len)submit_file = "../prediction_result/result.json"submit(qag,submit_file)

最后输出的结果我没提交到天池平台,因为忘记在天池平台上点击支付宝实名认证被淘汰了。但是我第一次提交的成绩是

这个效果应该会比我第一次好,接下去我也没再做改进了,算法上也没有什么贡献,就止步了。

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

  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. FFmpeg中可执行文件ffmpeg用法汇总
  2. Upgrading PHP on CentOS 6.5 (Final)
  3. 多生产者_通知:生产者补贴!打卡时间!定了
  4. 【英语学习】【医学】有机化学 - 烷的命名
  5. 【英语学习】【WOTD】disavow 释义/词源/示例
  6. (26)IMPCAT软件bit文件下载流程(FPGA不积跬步101)
  7. Linux虚拟网络设备之tun/tap
  8. 大白话讲高项高频知识点(在线更新)
  9. HTML5 Canvas中实现文字链接
  10. “vueuse“ 中文索引与用例
  11. MinIO之Windows环境的搭建
  12. linux windows并发模型,LINUX环境并发服务器的三种实现模型
  13. vb mysql 实例_VB与数据库的交互经典例子总结
  14. 黑马程序员_Java基础_枚举 和 单例模式实例
  15. 利用官方预训练模型快速计算Inception Score和FID
  16. m4125idn如何扫描_京瓷ECOSYS M4125idn驱动
  17. Java POI输出excel单元格画斜线
  18. 如何用python爬取图片数据_python爬虫怎么实现爬取网站图片?
  19. shiro 调用 subject.login(token)方法后
  20. 如何系统得对目标检测模型的误差分析?

热门文章

  1. PowerDesign使用
  2. 一:计算机基础入门及介绍
  3. JSP技术:表单及 POST 方法提交参数
  4. ecshop二次开发攻略
  5. 基于JAVA小小银动漫网站计算机毕业设计源码+数据库+lw文档+系统+部署
  6. CMMI-V2.0真题模拟(1)
  7. [自学考试] [02142数据结构导论] Part1 概论
  8. google code prettify 多款主题颜色及下载
  9. WOW战斗逻辑系统分析
  10. cruzer php sandisk 闪迪u盘量产工具_SanDisk Cruzer Micro(闪迪U盘量产助手)V1.1 最新版