DataWhale零基础入门NLP赛事系列——Task4基于深度学习得文本分类fasttext

1. fasttext在windows下的安装

不知道多少小伙伴跟我遇到过一样类似的问题,直接pip install fasttext会报错。所以我们需要先下载一个.whl的包。下载地址:fasttext
DataWhale零基础入门NLP赛事系列——Task4基于深度学习得文本分类fasttext_第1张图片
我的python是3.7的,选了如上图所示的
测试一下,在cmd里输入

import fasttext

不报错即可。

2. fasttext对数据格式的要求

我们的训练集数据格式:label,text
DataWhale零基础入门NLP赛事系列——Task4基于深度学习得文本分类fasttext_第2张图片
但是,fasttextasttext在windows下的安装
不知道多少小伙伴跟我遇到过一样类似的问题,直接pip install fasttext会报错。所以我们需要先下载一个.whl的包。下载地址:fasttextDataWhale零基础入门NLP赛事系列——Task4基于深度学习得文本分类fasttext_第3张图片我的python是3.7的,选了如上图所示的测试一下,在cmd里输入pythonimport fasttext不报错即可。## 2. fasttext对数据格式的要求我们的训练集数据格式:label,textDataWhale零基础入门NLP赛事系列——Task4基于深度学习得文本分类fasttext_第4张图片但是,fasttext要求的数据格式:分词后的句子+\t__label__标签。
因此首先需要对数据处理一下

# 转换为FastText需要的格式
train_df = pd.read_csv('data/train_set.csv',sep='\t')
train_df['label_ft'] = '__label__' + train_df['label'].astype(str)
print(train_df.head())
train_df[['text','label_ft']].iloc[:-50000].to_csv('train_fasttext.csv', index=None, header=None, sep='\t')

DataWhale零基础入门NLP赛事系列——Task4基于深度学习得文本分类fasttext_第5张图片
fasttext在文本分类的任务上是由于TF-IDF的。
全部代码如图:

import pandas as pd
import fasttext
#from gensim.models import fasttext
from sklearn.metrics import f1_score

# 转换为FastText需要的格式
train_df = pd.read_csv('data/train_set.csv',sep='\t')
train_df['label_ft'] = '__label__' + train_df['label'].astype(str)
print(train_df.head())
train_df[['text','label_ft']].iloc[:-50000].to_csv('train_fasttext.csv', index=None, header=None, sep='\t')
df = pd.read_csv('train_fasttext.csv')
print(df.head())
#import fasttext
model = fasttext.train_supervised('train_fasttext.csv',lr=1.0, wordNgrams=2,
                                 verbose=2, epoch=25, loss='hs')

val_pred = [model.predict(x)[0][0].split('__')[-1] for x in train_df.iloc[-50000:]['text']
            ]
model.save_model('data/fasttext_demo.model')

f1值达到了0.901的效果。

在用fasttext的时候我遇到了一个问题
在这里插入图片描述
百度了好久也没找到答案,其实犯了一个很弱智的错误,是因为我自己建的.py文件命名为了fasttext,与下载的fasttext重名了,当时怎么也 没想到是这么回事,改了以后就可以正常运行了。

你可能感兴趣的:(python,人工智能,机器学习)