1 相关信息

  • 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–1 赛后总结与分析

  • 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–2 数据分析

  • 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–3 TextCNN Fasttext 方案

  • 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–4 机器学习LGB 方案

  • 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–5 Bert 方案

  • 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–6 提分方案

2 引言

(1)机器学习方法在我们的任务中,没有重点研究,仅写出一个简单的baseline。该部分由队友博远实现,比赛最后的模型融合的部分,使用到,单个LGB模型,没有调参,5折交叉验证,线上都能达到0.79+的成绩,还有很多可提分点,如果时间允许,有很多提分技巧

  • XGB模型
  • LR模型
  • 多模型融合EnsembleVoteClassifier
  • 多模型融合StackingClassifier
  • 加入伪标签训练
  • 数据增强
    (2)实现步骤
  • 数据预处理
  • K折划分数据
  • TF-IDF提取特征,将单词转为数值矩阵
  • 训练模型
  • 每折预测一遍结果求和,最后取K折的结果的平均作为预测矩阵
  • np.argmax取得预测值
  • 生成提交文件

3 实现

Github源码下载

import pandas as pd
from nltk.stem import WordNetLemmatizer
import re
import nltk
from spacy.lang.en.stop_words import STOP_WORDS
import numpy as np
import lightgbm as lgb
from sklearn import metrics
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.model_selection import KFold, StratifiedKFoldfrom sklearn.model_selection import train_test_splitclean_tag =True
if clean_tag ==True:en_stop = set(nltk.corpus.stopwords.words('english'))custom_stop_words = ['doi', 'preprint', 'copyright', 'peer', 'reviewed', 'org', 'https', 'et', 'al', 'author', 'figure','rights', 'reserved', 'permission', 'used', 'using', 'biorxiv', 'medrxiv', 'license', 'fig', 'fig.','al.', 'elsevier', 'pmc', 'czi', 'www']for word in custom_stop_words:en_stop.add(word)def preprocess_text(document):stemmer = WordNetLemmatizer()document = str(document)document = document.replace("\n", ' ')document = document.replace("/'", '')# Remove  all the special charactersdocument = re.sub(r'\W', ' ', document)# 删除所有单个字符document = re.sub(r'\s+[a-zA-Z]\s+', ' ', document)# 从开头删除单个字符document = re.sub(r'\^[a-zA-Z]\s+', ' ', document)# 用单个空格替换多个空格document = re.sub(r'\s+', ' ', document, flags=re.I)# 数字泛化:,所有大于9的数字都被hashs替换了。即成为# #,123变成# # #或15.80€变成# #,# #€。document = re.sub('[0-9]{5,}', '#####', document)document = re.sub('[0-9]{4}', '####', document)document = re.sub('[0-9]{3}', '###', document)document = re.sub('[0-9]{2}', '##', document)# 转换为小写document = document.lower()# 词形还原tokens = document.split()tokens = [stemmer.lemmatize(word) for word in tokens]# 去停用词tokens = [word for word in tokens if word not in en_stop]# 去低频词tokens = [word for word in tokens if len(word) > 3]preprocessed_text = ' '.join(tokens)return preprocessed_texttrain = pd.read_csv("train/train_stop.csv", sep="\t")test = pd.read_csv("test/test.csv", sep="\t")sub = pd.read_csv("sample_submit.csv")train["text"] = train["title"] + " " + train["abstract"]# for i in range(len(train["text"])):#     train["text"][i] = preprocess_text(train["text"][i])train["text"] = train["text"].progress_apply(lambda x: preprocess_text(x))train.to_csv('ml_clean_data.csv', sep='\t')
else:train = pd.read_csv('ml_clean_data.csv', sep='\t')
# 建立映射
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)
df = train[["text", "label"]]
df.head()# 生成提交文件
def submit_file(result_pred,label_id2cate):#result_pred是预测的结果,应该是10000个值print("存储预测结果")sub=pd.read_csv('./sample_submit.csv')# 官网给出的格式文件sub['categories']=list(result_pred)sub['categories']=sub['categories'].map(label_id2cate)sub.to_csv('submit/submit_{}_ensemble.csv'.format(models_name), index=False)# 5折交叉验证params = {"device_type": "gpu","max_depth": 5,"min_data_in_leaf": 20,"num_leaves": 35,"learning_rate": 0.1,"lambda_l1": 0.1,"lambda_l2": 0.2,"objective": "multiclass","num_class": 39,"verbose": 0,
}train_data = df["text"]
train_label = df["label"]NFOLDS = 5
kfold = StratifiedKFold(n_splits=NFOLDS, shuffle=True, random_state=1)
kf = kfold.split(train_data, train_label)
cv_pred = np.zeros(test.shape[0])
valid_best = 0for i, (train_fold, validate) in enumerate(kf):#     X=train_data.reset_index(drop=True)#     y= train_label.reset_index(drop=True)X_train, X_validate, label_train, label_validate = (train_data.iloc[train_fold],train_data.iloc[validate],train_label[train_fold],train_label[validate],)# 将语料转化为词袋向量,根据词袋向量统计TF-IDFvectorizer = CountVectorizer(max_features=50000)tf_idf_transformer = TfidfTransformer()tf_idf = tf_idf_transformer.fit_transform(vectorizer.fit_transform(X_train))X_train_weight = tf_idf.toarray()  # 训练集TF-IDF权重矩阵tf_idf = tf_idf_transformer.transform(vectorizer.transform(X_validate))X_validate_weight = tf_idf.toarray()  # 验证集TF-IDF权重矩阵dtrain = lgb.Dataset(X_train_weight, label_train)dvalid = lgb.Dataset(X_validate_weight, label_validate, reference=dtrain)bst = lgb.train(params,dtrain,num_boost_round=10000,valid_sets=dvalid,early_stopping_rounds=500,)preds_last = bst.predict(test, num_iteration=bst.best_iteration)cv_pred += bst.predict(test, num_iteration=bst.best_iteration)valid_best += bst.best_score["valid_0"]["auc"]cv_pred /= NFOLDS  # 预测输出
valid_best /= NFOLDS
result =np.argmax(cv_pred,axis=1)
submit_file(list(result),label_id2cate)

