FastText文本分类以及生成词向量

  • Post author:
  • Post category:其他









F




a


s


t




t




e


x




t












F

a

s

t

t

e

x

t











F




a


c


e


b


o


o


k












F

a

c

e

b

o

o

k



开源的文本分类工具。最近工作上用到了这个包,感觉又快又好用,在这里简单的做一下记录,这里使用的







P


y


t




h


o


n










P

y

t

h

o

n



的相关接口

1、安装

在linux下安装比较方便,直接使用pip进行安装

pip install fasttext

2、文本分类

对于文本分类只要将数据准备好,就可以了

classifier = fasttext.supervised('data.train.txt', 'model', label_prefix='__label__')

这里需要注意的是,训练的数据文件中类别的前缀默认是”__label__”,如果需要修改的话,可以在上面的参数中进行相关的修改。

训练数据的相关格式

__label__1  姚明 喜欢 打 篮球 

类别和句子之间用







t




a


b










t

a

b



键分开,句子可以是按照词分割开的,也可以是按照字分割开的

产生的模型文件会被保存成







m


o


d




e


l




.


b


i


n










m

o

d

e

l

.

b

i

n



,预测之前需要先加载相关模型

我们可以用于预测文件的准确率和召回率

classifier = fasttext.load_model('model.bin')
result = classifier.test('test.txt')
print 'P@1:', result.precision
print 'R@1:', result.recall

其中text.txt里面每行村放是的测试的句子,具体的格式与训练集合一致

使用模型进行相关的预测

texts = ['example very long text 1', 'example very longtext 2']
labels = classifier.predict(texts)
print labels

# Or with the probability
labels = classifier.predict_proba(texts)
print labels

输出的时候还可以预测的前n个值

labels = classifier.predict(texts, k=3)
print labels

# Or with the probability
labels = classifier.predict_proba(texts, k=3)
print labels

3、生成词向量

生成词向量的时候,我用的是skipgram,这时候数据需要进行处理一下,转换成下面的格式,由于我训练的是基于字的词向量,所以我是按照每个字切分的

姚 明 喜 欢 打 篮 球 __label__1    
model = fasttext.skipgram("cnews.all.train.txt", "model",dim = 50)

这其中还有一些其他的配置参数可以选择,具体的参数可以查看参考文献。

训练完成之后,会产生模型文件bin和词向量文件vec,词向量文件里面第一行是字典的长度和维度,下面是具体的词向量

参考文献

[1] :

https://pypi.org/project/fasttext/



版权声明:本文为supinyu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。