fasttext作为NPL领域中机器学习的优秀范例值得研究。
模型架构
我对fasttext模型架构理解与CBOW很像。
在训练时,通过N-gram把词向量喂入模型,输出属于各类的概率,并比对标签修正模型
在预测时,输入的是词序列,输出的是属于各类概率,取最大概率
实际上还是一个单层的神经网络系统,一般来说损失函数用得softmax
但是它快的原因,在于使用了Hierarchical softmax其实就是所谓的霍夫曼树结构:该树每个叶节点都是一个词语,softmax的结果无非就是一个概率,那么我们要找某一个词时,就是计算到该单词的路径中概率积。
详细架构,我在论文精读中有介绍
参数调节
fasttext.supervised 参数如下
input_file 训练文件路径(必须)
output 输出文件路径(必须)
label_prefix 标签前缀 default __label__
lr 学习率 default 0.1
lr_update_rate 学习率更新速率 default 100
dim 词向量维度 default 100
ws 上下文窗口大小 default 5
epoch epochs 数量 default 5
min_count 最低词频 default 5
word_ngrams n-gram 设置 default 1
loss 损失函数 {ns,hs,softmax} default softmax
minn 最小字符长度 default 0
maxn 最大字符长度 default 0
th