Datawhale AI夏令营第三期 :基于论文摘要的文本分类与关键词抽取挑战赛——学习记录(1)

自然语言处理(Natural Language Processing,NLP)是人工智能(AI)领域的技术之一,其目标是赋予计算机理解、解释、处理和生成人类日常语言(例如英语、中文等)的能力。通过实现这一目标,NLP致力于让计算机能够模仿人类一样的语言处理能力,从而实现更加自然、智能的人机交互。该领域的任务范围广泛,其中包括文本分类,自动将文本分配到预先定义的类别中,例如垃圾邮件分类和情感分析;还有信息抽取,从文本中提取特定信息,如新闻报道中的重要事件。

实践任务:基于论文摘要的文本分类与关键词抽取挑战赛

  1. 机器通过对论文摘要等信息的理解,判断该论文是否属于医学领域的文献。

任务1示例:

输入:

论文信息,格式如下:

Inflammatory Breast Cancer: What to Know About This Unique, Aggressive Breast Cancer.,

[Arjun Menta, Tamer M Fouad, Anthony Lucci, Huong Le-Petross, Michael C Stauder, Wendy A Woodward, Naoto T Ueno, Bora Lim],

Inflammatory breast cancer (IBC) is a rare form of breast cancer that accounts for only 2% to 4% of all breast cancer cases. Despite its low incidence, IBC contributes to 7% to 10% of breast cancer caused mortality. Despite ongoing international efforts to formulate better diagnosis, treatment, and research, the survival of patients with IBC has not been significantly improved, and there are no therapeutic agents that specifically target IBC to date. The authors present a comprehensive overview that aims to assess the present and new management strategies of IBC.,

Breast changes; Clinical trials; Inflammatory breast cancer; Trimodality care.

输出:

环境配置可以参考以下博主写的教程:

anaconda安装:Anaconda详细安装及使用教程(带图文)_代码帮的博客-CSDN博客

pytorch安装:安装PyTorch详细过程_pytorch安装_MC云鸷骚峰的博客-CSDN博客

个人觉得python版本为3.7或者3.8就适合大部分代码运行,然后如果电脑有GPU建议下载gpu版本的pyotrch,然后找一个适合自己电脑配置的版本下载即可。

这边也提供一个大佬编写的白嫖在线计算资源以及部署教程Docsicon-default.png?t=N6B9https://qwosdw576oc.feishu.cn/docx/NajfdyJm3oripXxrPFFczjSon4z?from=from_copylink本次是第二次参加AI夏令营,第一期参加的时候使用的方法为传统算法以及bert方法,下面是由datawhale团队编写的baseline

任务一:文献领域分类
作者选择使用BOW将文本转换为向量表示,选择逻辑回归模型来完成训练和评估。(个人认为此方法的优点有:适用于稀疏数据:BOW方法可以处理稀疏性高的文本数据。在文本中,每个文档可能由成千上万个单词组成,但每个文档通常只包含其中的一小部分单词。这导致特征向量中大多数元素为零,这种稀疏性在逻辑回归中并不会导致问题。没有序列信息依赖:BOW方法将文本视为单个词的集合,而不考虑它们的顺序,这对于一些任务可能是有益的。例如,在情感分析中,判断一句话是正面还是负面情感,句子中词语的顺序并不总是很重要。但可能存在一些不足的地方,如:BOW方法无法捕捉词语之间的语义和上下文关系,因为它只考虑了词语的出现频率而没有考虑它们的位置和顺序。)

代码如下:

# 导入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)

本次使用chatglm2-6b大模型微调的方法进行上分,ID 2为自己去做数据集然后用LoRA微调,最后得分并没有很理想;而ID 1 是由一位大佬微调出的结果,从图中可以明显看出,制作出的数据集的好坏可以导致微调的好坏,最后决定分数的差异。接下来我将继续学习大模型的方法,去实现更多领域功能的实现。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值