Datawhale-零基础入门NLP-新闻文本分类Task04
1 FastText 学习路径
FastText 是 facebook 近期开源的一个词向量计算以及文本分类工具,FastText的学习路径为:
具体原理就不作解析了,详细教程见:https://fasttext.cc/docs/en/support.html
2 FastText 安装
2.1 基于框架的安装
需要从github下载源码,然后生成可执行的fasttext文件
(1)命令:git clone https://github.com/facebookresearch/fastText.git
(2)命令:cd fastText/ and ls
(3)命令:make
2.2 基于Python模块的安装
(1)直接pip安装:pip install fasttext
(2)源码安装:
3 FastText 实现文本分类
3.1 例子
(1)下载数据
#读取数据
wget https://dl.fbaipublicfiles.com/fasttext/data/cooking.stackexchange.tar.gz
#解压数据
tar xvzf cooking.stackexchange.tar.gz
#显示前几行
head cooking.stackexchange.txt
(2)划分数据集
#查看数据
wc cooking.stackexchange.txt#划分数据集
head -n 12404 cooking.stackexchange.txt > cooking.train
tail -n 3000 cooking.stackexchange.txt > cooking.valid
(3)训练与调参
此处是基于命令行的展示,Python的展示可参考:https://fasttext.cc/docs/en/supervised-tutorial.html
fasttext的参数有:
训练:
./fasttext supervised -input cooking.train -output model_cooking
预测:
./fasttext predict model_cooking.bin -
3.2 基于新闻文本的FastText分析
import fasttext
import pandas as pd
from sklearn.metrics import f1_scoretrain_df = pd.read_csv('data/data45216/train_set.csv',sep='\t')train_df['label_ft'] = '__label__' + train_df['label'].astype(str)
train_df[['text','label_ft']].iloc[:-5000].to_csv('train.csv',index=None,header=None,sep='\t')model = fasttext.train_supervised('train.csv',lr=1.0,wordNgrams=2,verbose=2,minCount=1,epoch=25,loss='hs')val_pred = [model.predict(x)[0][0].split('__')[-1] for x in train_df.iloc[-5000:]['text']]
print(f1_score(train_df['label'].values[-5000:].astype(str),val_pred,average='macro'))
输出结果为:
4 FastText调参
FastText的train_supervised
参数有:
可通过以上参数进行手动设置,也可用过FastText的自动调参功能进行调参。
4.1 基于命令行
(1)验证集验证-autotune-validation
./fasttext supervised -input cooking.train -output model_cooking -autotune-validation cooking.valid
(2)设置执行时间-autotune-duration
./fasttext supervised -input cooking.train -output model_cooking -autotune-validation cooking.valid -autotune-duration 600
(3)模型大小 -autotune-modelsize
./fasttext supervised -input cooking.train -output model_cooking -autotune-validation cooking.valid -autotune-modelsize 2M
(4)指标 -autotune-metric
-autotune-metric f1:__label__baking
-autotune-metric precisionAtRecall:30
-autotune-metric precisionAtRecall:30:__label__baking
-autotune-metric recallAtPrecision:30
-autotune-metric recallAtPrecision:30:__label__baking
4.2 基于Python模块
(1)验证集验证autotuneValidationFile
model = fasttext.train_supervised(input='cooking.train', autotuneValidationFile='cooking.valid')
(2)设置执行时间autotuneDuration
model = fasttext.train_supervised(input='cooking.train', autotuneValidationFile='cooking.valid', autotuneDuration=600)
(3)模型大小autotuneModelSize
model = fasttext.train_supervised(input='cooking.train', autotuneValidationFile='cooking.valid', autotuneModelSize="2M")
(4)指标 autotuneMetric
model = fasttext.train_supervised(input='cooking.train', autotuneValidationFile='cooking.valid', autotuneMetric="f1:__label__baking")
5 作业
使用自动调参进行训练:
import fasttext
import pandas as pd
from sklearn.metrics import f1_scoretrain_df = pd.read_csv('data/data45216/train_set.csv',sep='\t')#将label值转成fasttext识别的格式
train_df['label_ft'] = '__label__' + train_df['label'].astype(str)
#划分训练集和验证集
train_df[['text','label_ft']].iloc[:10000].to_csv('train.csv',index=None,header=None,sep='\t')
train_df[['text','label_ft']].iloc[10000:15000].to_csv('valid.csv',index=None,header=None,sep='\t')#建立模型
model = fasttext.train_supervised('train.csv',lr=1.0,wordNgrams=2,verbose=2,minCount=1,epoch=25,loss='hs',autotuneValidationFile='valid.csv',autotuneMetric="f1:__label__baking")#预测
val_pred = [model.predict(x)[0][0].split('__')[-1] for x in train_df.iloc[-5000:]['text']]
print(f1_score(train_df['label'].values[-5000:].astype(str),val_pred,average='macro'))
Datawhale-零基础入门NLP-新闻文本分类Task04相关推荐
- Task01——零基础入门NLP - 新闻文本分类之赛题理解
本篇目标 首先本篇文章会对赛题进行介绍以及个人对赛题的理解,带大家接触NLP的预处理.模型构建和模型训练等知识点. 赛题介绍 赛题名称:零基础入门NLP - 新闻文本分类 赛题任务:赛题以自然语言处理 ...
- 零基础入门NLP - 新闻文本分类
本文是对阿里云新人竞赛中的"零基础入门NLP - 新闻文本分类"解体过程进行的记录,目前仅使用了textCNN模型进行预测,后续还会考虑使用LSTM进行对比. 赛题数据 赛题以新闻 ...
- 零基础入门NLP - 新闻文本分类,正式赛第一名方案分享
零基础入门NLP - 新闻文本分类,正式赛第一名方案分享:https://mp.weixin.qq.com/s/7WpZUqdlItBToLYuRLm44g
- 【初学者入门】零基础入门NLP - 新闻文本分类
序言 从今天开始入门学习NLP,虽然有点晚,但是我觉得任何时候都值得开始,尤其是面对你去感兴趣的事情.今天的任务是 [零基础入门NLP - 新闻文本分类],这是天池大赛中的入门级算法比赛,入口链接请自 ...
- 天池零基础入门NLP - 新闻文本分类Top1方案的bert4torch复现
天池有些长期比赛可以练习玩玩(还可以继续提交),于是试了下简单的新闻文本分类任务,Top1的解决方案思路是"预训练+fgm+交叉验证模型融合",代码是基于bert4keras的,本 ...
- 【学习笔记】零基础入门NLP - 新闻文本分类实战
赛题理解 首先要理解赛题的背景及描述--赛题以新闻数据为赛题数据,数据集报名后可见并可下载.赛题数据为新闻文本,并按照字符级别进行匿名处理.整合划分出14个候选分类类别:财经.彩票.房产.股票.家 ...
- 阿里云天池 零基础入门NLP - 新闻文本分类 2种做法,F1=0.87
problem 1.赛题理解 数据集: 在NLP_data_list_0715.csv中,有三个链接. 分别可以下载训练集,测试集A,测试样例. f1_score介绍: F1分数(F1-score)是 ...
- 【天池学习赛】零基础入门NLP - 新闻文本分类
一.赛题描述 赛题数据为新闻文本,并按照字符级别进行匿名处理.整合划分出14个候选分类类别:财经.彩票.房产.股票.家居.教育.科技.社会.时尚.时政.体育.星座.游戏.娱乐的文本数据. 赛题任务:赛 ...
- Task02——零基础入门NLP - 新闻文本分类之数据读取与分析
本期目标 学习使用Pandas读取赛题数据 分析赛题数据的分布规律 数据读取 import pandas as pd train_df=pd.read_csv('./train_set.csv/tra ...
- java统计文本中英文单词个数split_零基础入门NLP - 新闻文本分类Task2(天池入门赛)...
本章主要内容是主要是通过pandas模块来进行数据分析.(注:文章只是对天池入门赛课件的学习) 一.学习目标 1.学习使用pandas读取赛题规律 2.分布赛题数据的分布规律 二.数据读取 使用pan ...
最新文章
- 数据库读取image类型发送到前端显示图片
- AngularJs2与AMD加载器(dojo requirejs)集成
- 批量绘制train和test关于特征上的差异
- IE6不支持max的解决办法
- 转义字符简析及注意事项
- 应用电子技术插计算机科学,插本专业大全
- C++ 訪问控制权限图解
- 并发编程之ReadWriteLock接口
- asp.net-DirectoryEntry基本操作入门
- 【rmzt】小清新美女win7主题_7.14
- 腾讯云服务器购买与备案
- Tumblr的消息通知系统是如何构建的
- 逻辑思维训练和推理思维训练
- Xpoded模块开发教程
- 【LocalDate】获取两个日期间相差的年数、月数、天数
- 阿里云天池机器学习task1
- 青少年蓝桥杯python组(STEMA中级组)
- python选股票进阶_Python进阶量化交易专栏场外篇27-股票数据的除权和复权
- 图像识别的应用与实践
- 创建苹果软件应用时app lcon图片问题.
热门文章
- 使用jquery打造一个动态的预览产品颜色效果
- ZEN CART 在LINUX系统下设置邮箱方法---用GMAIL设置,方法选择SMTPAUTH
- 网站开发的小知识参考(慢慢收集备用)
- mysql 数据库查询测试_MySQL查询测试经验
- 机器学习之拉格朗日乘子法和 KKT
- yarn 怎么查看有多个job在跑_flink on yarn 模式下提示yarn资源不足问题分析
- Django中模型类 属性-学习笔记
- 使用2to3.py 转换 python2.x 代码 到python3
- 嵌入式常见笔试题总结
- mysql 8.0 yum_CentOS8 安装 MySQL8.0(yum)