基于论文摘要的文本分类与关键词抽取(一)

news2024/11/28 16:49:38

基于论文摘要的文本分类与关键词抽取(一)

  • 赛题介绍
  • Baseline
    • 思路
    • 安装库并导入
    • 数据集下载并处理
    • 选择模型并训练
    • 提交结果

赛题介绍

基于论文摘要的文本分类与关键词抽取挑战赛

本任务分为两个子任务:
1.机器通过对论文摘要等信息的理解,判断该论文是否属于医学领域的文献。
2. 提取出该论文关键词。

DataWhale 制作全流程基础演示:NLP实践全流程基础演示

Baseline

参考Datawhale手把手打一场NLP赛事

思路

这两个子任务可以分别使用文本分类和关键词抽取技术来实现。

对于第一个子任务,可以使用文本分类模型(如朴素贝叶斯、支持向量机等)对论文摘要进行训练和预测,从而判断该论文是否属于医学领域的文献。在训练数据中,需要标注每篇论文所属的领域(如医学、生物、化学等),并将摘要作为输入特征。在预测阶段,将待测论文摘要输入到训练好的文本分类模型中,得到该论文所属的领域标签。

对于第二个子任务,可以使用关键词抽取技术来提取出论文中的关键词。常用的关键词抽取方法有TF-IDF、TextRank等。其中,TF-IDF是一种基于词频和逆文档频率的方法,可以将文本转化为向量表示,并计算出每个词在该向量中的权重;TextRank则是一种基于图论的算法,可以将文本中的每个词看作一个节点,通过计算节点之间的相似度构建出一个图,最后根据节点的重要性排序得到关键词列表。

数据集解析
训练集与测试集数据为CSV格式文件,各字段分别是标题、作者和摘要。Keywords为任务2的标签,label为任务1的标签。训练集和测试集都可以通过pandas读取。
在这里插入图片描述

安装库并导入

pip install nltk
python -m pip install paddlepaddle-gpu==2.5.0.post102 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html

导入所需包

# 导入pandas用于读取表格数据
import pandas as pd

# 导入BOW(词袋模型),可以选择将CountVectorizer替换为TfidfVectorizer(TF-IDF(词频-逆文档频率)),注意上下文要同时修改,亲测后者效果更佳
from sklearn.feature_extraction.text import CountVectorizer

# 导入LogisticRegression回归模型
from sklearn.linear_model import LogisticRegression

# 过滤警告消息
from warnings import simplefilter
from sklearn.exceptions import ConvergenceWarning
simplefilter("ignore", category=ConvergenceWarning)

数据集下载并处理

在这里插入图片描述

# 读取数据集
train = pd.read_csv('train.csv')
train['title'] = train['title'].fillna('')
train['abstract'] = train['abstract'].fillna('')

test = pd.read_csv('test.csv')
test['title'] = test['title'].fillna('')
test['abstract'] = test['abstract'].fillna('')


# 提取文本特征,生成训练集与测试集
train['text'] = train['title'].fillna('') + ' ' +  train['author'].fillna('') + ' ' + train['abstract'].fillna('')+ ' ' + train['Keywords'].fillna('')
test['text'] = test['title'].fillna('') + ' ' +  test['author'].fillna('') + ' ' + test['abstract'].fillna('')+ ' ' + train['Keywords'].fillna('')

vector = CountVectorizer().fit(train['text'])
train_vector = vector.transform(train['text'])
test_vector = vector.transform(test['text'])

选择模型并训练

# 引入模型
model = LogisticRegression()

# 开始训练,这里可以考虑修改默认的batch_size与epoch来取得更好的效果
model.fit(train_vector, train['label'])

# 利用模型对测试集label标签进行预测
test['label'] = model.predict(test_vector)

# 生成任务一推测结果
test[['uuid', 'Keywords', 'label']].to_csv('submit_task1.csv', index=None)

提交结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/793260.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

empty module导致的lvs问题

write_verilog时-exclude empty_modules即可 这里也分享一下ICC2 write lvs netlist的命令 write_verilog -exclude {scalar_wire_declarations leaf_module_declarations empty_modules well_tap_cells filler_cells supply_statements} -hierarchy all -force_no_referenc…

电商小程序 留住用户秘诀

你是否也收到这样的用户反馈? 商品列表滚动区域太小,很难找到想要的商品。头部的搜索广告占据了半个屏幕,挤占了实际空间。在我手机这样小的屏幕上,展示区域太小了,能否把它放大点? 在电商页面中&#xff…

Web3将自己写在合约中的代币添加到MetaMask中管理

上文 Web3带着大家根据ERC-20文档编写自己的第一个代币solidity智能合约 带着大家在智能合约中创建了一个自己的代币系统 我们可以在MetaMask中去导入 ganache环境下模拟出来的第一和第二个账号 我们这里 可以看到他们的 ETH 但看不到自己的代币符号 没关系 我们点击这下面的…

linux 内核总结

注意:队列只是一格以前的称呼,底层是链表 进程 多个cpu,每个cpu都有自己的进程队列 进程分类: 实时进程 与用户交互的进程,需要及时的响应(优先级 0~100) 普通进程 响应不需要那么及时的…

Ubuntu的安装与部分配置

该教程使用的虚拟机是virtuabox,镜像源的版本是ubuntu20.04.5桌面版 可通过下面的链接在Ubuntu官网下载:Alternative downloads | Ubuntu 也可直接通过下面的链接进入百度网盘下载【有Ubuntu20.04.5与hadoop3.3.2以及jdk1.8.0_162,该篇需要使…

