码迷,mamicode.com
首页 > 其他好文 > 详细

NLP——天池新闻文本分类 Task4:fasttext深度学习

时间:2020-07-28 00:21:27      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:numpy   因此   不同类   ram   lan   很多   ESS   ISE   sep   

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=‘\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‘)

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深度学习

标签:numpy   因此   不同类   ram   lan   很多   ESS   ISE   sep   

原文地址:https://www.cnblogs.com/dingdingdongs/p/13387876.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!