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/