Datawhale干货

作者:阿水,北京航空航天大学,Datawhale成员

赛事背景

在人工智能领域的学习中,研读有关文献是非常重要的学习途径,而如何在汗牛充栋的论文库中,高效快速的检索到相关重要文献,就成为知识学习首先要解决的难点。

完整代码实践:

https://xj15uxcopw.feishu.cn/docx/doxcnUDk1pzzvBWi5AIfBGBpyne

赛题任务

机器通过对论文摘要等信息的理解,划分论文类别。具体输入输出示例如下:

  • 输入:论文信息,格式如下图

  • 输出:电气

实践思路

本赛题是一个典型的文本分类任务。由于文本数据是典型的非结构化数据,此类实践的处理通常涉及到 特征提取分类模型 两部分。常见的思路有两种:基于机器学习的思路和基于深度学习的思路。

可以先尝试基于机器学习的思路:TF-IDF + 机器学习分类器,其中分类器选择SGD线性分类器。SGD是线性分类器的一种,可以理解为逻辑回归+随机梯度下降,适合处理文本TF-IDF编码后的稀疏场景。

实践代码

具体代码如下:

#安装相关依赖库 如果是windows系统,cmd命令框中输入pip安装,参考上述环境配置
#!pip install sklearn
#!pip install pandas
#---------------------------------------------------
#导入库
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import SGDClassifier
from sklearn.model_selection import cross_val_score#----------------数据探索----------------
#数据预处理
#加载训练集
train_df = pd.read_csv('./基于论文摘要的文本分类与查询性问答公开数据/train.csv', sep=',')
#加载测试集
test_df = pd.read_csv('./基于论文摘要的文本分类与查询性问答公开数据/test.csv', sep=',')#EDA数据探索性分析
train_df.head()test_df.head()#----------------特征工程----------------
#将Topic(Label)编码
train_df['Topic(Label)'], lbl = pd.factorize(train_df['Topic(Label)'])#将论文的标题与摘要组合为 text 特征
train_df['Title'] = train_df['Title'].apply(lambda x: x.strip())
train_df['Abstract'] = train_df['Abstract'].fillna('').apply(lambda x: x.strip())
train_df['text'] = train_df['Title'] + ' ' + train_df['Abstract']
train_df['text'] = train_df['text'].str.lower()test_df['Title'] = test_df['Title'].apply(lambda x: x.strip())
test_df['Abstract'] = test_df['Abstract'].fillna('').apply(lambda x: x.strip())
test_df['text'] = test_df['Title'] + ' ' + test_df['Abstract']
test_df['text'] = test_df['text'].str.lower()#使用tfidf算法做文本特征提取
tfidf = TfidfVectorizer(max_features=2500)#----------------模型训练----------------train_tfidf = tfidf.fit_transform(train_df['text'])
clf = SGDClassifier()
cross_val_score(clf, train_tfidf, train_df['Topic(Label)'], cv=5)test_tfidf = tfidf.transform(test_df['text'])
clf = SGDClassifier()
clf.fit(train_tfidf, train_df['Topic(Label)'])
test_df['Topic(Label)'] = clf.predict(test_tfidf)#----------------结果输出----------------
test_df['Topic(Label)'] = test_df['Topic(Label)'].apply(lambda x: lbl[x])
test_df[['Topic(Label)']].to_csv('submit.csv', index=None)

上分思路

上述代码详细讲解了基于机器学习的思路,若想进阶实践,可考虑尝试基于深度学习来进行实践,提供以下几种常见解题思路供大家参考:

  • 思路1:FastText:FastText是入门款的词向量,利用Facebook提供的FastText工具,可以快速构建出分类器。

  • 思路2:WordVec + 深度学习分类器:WordVec是进阶款的词向量,并通过构建深度学习分类完成分类。深度学习分类的网络结构可以选择TextCNN、TextRNN或者BiLSTM。

  • 思路3:Bert词向量:Bert是高配款的词向量,具有强大的建模学习能力。

新手村

本文为Datawhale项目实践1.0的教程,如果你是在校生,或者刚入门阶段,可以进内测群,我们在学习反馈中一起优化教程。

整理不易,三连

