fasttext Git:https://github.com/facebookresearch/fastText
fasttext官网:https://fasttext.cc/
2016年facebook开源的一款高效词表示和文本分类工具。
原理
推荐源码安装,获取最新代码https://github.com/facebookresearch/fastText/releases/tag/v0.2.0
wget https://github.com/facebookresearch/fastText/archive/v0.2.0.zip
unzip v0.2.0.zip
cd fastText-0.2.0
make
git clone https://github.com/facebookresearch/fastText.git
cd fastText
pip install . # 或者python setup.py install
查看是否安装成功
import fastText
./fasttext skipgram -input data.txt -output model
./fasttext print-word-vectors model.bin < queries.txt
./fasttext supervised -input train.txt -output model
./fasttext test model.bin test.txt 1
./fasttext predict model.bin test.txt k
./fasttext predict-prob model.bin test.txt k
./fasttext print-sentence-vectors model.bin < text.txt
用更小的空间创建.ftz文件
./fasttext quantize -output model
其他命令也可运行在该模式,例如test
./fasttext test model.ftz test.txt
参考官网:https://fasttext.cc/docs/en/supervised-tutorial.html
获取数据,解压,查看数据格式
>> wget https://dl.fbaipublicfiles.com/fasttext/data/cooking.stackexchange.tar.gz && tar xvzf cooking.stackexchange.tar.gz
>> head cooking.stackexchange.txt
一行一条,类标使用__label__打头,看到,一条文本可以有多个类标;英文内容不需要分词,中文需要分词预处理后用空格分隔。
分开训练集和测试集
>> wc cooking.stackexchange.txt
15404 169582 1401900 cooking.stackexchange.txt
>> head -n 12404 cooking.stackexchange.txt > cooking.train
>> tail -n 3000 cooking.stackexchange.txt > cooking.valid
./fasttext supervised -input cooking.train -output model_cooking
直接测试训练好的模型
./fasttext predict model_cooking.bin -
输入句子,直接出结果
有些不准,在验证集上运行
P@1 表示top1精确率,R@1表示top1召回率。运行top5的测试结果:
输出top5预测结果:
./fasttext predict model_cooking.bin - 5
1. 数据预处理
2. 增加迭代次数[5 - 50]
./fasttext supervised -input cooking.train -output model_cooking -epoch 25
3. 增加学习率[0.1 - 1.0]
./fasttext supervised -input cooking.train -output model_cooking -lr 1.0
./fasttext supervised -input cooking.train -output model_cooking -lr 1.0 -epoch 25
4. 调整n-grams [1 - 5]
./fasttext supervised -input cooking.train -output model_cooking -lr 1.0 -epoch 25 -wordNgrams 2
更多请查看https://fasttext.cc/docs/en/supervised-tutorial.html