【学习笔记】自然语言处理实践(新闻文本分类)- 基于深度学习的文本分类FastText

Datawhale零基础入门NLP赛事-Task4

本笔记是参加Datawhale零基础入门NLP赛事的学习笔记。

文本表示方法

One-hot
Bag of Words
N-gram
TF-IDF
问题:转换得到的向量维度很高,需要较长的训练实践;没有考虑单词与单词之间的关系,只是进行了统计。

FastText

FastText是facebook开源的一款集word2vec、文本分类等一体的机器学习训练工具。

  1. 字符级别的n-gram
    fastText使用了字符级别的n-grams来表示一个单词。对于单词“apple”,假设n的取值为3,则它的trigram有:
    “<ap”, “app”, “ppl”, “ple”, “le>”
    其中,<表示前缀,>表示后缀。于是,我们可以用这些trigram来表示“apple”这个单词,进一步,我们可以用这5个trigram的向量叠加来表示“apple”的词向量。
    好处:1. 对于低频词生成的词向量效果会更好。因为它们的n-gram可以和其它词共享;2. 对于训练词库之外的单词,仍然可以构建它们的词向量。我们可以叠加它们的字符级n-gram向量。

  2. 分层Softmax
    标准的Softmax回归中,要计算y=j时的Softmax概率:,我们需要对所有的K个概率做归一化,这在|y|很大时非常耗时。分层Softmax的基本思想是使用树的层级结构替代扁平化的标准Softmax,使得在计算时,只需计算一条路径上的所有节点的概率值,无需在意其它的节点。

  3. 模型架构
    【学习笔记】自然语言处理实践(新闻文本分类)- 基于深度学习的文本分类FastText

  4. 基于FastText的文本分类
    fastText的核心思想就是:将整篇文档的词及n-gram向量叠加平均得到文档向量,然后使用文档向量做softmax多分类。
    fastText在输入时,将单词的字符级别的n-gram向量作为额外的特征;在输出时,fastText采用了分层Softmax,大大降低了模型训练时间。
    【学习笔记】自然语言处理实践(新闻文本分类)- 基于深度学习的文本分类FastText