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

Datawhale-新闻文本分类-task4-基于深度学习的文本分类1-fastText

天池nlp文本分类新人赛 Task.1md

NLP新闻主题分类任务

NLP文本分类TorchText实战-AG_NEWS 新闻主题分类任务(PyTorch版)