【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–4 机器学习LGB 方案相关推荐

  1. 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案--1 赛后总结与分析

    目录 1 相关信息 2 总结 2.1 TextCNN.Fasttext等DL方案 2.2 机器学习LGB方案 2.3 Bert方案 3 继续提分点 1 相关信息 [NLP]讯飞英文学术论文分类挑战赛T ...

  2. 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–5 Bert 方案

    目录 1 相关信息 2 引言 3 实现 3.1 数据预处理 3.2 Bert 4 提分点技巧讲解 5 未来展望 1 相关信息 [NLP]讯飞英文学术论文分类挑战赛Top10开源多方案–1 赛后总结与分 ...

  3. 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案--6 提分方案

    目录 1 相关信息 2 引言 3 提分技巧及实现 3.1 数据增强 3.2 投票融合 3.2 伪标签 4 加快训练 4.1 混合精度训练 4.2 加速训练的其他技巧 4.2.1 有用到的加速策略 4. ...

  4. 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案--2 数据分析

    目录 相关信息 1 赛题 2 数据分析 2.1 加载数据 2.2 查看缺失值 2.3 标签分布 2.4 文本长度 2.5 标题摘要合并后字符长度 3 总结 相关信息 [NLP]讯飞英文学术论文分类挑战 ...

  5. 有哪些可助力英文学术论文写作的在线网站、工具或软件?

    说到英文学术论文写作,相信小伙伴们都有同样的困惑:不是难以下手就是好不容易憋出了万字长文,回过头来一看语法漏洞百出,真的很让人头疼!即使是科研大神也会有这样的烦恼.读了万卷文献,依旧Chinglish ...

  6. 英文学术论文写作——模式识别方向(笔记)

    文章目录 文章结构 英文写作tips Latex小技巧 英文学术论文写作经验几乎为0,在老师和师兄们的帮助下,学习到了如何撰写文章.仅限于模式识别方向的. 文章结构 文章除去abstract,ackn ...

  7. 讯飞-糖尿病遗传风险检测挑战赛

    讯飞-糖尿病遗传风险检测挑战赛 前言 相关库 一.比赛报名 1.1 赛事任务 1.2 读取数据 训练数据集 测试数据集 1.3 数据集基本信息 数据集维度 数据表基本信息 二.比赛数据分析 2.1 缺 ...

  8. 给出广义随机petri网在可靠性方面应用的英文学术论文

    在可靠性方面应用广义随机Petri网的英文学术论文有很多.您可以在Google Scholar或者IEEE Xplore等学术搜索引擎上搜索关于"generalized Stochastic ...

  9. 英文学术论文review的回复

    因为之前投稿的文章有了review,所以记录一下回复review的细节. 英文学术论文投稿后,期刊编辑人员会对文章进行审核(论文格式,论文领域等),再将文章送至领域专家进行专业性审核.审核结束后,期刊 ...

最新文章

  1. vmware tools安装程序无法继续,Microsoft Runtime DLL安装程序未能完成安装。的解决方法
  2. 每张脸值5美元,谷歌花钱买数据强化刷脸,还把隔空操控手机变成现实
  3. CSS Overflow属性详解(转)
  4. linux c++ 函数 查看,在C++ man pages中查询C++的函数
  5. ML之DT(树模型):DT(树模型算法)算法的简介、代码定义、案例应用之详细攻略
  6. ADO Execute 方法
  7. 绝地求生5月22日服务器维护,绝地求生5月22日更新了什么内容 吃鸡5月22日维护公告...
  8. 004:神秘的数组初始化_使容器神秘化101:面向初学者的深入研究容器技术
  9. 云计算之路-黎明前的黑暗:20130424网站故障经过
  10. 【报告分享】科技产业2021年投资策略:科技进步与中美再平衡下的新机遇.pdf(附下载链接)...
  11. UGUI的表格布局组件
  12. VS中的scanf_s函数和scanf
  13. Efficient algorithms for polyploid haplotype phasing 多倍体单体型分型的有效算法
  14. 解决命令提示符已被系统管理员停用的问题
  15. Makefile与前缀后缀相关函数suffix、basename、addsuffix、addprefix
  16. 眼部识别和指纹识别,你会选择谁?
  17. 第5章 运算符、表达式和语句
  18. cookie、sesion
  19. python汽车_Python 小车代码
  20. 如何创建自己的微信公众号?

热门文章

  1. 信贷产品额度定价场景下的回归模型效果评估
  2. APS生产排产帮助面粉加工企业进行成本管控
  3. php模拟qq登录登录代码,PHP模拟QQ登录
  4. 完整教程:设计一款小巧但强大的传感器
  5. 中小学计算机英语研修作业,研修作业
  6. Objective-C实现Mac终端日历程序(cal命令)
  7. 网页图片刷新闪烁解决办法
  8. OpenDDS内部关键的idl文件(Federation)
  9. SeetaFace6使用详细教程(一) 人脸检测--戴着口罩也可以检测
  10. unity WebGL