openlayers点线面绘制工具栏

效果大概如上&#xff0c;点击了按钮之后在地图上绘制相对应的点/线/面。 代码部分&#xff1a; 首先放个容器 <div id"toolbar"></div> js部分&#xff08;因为地图已经创建好了&#xff0c;我这里就不放地图的代码了&#xff0c;如果需要可以看我上…

《Docker调试技巧与工具:解决常见容器问题,助力容器应用稳定运行》

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

Leetcode 滑动窗口题目总结

(Leetcode 滑动窗口题目总结) 1&#xff1a; 3.无重复字符的最长子串 https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/子串 和 子序列的区别&#xff1a;字串是连续的&#xff0c;子序列是非连续的。快慢指针 i 和 j&#xff0c;…

登录页的具体实现 (小兔鲜儿)【Vue3】

登录页 整体认识和路由配置 整体认识 登录页面的主要功能就是表单校验和登录登出业务 准备模板 <script setup></script><template><div><header class"login-header"><div class"container m-top-20"><h1 cl…

【外卖系统】员工信息分页查询

需求分析 当数据较多时&#xff0c;如果将数据在一个页面中全部展示出来会显得比较乱&#xff0c;不便于查看&#xff0c;所以一般系统都会以分页的方式来展示列表数据。 代码开发 页面发送ajax请求&#xff0c;将分页查询参数&#xff08;page、pageSize、name&#xff09;…

精密空调监控太难?手动太慢?这才是最牛的工具!

在医疗设施中&#xff0c;精密空调监控是一项至关重要的系统。它扮演着保障患者健康和医疗操作顺利进行的关键角色。 精密空调系统能够确保手术室、实验室和重症监护室等关键区域内的恒温、湿度和空气质量处于合适状态&#xff0c;从而保证医疗设备的正常运行和医护人员的舒适工…

【考研前阳了】成电858上岸学长经验分享

这个系列会邀请往届学长学姐进行经验分享~欢迎后台回复经验分享&#xff0c;进行投稿&#xff01; 经验贴征集&#xff1a;前人栽树&#xff0c;后人乘凉&#xff0c;上岸同学也是看着经验贴一点一点过来的&#xff0c;有偿征集各位同学的经验分享&#xff0c;以此来帮助更多的…

power dns recursor 4.5以后版本的奇葩问题

问题 最近升级了 pdns-recursor 从 4.1.X 升级至 4.8.x 出现下面问题 效果为 nslookup 可以返回 ip 地址 dig 无法返回对应 ip 地址 ad dns 服务器转发过来的解析都不响应 tcp 抓包如下 当使用 nslookup 请求时 addition rrs 请求为 0 当使用 dig 请求时 addition rrs 请求为 1…

[Ubuntu 22.04] 安装Harbor

1. docker安装 [Ubuntu 22.04] 安装docker&#xff0c;并设置镜像加速 2. Harbor脚本功能 Harbor安装包文件作用解释&#xff1a; prepare 环境准备 common.sh 环境检测脚本&#xff0c;在安装过程中会运行该脚本来检测docker、docker-compose、golang等是否符合要求 harbor…

51单片机--AD/DA

AD/DA介绍 AD和DA是模拟信号和数字信号之间的转换过程。 AD&#xff0c;全称为模拟到数字&#xff08;Analog-to-Digital&#xff09;&#xff0c;指的是将模拟信号转换为数字信号的过程。在AD转换中&#xff0c;模拟信号经过采样、量化和编码等步骤&#xff0c;被转换为离散的…

liteflow 2.10 配置中心简单记录

除nacos是一个key 同时管理chain和script node外,可以理解为配置文件整体放到一个key下nacos下的文件必须是xml格式,系统只实现了xml parser其它etcd,zk,Apollo 是两个namespace/path(chain及script node各一)下多个key,每个key对应一个chain/node所有配置中心的核心代码…

跟我一起从零开始学python(十)Hadoop从零开始入门

前言 回顾之前讲了python语法编程 &#xff0c;必修入门基础和网络编程&#xff0c;多线程/多进程/协程等方面的内容&#xff0c;后续讲到了数据库编程篇MySQL&#xff0c;Redis&#xff0c;MongoDB篇&#xff0c;和机器学习&#xff0c;全栈开发&#xff0c;数据分析前面没看…

【Windows】不要让你的win键落灰!掌握常用的组合快捷键,使用电脑更高效了

Windows 操作系统提供了丰富的键盘快捷键&#xff0c;能够大幅提高工作效率和操作便利性。在此介绍一些与 Win 键相关的常用快捷键&#xff0c;帮助你更好地利用 Windows 系统。想要在使用电脑时更高效吗&#xff1f;掌握常用的组合快捷键&#xff0c;让你的 Win 键从此不再落灰…

phkit - 中英音素处理、文本转拼音、文本正则化

文章目录 关于 phkit安装包含组件pinyinkitchinesesymbolsequencepinyinphonemenumberconvertstyleenglish关于 phkit phoneme toolkit: 拼音相关的文本处理工具箱,中文和英文的语音合成前端文本解决方案。 github : https://github.com/KuangDD/phkit

【Lua学习笔记】Lua进阶——Table(2)

文章目录 Table的一万种用法二维数组类和结构体Table操作insert & removesortconcat 接上文【Lua学习笔记】Lua进阶——Table&#xff0c;迭代器 Table的一万种用法 二维数组 a {{ 1, 2, 3 },{ 4, 5, 6 }, } print(#a) -->2 for i1,#a dob a[i]for j1,#b doprint(b[…