其他分享
首页 > 其他分享> > 科大讯飞学术论文分类挑战赛 0.79+ baseline

科大讯飞学术论文分类挑战赛 0.79+ baseline

作者:互联网

1、赛事背景

随着人工智能技术不断发展,每周都有非常多的论文公开发布。现如今对论文进行分类逐渐成为非常现实的问题,这也是研究人员和研究机构每天都面临的问题。现在希望选手能构建一个论文分类模型。

2、赛事任务

本次赛题希望参赛选手利用论文信息:论文id、标题、摘要,划分论文具体类别。

赛题样例(使用\t分隔):

3、评审规则

1. 数据说明

训练数据和测试集以csv文件给出,其中:

2. 评估指标

本次竞赛的评价标准采用准确率指标,最高分为1。计算方法参考https://scikit-learn.org/stable/modules/generated/sklearn.metrics.accuracy_score.html, 评估代码参考:

from sklearn.metrics import accuracy_score
y_pred = [0, 2, 1, 3]
y_true = [0, 1, 2, 3]
accuracy_score(y_true, y_pred)

3. 评测及排行

1、赛事提供下载数据,选手在本地进行算法调试,在比赛页面提交结果。

2、每支团队每天最多提交3次。

3、排行按照得分从高到低排序,排行榜将选择团队的历史最优成绩进行排名。

4、作品提交要求

文件格式:预测结果文件按照csv格式提交

文件大小:无要求

提交次数限制:每支队伍每天最多3次

预测结果文件详细说明:

  1. 以csv格式提交,编码为UTF-8,第一行为表头;

  2. 提交前请确保预测结果的格式与sample_submit.csv中的格式一致。具体格式如下:

paperid,categories

test_00000,cs.CV

test_00001,cs.DC

test_00002,cs.AI

test_00003,cs.NI

test_00004,cs.SE

5、赛程规则

正式赛

7月12日——8月11日

长期赛

8月12日——9月20日

因赛事以学习实践为主,正式赛将转变为长期赛,供开发者学习实践。本阶段提交后,系统会根据成绩持续更新榜单,但该阶段榜单不再进行公示和奖励。

6、奖项设置

本赛题设立一、二、三等奖各一名,具体详情如下:

7 、基于Roberta的学术论文分类模型

拼接后title和abstract的文本长度分布

import gc
import os

import numpy as np
import pandas as pd
import seaborn as sns
import torch
from pylab import rcParams
from simpletransformers.classification import ClassificationModel, ClassificationArgs
from sklearn.metrics import accuracy_score

os.environ["CUDA_VISIBLE_DEVICES"] = "0"  # 设置显卡
# 配置

sns.set(style='whitegrid', palette='muted', font_scale=1.2)
HAPPY_COLORS_PALETTE = ["#01BEFE", "#FFDD00", "#FF7D00", "#FF006D", "#ADFF02", "#8F00FF"]
sns.set_palette(sns.color_palette(HAPPY_COLORS_PALETTE))
rcParams['figure.figsize'] = 25, 20
RANDOM_SEED = 42
np.random.seed(RANDOM_SEED)
torch.manual_seed(RANDOM_SEED)

train = pd.read_csv('data/train/train.csv', sep='\t')
test = pd.read_csv('data/test/test.csv', sep='\t')
sub = pd.read_csv('data/sample_submit.csv')

# 拼接title与abstract
train['text'] = train['title'] + ' ' + train['abstract']
test['text'] = test['title'] + ' ' + test['abstract']

label_id2cate = dict(enumerate(train.categories.unique()))
label_cate2id = {value: key for key, value in label_id2cate.items()}

train['label'] = train['categories'].map(label_cate2id)

train = train[['text', 'label']]
train_y = train["label"]

train_df = train[['text', 'label']][:45000]
eval_df = train[['text', 'label']][45000:]

model_args = ClassificationArgs()
model_args.max_seq_length = 20
model_args.train_batch_size = 8
model_args.num_train_epochs = 1
model_args.fp16 = False
model_args.evaluate_during_training = False
model_args.overwrite_output_dir = True

model_type = 'roberta'
model_name = 'roberta-base'
print("training {}.........".format(model_name))
model_args.cache_dir = './caches' + '/' + model_name.split('/')[-1]
model_args.output_dir = './outputs' + '/' + model_name.split('/')[-1]

model = ClassificationModel(
    model_type,
    model_name,
    num_labels=39,
    args=model_args)

model.train_model(train_df, eval_df=eval_df)
result, _, _ = model.eval_model(eval_df, acc=accuracy_score)
print(result)

data = []
for index, row in test.iterrows():
    data.append(str(row['text']))
predictions, raw_outputs = model.predict(data)
sub = pd.read_csv('data/sample_submit.csv')
sub['categories'] = predictions
sub['categories'] = sub['categories'].map(label_id2cate)
sub.to_csv('result/submit_{}.csv'.format(model_name), index=False)
del model
gc.collect()

线上提交结果:

6	返回分数	0.7937	1_roberta-base_addlen.csv		致Great	2021-07-12 16:04:22

8 、提升思路

标签:论文,baseline,args,train,test,挑战赛,0.79,csv,model
来源: https://blog.csdn.net/yanqianglifei/article/details/118768411