文本处理知识点总结

  1. 将word映射到一个新的空间中,并以多维的连续实数空间向量进行表示,叫做word representation,或者word embeding.

  2. n-gram: n-gram是一种统计语言模型。根据前n-1个item预测第n个item,这些item可以是音素(语言识别应用),字符(输入法应用),词(分词应用)或碱基对。一般可以从大规模文本或者语料库中生成n-gram模型。

    • 给定一串字母,如for ex_,希望预测下一个可能的字母是什么?
    • 假设T是由词序列A1,A2,....An组成,则p(T)=p(A1,A2,...,An)=p(A1)p(A2|A1)p(A3|A1,A2)...p(An|A1,A2,...,A(n-1))
    • 其实就是马尔科夫假设:一个item出现的概率只与前m个item有关
  3. 词袋:Bag of Words,假设对于一个文本,将其仅仅看作是一个词集合,而忽略其词序和语法。

    • 在实际应用中,将这组词变成一串数字(索引的集合)

    • John likes to watch movies. Mary like too. --->[1,2,1,1,1,0,0,0,1,1]

      John also like to watch football games. --->[1,1,1,1,0,1,1,1,0,0]

      其中,第i个元素表示字典中第i个单词在句子中出现的次数。

      上述构成了字典:{'John':1,'like':2,'to':3,...,'too':10}

  4. Word2Vec

    • 分为两种语言模型:CBOW和Skip-gram

    • CBOW根据上下文的词语预测当前词语出现概率的模型。

      • 最大化对数似然函数$L=\sum _{w\in c}logP(w|context(w))$

      • 输入层是上下文的词向量(词向量是CBOW的参数,其实际上是CBOW的副产物)

      • 投影层是简单的向量加法

      • 输出层是输出最可能的w。由于词料库中词汇量是固定的|c|个,可以将其看作是多分类问题。最后一层是Hierarchical softmax: $$ p(w|context(w))=\prod{j=2}^{l^w}p(dj^w|xw,\theta{j-1}^w) $$

      从根节点到叶节点经过了$l^{w}-1$个节点,编码从下标2开始(根节点无编码),对应的参数向量下标从1开始。

    • skip-gram 已知当前词语,预测上下文

      • 与CBOW不同之处在于:

      • 输入层不再是多个词向量,而是一个词向量

      • 投影层实际什么都没干,直接将输入层的词向量传递给输出层

      • 模型: $$ p(context(w)|w)= \prod_{w \in context(w)}p(u|w) $$

      • 这是一个词袋模型,所以每个u都是无序,相互独立的

  5. doc2vec:

    与word2vec唯一不同之处在于,串联起word vector在上下文中预测下一个单词。

    上下文是固定长度且在段落中sliding window中采样,段落向量在一段中共享在同一段中产生的所有窗口,但是不同段间不共享。