NLP——天池新闻文本分类 Task4:fasttext深度学习
Posted dingdingdongs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NLP——天池新闻文本分类 Task4:fasttext深度学习相关的知识,希望对你有一定的参考价值。
NLP——新闻文本分类:TASK3 深度学习Fasttext
Fasttext是一种深度学习词向量的表示方法,它是一种三层神经网络,包含输入层,隐含层和输出层。
模型架构:fastText 模型输入一个词的序列(一段文本或者一句话),输出这个词序列属于不同类别的概率。序列中的词和词组组成特征向量,特征向量通过线性变换映射到中间层,中间层再映射到标签。fastText 在预测标签时使用了非线性激活函数,但在中间层不使用非线性激活函数。
层次softmax:在某些文本分类任务中类别很多,计算线性分类器的复杂度高。为了改善运行时间,fastText 模型使用了层次 Softmax 技巧。层次 Softmax 技巧建立在哈夫曼编码的基础上,对标签进行编码,能够极大地缩小模型预测目标的数量。
N-gram 特征:fastText 可以用于文本分类和句子分类。不管是文本分类还是句子分类,我们常用的特征是词袋模型。但词袋模型不能考虑词之间的顺序,因此 fastText 还加入了 N-gram 特征。
##coding=utf-8
import pandas as pd
from sklearn.metrics import f1_score
import numpy
train_df=pd.read_csv(‘train_set.csv‘,encoding=‘gbk‘, sep=‘ ‘)
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=‘ ‘)
import fasttext.FastText as ff
model = ff.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‘))
可得到结果
Read 177M words
Number of words: 6858
Number of labels: 14
Progress: 100.0% words/sec/thread: 647070 lr: 0.000000 avg.loss: 0.091541 ETA: 0h 0m 0s
0.913031467414968
以上是关于NLP——天池新闻文本分类 Task4:fasttext深度学习的主要内容,如果未能解决你的问题,请参考以下文章
阿里云天池算法挑战赛零基础入门NLP - 新闻文本分类-Day2-数据读取与数据分析
阿里云天池 零基础入门NLP - 新闻文本分类 2种做法,F1=0.87