北航学长的NLP赛事教程!相关推荐

  1. 从0梳理1场NLP赛事!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:徐美兰-lan,华南理工大学 摘要:这是从0实践竞赛第3篇,数据竞 ...

  2. 【NLP】从0梳理1场NLP赛事!

    作者:徐美兰-lan,华南理工大学 摘要:这是从0实践竞赛第3篇,数据竞赛对理论实践和增加履历有益,为了让初学者也能入门,本文以全球人工智能技术大赛预热赛-中文预训练模型赛事为背景,梳理了nlp赛事的 ...

  3. 北航计算机控制系统实验报告,北航计算机控制系统实验报告教程.doc

    北航计算机控制系统实验报告教程 计算机控制系统实 验 报 告 实验一 模拟式小功率随动系统的实验调试实验二 A/D.D/A接口的使用和数据采集实验三 中断及采样周期的调试实验四 计算机控制系统的实验调 ...

  4. 2022语言与智能技术竞赛启动 全球热门的中文NLP赛事它来了

    近年来,产学研各界在自然语言处理(NLP)领域持续深耕,促进着人工智能技术不断向前发展.技术的应用不仅改变着人类的生活方式,也为产业升级提供了更多可能. 3月30日,聚焦NLP领域的2022语言与智能 ...

  5. 北航学长:DCIC 2021的算法方案讲解

    作者:阿水,北京航空航天大学 ,Datawhale成员 DCIC 作为每年具有重要影响力的政府赛事,除了高认可,高奖金,最重要的是开放了政府和企业的真实数据,具有研究和落地价值,但对于刚参加赛事的同学 ...

  6. 独家 | NLP详细教程:手把手教你用ELMo模型提取文本特征(附代码论文)

    作者:PRATEEK JOSHI 翻译:韩国钧 校对:李  浩 本文约3500字,建议阅读15分钟. 本文将介绍ELMo的原理和它与传统词嵌入的区别,然后通过实践来展示其效果. 简介 我致力于研究自然 ...

  7. python nlp_Python NLP入门教程

    本文简要介绍Python自然语言处理(NLP),使用Python的NLTK库.NLTK是Python的自然语言处理工具包,在NLP领域中,最常使用的一个Python库. 什么是NLP? 简单来说,自然 ...

  8. Python NLP 入门教程

    本文简要介绍Python自然语言处理(NLP),使用Python的NLTK库.NLTK是Python的自然语言处理工具包,在NLP领域中,最常使用的一个Python库. 什么是NLP? 简单来说,自然 ...

  9. Python NLP入门教程

    什么是NLP? 简单来说,自然语言处理(NLP)就是开发能够理解人类语言的应用程序或服务. 这里讨论一些自然语言处理(NLP)的实际应用例子,如语音识别.语音翻译.理解完整的句子.理解匹配词的同义词, ...

最新文章

  1. vanpopup 高度_解决VantUI popup 弹窗不弹出或无蒙层的问题
  2. websocket如何区分用户_WebSocket与普通Socket的差异
  3. Socket / ServerSocket
  4. 安装虚拟机 Network boot from AMD Operating System no...
  5. http Error 503 server unavailable
  6. 2014/School_C_C++_A/5/勾股定理
  7. Objective--C内存管理基础
  8. UOJ#191. 【集训队互测2016】Unknown
  9. jvm 垃圾收集算法_JVM垃圾收集和优化
  10. Mysql安装及其配置
  11. 黑马程序员 java了解和DOS命令
  12. 科蓝ichat泡分机器人 官网
  13. HFSS阵列天线设计与仿真2
  14. Linux_Oracle_11g_R2_RAC_安装配置详细过程
  15. I DID IT 推广二番 | ArcBlock 发布汇款转账应用 Demo
  16. [Linux 配置Mysql] 在Linux上面 安装mysql 5.7数据库
  17. 实时采集福利彩票的中奖信息和最新开奖信息-JAVA
  18. 关于MSP430单片机串口通信数据丢失问题
  19. 使用YOLOv5实现多路摄像头实时目标检测
  20. LPL2020夏季常规赛7月22日RW vs ES,WE vs BLG前瞻预测

热门文章

  1. 十几减9的口算题_一年级数学口算题:十几减9(可下载)
  2. 【Handshake】引发全硅谷投资机构额度大战的传奇项目
  3. [LiteratureReview]PointNet Deep Learning on Point Sets for 3D Classification and Segmentation
  4. 2019年2月被举报钓鱼网站
  5. 全球及中国地理信息产业应用建设发展及产值规模预测报告2021-2027
  6. SaltStack安装踩坑之路
  7. 成品app直播源码,java编写字母顺序矩阵
  8. JAVA 吃货联盟-北大青鸟--第十七章--
  9. Android 控制台读取sqlite数据库以及adb获取root权限问题
  10. 20天时间,一个人怎么搞定这个后台管理项目