文章目录
一、fasttext的模型结构是什么
fastText模型架构和word2vec的CBOW模型架构非常相似。
此架构图没有展示词向量的训练过程。可以看到,和CBOW一样,fastText模型也只有三层:输入层、隐含层、输出层(Hierarchical Softmax),输入都是多个经向量表示的单词,输出都是一个特定的target,隐含层都是对多个词向量的叠加平均。不同的是,CBOW的输入是目标单词的上下文,fastText的输入是多个单词及其n-gram特征,这些特征用来表示单个文档;CBOW的输入单词被onehot编码过,fastText的输入特征是被embedding过;CBOW的输出是目标词汇,fastText的输出是文档对应的类标。
值得注意的是,fastText在输入时,将单词的字符级别的n-gram向量作为额外的特征;在输出时,fastText采用了分层Softmax,大大降低了模型训练时间。
二、基于bert的分类为啥比fasttext模型效果好
fasttext工具包中内含的fasttext模型具有十分简单的网络结构。使用fasttext模型训练词向量时使用层次softmax结构, 来提升超多类别下的模型性能。由于fasttext模型过于简单无法捕捉词序特征, 因此会进行n-gram特征提取以弥补模型缺陷提升精度。所以fasttext的缺点就是:1. 模型结构简单,所以目前来说,不是最优的模型;2. 因为使用词袋思想,所以语义信息获取有限。
大部分词向量方法对每个词分配一个独立的词向量,而没有共享参数。特别的是,这些方法忽略了词之间的内在联系,词之间的内在联系对于形态学丰富的语言更加重要。
fastText的架构非常简单,有三层:输入层、隐含层、输出层(Hierarchical Softmax)
输入层:是对文档embedding之后的向量,包含有N-garm特征
隐藏层:是对输入数据的求和平均
输出层:是文档对应标签
如下图所示:
上述Fasttext存在的问题:
使用的是词袋模型,没有词序信息。(使用n-gram特征。)
当类别非常多的时候,最后的softmax 速度依旧非常慢。(类似于word2vec,使用层次softmax)
三、文本表示有哪些方法
基于one-hot、tf-idf(term frequency–inverse document frequency)TF-IDF原理及使用、textrank等的bag-of-words基于TextRank算法的文本摘要;
主题模型:LSA(latent semantic analysis)(SVD)、pLSA、LSA,pLSA原理及其代码实现 LDA一文详解LDA主题模型;
基于词向量的固定表征:word2vec、fastText、glove
基于词向量的动态表征:elmo、GPT、bert
四、fasttext相比word2vec好在哪
word2vec把语料库中的每个单词当成原子的,它会为每个单词生成一个向量。这忽略了单词内部的形态特征,比如:“apple” 和“apples”,“达观数据”和“达观”,这两个例子中,两个单词都有较多公共字符,即它们的内部形态类似,但是在传统的word2vec中,这种单词内部形态信息因为它们被转换成不同的id丢失了。
为了克服这个问题,fastText使用了字符级别的n-grams来表示一个单词。对于单词“apple”,假设n的取值为3,则它的trigram有
“<ap”, “app”, “ppl”, “ple”, “le>”
其中,<表示前缀,>表示后缀。于是,我们可以用这些trigram来表示“apple”这个单词,进一步,我们可以用这5个trigram的向量叠加来表示“apple”的词向量。这带来两点好处:
- 对于低频词生成的词向量效果会更好。因为它们的n-gram可以和其它词共享。
- 对于训练词库之外的单词,仍然可以构建它们的词向量。我们可以叠加它们的字符级n-gram向量。
五、fastText为什么效果比较好
使用词embedding而非词本身作为特征,这是fastText效果好的一个原因;
另一个原因就是字符级n-gram特征的引入对分类效果会有一些提升 。
六、怎样才算是一个好的Embedding
ELMo的作者认为一个好的embedding需要满足两个条件:
(1)能够捕捉到语法和语义信息
(2)能够区分一词多义的情况
七、fastText相比深度学习的分类方法,有什么优势
FastText是一个快速文本分类算法,与基于神经网络的分类算法相比有两大优点:
- FastText在保持高精度的情况下加快了训练速度和测试速度
- FastText不需要预训练好的词向量,FastText会自己训练词向量
- FastText两个重要的优化:Hierarchical Softmax、N-gram
FastText模型架构和 word2vec 中的 CBOW 很相似, 不同之处是FastText预测标签而CBOW预测的是中间词,即模型架构类似但是模型的任务不同。
八、参考文献
- https://zhuanlan.zhihu.com/p/67099007
- https://zhuanlan.zhihu.com/p/356703993