fasttext原理与实战

参考文档:

https://zhuanlan.zhihu.com/p/32965521

 

一、模型框架

fasttext原理与实战_第1张图片

二、核心思想

      将输入文档的词及n-gram的向量叠加平均得到文档向量;然后采用文档向量做softmax的多分类。

1、文档向量化

      类似CBOW

      文档切词得到词汇集合

      词汇向量化

      词汇向量求平均得到文档向量

2、多分类

      分层softmax模型

     文档向量输入多分类器进行分类预测

三、向量化技术—CBOW

参考:https://blog.csdn.net/u010665216/article/details/78724856

1、模型框架

fasttext原理与实战_第2张图片

fasttext原理与实战_第3张图片

x_{i}是onehot后的V维向量,其中V是词汇向量;

隐藏层是N维向量h;

输出层是被onehot编码过的目标词y。

核心点: 通过反向传播求矩阵W_{V*N}W_{N*V}^{'}来拟合目标y_{i}

               X_{ik}*W_{V*N}得到词汇的向量表示;

                 1/c\sum_{i=1}^{C}X_{ik}*W_{V*N}*W_{N*V}^{'} 作为分类器的向量输入。

2、前向传播

 隐藏层h的输出:

 输出层每个节点:

 v_{wj}^{'}是矩阵W^{'}的第j列

u_{j}作为softmax函数的输入,得到y_{j}

3、反向传播

fasttext原理与实战_第4张图片

四、fasttext实战

参考: 

1、数据格式

格式:word1 | tab | word2 | tab | word3 ...| tab | __label__labelid 

例如:

fasttext原理与实战_第5张图片

2、训练代码[JAVA]

pom.xml:
        


    com.github.vinhkhuc
    jfasttext
    0.4




代码:
JFastText jft = new JFastText();
jft.runCmd(new String[]{
    "supervised",
    "-input", sourceDataPath,
    "-output", modelPath
});

sourceDataPath: 训练数据路径

modelPath: 模型存储目录

你可能感兴趣的:(算法)