一.算法简述
FastText是一个快速文本分类算法,在使用标准多核CPU的情况下,在10分钟内可以对超过10亿个单词进行训练,并且在不到一分钟的时间内对312K类中的50万个句子进行分类。 与基于神经网络的文本分类算法相比它主要由两个优点首先FastText在保持高精度的同时极大地加快了训练速度和测试速度。再有就是不需要使用预先训练好的词向量,因为FastText会自己训练词向量 。
二.原理
fastText 方法包含三部分:模型架构、层次 Softmax 和 N-gram 特征。
fastText 模型输入一个词的序列(一段文本或者一句话),输出这个词序列属于不同类别的概率。
序列中的词和词组组成特征向量,特征向量通过线性变换映射到中间层,中间层再映射到标签。
fastText 在预测标签时使用了非线性激活函数,但在中间层不使用非线性激活函数。
fastText 模型架构和 Word2Vec 中的 CBOW 模型很类似。不同之处在于,fastText 预测标签,而 CBOW 模型预测中间词。
三.代码
1.1对文本进行分词处理(用的THUCNews公开数据集)
import fastText.FastText as ft
import jieba
import os
basedir = "THUCNews/" #文件地址,需跟据文件夹位置进行更改,后面直接合成文件地址
dir_list = ['affairs','constellation','economic','edu','ent',
'social', 'fashion','game','home','house','lottery','science','sports','stock']
ftrain = open("news_fasttext_train.txt","w")
ftest = open("news_fasttext_test.txt",