词向量源码解析:(6.1)fasttext源码解析

fasttext是word2vec的作者mikolov参与的制作的一个工具包,可以用来训练词向量和进行文本分类。目前已经引起了广泛的关注。这个工具包在github上面的地址是 https://github.com/facebookresearch/fastText 这个项目是C++写的,和之前的项目相比这个项目更加专业,涉及的内容也比之前的项目多很多。所以我们对fasttext的连载也会比较多。

fasttext工具包可以用来生成词向量,也可以用来得到文本向量,进行文本分类。fasttext在生成词向量的时候用到了subword信息,也就是连续的字符信息。fasttext在生成文本向量的时候用到了ngram的信息。其实fasttext模型的原理和word2vec差不多。在word2vec中是通过单词预测单词。比如CBOW是上下文单词的词向量的平均去预测中心词。在fasttext训练词向量的过程中是用连续字符的向量的平均得到单词向量,后面都和word2vec一样。在fasttext训练文本向量进行分类的过程是用这个文档所有单词的词向量的平均预测标签。如果了解word2vec的代码,看懂fasttext代码也不是那么困难。首先我们还是看一下fasttext的目录。所有的C++代码都在src中。然后就是一些linux脚本文件

词向量源码解析:(6.1)fasttext源码解析_第1张图片

我们进入src目录看看有哪些C++文件。从上往下看,args是专门存储超参的类。dictionary是词典类,构建存储词典,支持把单词转成id。fasttext是训练测试等的核心文件,会调用model进行词向量文本向量的训练。main是主函数负责接受超参转成args类,根据不同目的调用不同的方法。剩下的matrix,vector等文件都是辅助fasttext,model以及dictionary词典的。

词向量源码解析:(6.1)fasttext源码解析_第2张图片

由于这个工具包内容比较多,所以我会先从面向任务的角度去介绍fasttext怎么得到文本向量进行分类以及得到词向量。然后我们再一个一个文件去解析。

你可能感兴趣的:(词向量)