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相关推荐

  1. Task01——零基础入门NLP - 新闻文本分类之赛题理解

    本篇目标 首先本篇文章会对赛题进行介绍以及个人对赛题的理解,带大家接触NLP的预处理.模型构建和模型训练等知识点. 赛题介绍 赛题名称:零基础入门NLP - 新闻文本分类 赛题任务:赛题以自然语言处理 ...

  2. 零基础入门NLP - 新闻文本分类

    本文是对阿里云新人竞赛中的"零基础入门NLP - 新闻文本分类"解体过程进行的记录,目前仅使用了textCNN模型进行预测,后续还会考虑使用LSTM进行对比. 赛题数据 赛题以新闻 ...

  3. 零基础入门NLP - 新闻文本分类,正式赛第一名方案分享

    零基础入门NLP - 新闻文本分类,正式赛第一名方案分享:https://mp.weixin.qq.com/s/7WpZUqdlItBToLYuRLm44g

  4. 【初学者入门】零基础入门NLP - 新闻文本分类

    序言 从今天开始入门学习NLP,虽然有点晚,但是我觉得任何时候都值得开始,尤其是面对你去感兴趣的事情.今天的任务是 [零基础入门NLP - 新闻文本分类],这是天池大赛中的入门级算法比赛,入口链接请自 ...

  5. 天池零基础入门NLP - 新闻文本分类Top1方案的bert4torch复现

    天池有些长期比赛可以练习玩玩(还可以继续提交),于是试了下简单的新闻文本分类任务,Top1的解决方案思路是"预训练+fgm+交叉验证模型融合",代码是基于bert4keras的,本 ...

  6. 【学习笔记】零基础入门NLP - 新闻文本分类实战

    赛题理解   首先要理解赛题的背景及描述--赛题以新闻数据为赛题数据,数据集报名后可见并可下载.赛题数据为新闻文本,并按照字符级别进行匿名处理.整合划分出14个候选分类类别:财经.彩票.房产.股票.家 ...

  7. 阿里云天池 零基础入门NLP - 新闻文本分类 2种做法,F1=0.87

    problem 1.赛题理解 数据集: 在NLP_data_list_0715.csv中,有三个链接. 分别可以下载训练集,测试集A,测试样例. f1_score介绍: F1分数(F1-score)是 ...

  8. 【天池学习赛】零基础入门NLP - 新闻文本分类

    一.赛题描述 赛题数据为新闻文本,并按照字符级别进行匿名处理.整合划分出14个候选分类类别:财经.彩票.房产.股票.家居.教育.科技.社会.时尚.时政.体育.星座.游戏.娱乐的文本数据. 赛题任务:赛 ...

  9. Task02——零基础入门NLP - 新闻文本分类之数据读取与分析

    本期目标 学习使用Pandas读取赛题数据 分析赛题数据的分布规律 数据读取 import pandas as pd train_df=pd.read_csv('./train_set.csv/tra ...

  10. java统计文本中英文单词个数split_零基础入门NLP - 新闻文本分类Task2(天池入门赛)...

    本章主要内容是主要是通过pandas模块来进行数据分析.(注:文章只是对天池入门赛课件的学习) 一.学习目标 1.学习使用pandas读取赛题规律 2.分布赛题数据的分布规律 二.数据读取 使用pan ...

最新文章

  1. 数据库读取image类型发送到前端显示图片
  2. AngularJs2与AMD加载器(dojo requirejs)集成
  3. 批量绘制train和test关于特征上的差异
  4. IE6不支持max的解决办法
  5. 转义字符简析及注意事项
  6. 应用电子技术插计算机科学,插本专业大全
  7. C++ 訪问控制权限图解
  8. 并发编程之ReadWriteLock接口
  9. asp.net-DirectoryEntry基本操作入门
  10. 【rmzt】小清新美女win7主题_7.14
  11. 腾讯云服务器购买与备案
  12. Tumblr的消息通知系统是如何构建的
  13. 逻辑思维训练和推理思维训练
  14. Xpoded模块开发教程
  15. 【LocalDate】获取两个日期间相差的年数、月数、天数
  16. 阿里云天池机器学习task1
  17. 青少年蓝桥杯python组(STEMA中级组)
  18. python选股票进阶_Python进阶量化交易专栏场外篇27-股票数据的除权和复权
  19. 图像识别的应用与实践
  20. 创建苹果软件应用时app lcon图片问题.

热门文章

  1. 使用jquery打造一个动态的预览产品颜色效果
  2. ZEN CART 在LINUX系统下设置邮箱方法---用GMAIL设置,方法选择SMTPAUTH
  3. 网站开发的小知识参考(慢慢收集备用)
  4. mysql 数据库查询测试_MySQL查询测试经验
  5. 机器学习之拉格朗日乘子法和 KKT
  6. yarn 怎么查看有多个job在跑_flink on yarn 模式下提示yarn资源不足问题分析
  7. Django中模型类 属性-学习笔记
  8. 使用2to3.py 转换 python2.x 代码 到python3
  9. 嵌入式常见笔试题总结
  10. mysql 8.0 yum_CentOS8 安装 MySQL8.0(yum)