Word2Vec

Word2Vec

Word2Vec:word embeding的一种,使用层次化softmax、负采样 训练词向量

Hierarchical Softmax

层次Softmax

word2vec_hierarchical_softmax

  • 对所有词向量求和取平均作为输入层到隐层的映射 (特指CBOW模型)

  • 使用霍夫曼树代替从隐藏层到输出softmax层的映射

思想

  • softmax需要对$m$个类别求出softmax概率,参数多、计算复杂

  • 考虑将$m$个类别划分为多个二分类sigmoid,即

    • 将总类别划分为两组
    • 依次判断数据点属于哪组
    • 直至数据点所属组仅包含一个类别
  • 则多个sigmoid划分构成一棵二叉树,树叶子节点即为$m$ 类别

    • 二叉树结构可以由多种,最优二叉树应该使得对整个 数据集而言,sigmoid判断次数最少
    • 即应该使用按照数据点频数构建的霍夫曼树
    • 霍夫曼树

模型

  • 输入$x^T$所属类别霍夫曼编码为$d={d_1,\cdots,d_M}$, 则应最大化如下似然函数

    • $w_j, b_j$:节点$j$对应sigmoid参数
    • $P(d_i)$:以sigmoid激活值作为正例概率 (也可以其作为负例概率,但似然函数需更改)
  • 则对数似然函数为

梯度计算

  • 则参数$w_{j_M}$梯度如下

  • 词向量$x$梯度如下

CBOW流程

  • 特征词周围上下文词均使用梯度更新,更新输入
  • 基于预料训练样本建立霍夫曼树
  • 随机初始化模型参数$w$、词向量$w$
  • 对训练集中每个样本 $(context(x), x)$($2C$个上下文)如下 计算,直至收敛

    • 置:$e=0, xw=\frac 1 {2C} \sum{c=1}^{2C} x_c$

    • 对$x$的霍夫曼编码 $d={d_1, \cdots, d_M}$ 中 $d_i$ 计算

    • 更新 $2C$ 上下文词对应词向量

Skip-Gram流程

  • 考虑上下文是相互的,则 $P(x{context}|x)$ 最大化时,$P(x|x{context})$ 也最大
  • 为在迭代窗口(样本)内更新仅可能多词向量,应该最大化 $P(x|x_{context})$,使用梯度更新上下文 $2C$ 个词向量,更新输出(条件概率中更新条件)
  • 基于预料训练样本建立霍夫曼树
  • 随机初始化模型参数 $w$、词向量 $w$
  • 对训练集中每个样本 $(x, context(x))$、每个样本中上下文词向量 $x_c$($2C$ 个上下文),训练直至收敛

    • 置:$e=0$

    • 对 $x$ 的霍夫曼编码 $d={d_1, \cdots, d_M}$ 中 $d_i$ 计算

    • 更新 $2C$ 上下文词对应词向量

Negtive Sampling

负采样

思想

  • 通过负采样得到$neg$个负例
  • 对正例、负采样负例建立二元逻辑回归

模型、梯度

  • 对类别为$j$正例、负采样负例应有如下似然函数、对数似然 函数

    • $y_i$:样本点标签,$y_0$为正例、其余负例
  • 同普通LR二分类,得到参数、词向量梯度

负采样方法

  • 每个词对应采样概率为词频取$3/4$次幂后加权

CBOW流程

  • 随机初始化所有模型参数、词向量
  • 对每个训练样本$(context(x_0), x_0)$负采样$neg$个中心词 $x_i$,考虑$x_0$为类别$j$
  • 在以上训练集$context(x0), x_0, x_1, \cdots, x{neg}$中 训练直至收敛

    • 置:$e=0, xw=\frac 1 {2C} \sum{c=1}^{2C} x_c$

    • 对样本$x0, x_1, \cdots, x{neg}$,计算

    • 更新$2C$上下文词对应词向量

Skip-gram中心词

  • 类似Hierarchical Softmax思想,更新输出$2C$个词向量
  • 随机初始化所有模型参数、词向量
  • 对每个训练样本$(context(x_0), x_0)$负采样$neg$个中心词 $x_i$,考虑$x_0$为类别$j$
  • 以上训练集$context(x0), x_0, x_1, \cdots, x{neg}$中, 对每个上下文词向量$x_c$如下训练直至收敛

    • 置:$e=0$

    • 更新$2C$上下文词对应词向量

文本预处理

文本预处理

  • 去除噪声文档、文档中垃圾数据
  • 停用词去除
  • 词根还原(英文)
  • 分词(中文)
  • 词性标注
  • 短语识别
  • 词频统计

汉语分词

分词:添加合适的显性词语边界标志,使所形成的词串反映句子本意

  • 分词是正确处理中文信息的基础

    • 文本基于单字
    • 书面表达方式以汉字作为最小单位
    • 词之间没有显性界限标志
  • 用单个汉字作特征,不考虑词语含义,直接利用汉字在文本中 出现的统计特性对文本进行划分

    • 直观明了
    • 操作简单
    • 对西语文本划分非常容易(使用空格划分)
  • 使用词作为特征

    • 词是中文语义的最小信息单位,可以更好的反映句子中信息
    • 分析难度更高,中文文本中词之间没有分隔标记,正确分词 是关键

分词方法

  • 基于词典

    • FMM:正向最大匹配分词
    • BMM:逆向最大匹配分词
    • BM法:双向扫描法
    • 逐词遍历
  • 基于统计模型

    • N-最短路径
    • HMM
    • N元语法
    • 由字构词的汉语分词方法

分词难点

歧义切分

  • 分词规范

    • 分词单位
      • 二字、三字以及结合紧密、使用稳定的
      • 四字成语
      • 四字词或结合紧密、使用稳定的四字词组
    • 五字、五字以上谚语、格言等,分开后如不违背原有组合 意义,应切分
  • 歧义切分

    • 交集型切分歧义
    • 组合型切分歧义

未登录词识别

  • 词表词:记录在词表中的词
  • 未登录词:词表中没有的词、或已有训练语料中未曾出现词 (此时也称为out of vocabulary
  • 真实文本切分中,未登录词总数大约9成是专有名词,其余为 新词

  • 未登录词对分词精度影响是歧义词的10倍

  • 命名实体识别:实体名词、专业名词

    • 界定规则不存在太大分歧、构成形式有一定规律
    • 在文本中只占8.7%,引起分词错误率59.2%

词性标注

词性标注:在给定句子中判定每个词的语法范畴,确定词性并加以 标注的过程

  • POS作为特征可以更好的识别词语之间关系

    • 词性标注计数为phrase chunking词组组块的界定、 entities and relationship实体与关系的识别打下良好 基础,有利于深入探索文本语义信息

    • 词组的形式提高了特征向量的语义含量,使得向量更稀疏

  • 难点

    • 汉语缺乏词形态变化
    • 常用词兼类现象严重:占11%
    • 研究者主观原因:不同语料库有不同规定、划分方法
  • part of speechPOS,词性

Forward Maximum Matching Method

FMM:正向最大匹配分词

  • 步骤

    • 记词典中最长此表包含汉字数量为M
    • 从材料中选取前$m = M$个汉字去作为匹配字段,查找分词 词典
      • 若存在匹配词,则将其切分出
      • 否则$m = m - 1$,重复
    • 重复直至材料分词完毕
  • 特点

    • 对交叉歧义、组合歧义没有解决办法
    • 错误切分率为$\frac 1 {169}$

Backward Maximum Matching Method

BMM:逆向最大匹配分词

  • 步骤:类似FMM,仅从材料/句子末尾开始处理

  • 特点

    • 错误切分率$\frac 1 {245}$,较FMM更有效

Bi-direction Matching Method

BM法:双向扫描法

  • 步骤:比较FMM、BMM法切分结果,决定正确切分

  • 特点

    • 可以识别分词中交叉语义

N-最短路径

  • 思想

    • 考虑待切分字串$S=c_1 c_2 \cdots c_n$,其中$c_i$为 单个字、$n$为串长

    • 建立节点数为$n+1$的切分有向无环图,各节点编号为 $V_0, V_1, \cdots, V_n$

      • 相邻节点间存在边
      • 若$w=ci c{i+1} \cdots cj$是一个词,则节点 $v{i-1}, v_j$直接存在边
      • 所有边距离均为1
    • 求有图无环图中最短路径

特点

  • 算法时间复杂度为$O(nNK)$

    • $n$:字串长度
    • $N$:最短路径数目
    • $k$:某个字作为词末端字的平均次数

改进—考虑噪声

基于统计信息的粗分模型

  • 考虑词串$W$经过信道传输,由于噪声干扰丢失词界切分标志, 到输出端为字串$C$

  • N-最短路径词语粗分模型可以改进为:求N个候选切分$W$,使得 概率$P(W|C)$为前N个最大值

    • $P(C)$:字串概率,常数
    • $P(C|W)$:仅有
  • 采用一元统计模型,设$W=w_1w_2\cdots W_m$是字串 $S=c_1c_2\cdots c_n$的切分结果,则其切分概率为

    • $P(w_i)$:词$w_i$出现概率,在大规模预料训练的基础上 通过极大似然方法得到
  • 则$-lnP(w_i)$可看作是词$w_i$在切分有向无环图中对应距离, 改进N-最短路径方法

由字构词

假设、背景

  • 思想:将分词过程看作字分类问题,认为每个字在构造特定词语 时,占据确定的位置
  • 中文词一般不超过4个字,字位数量很小
    • 首部B
    • 词中M
    • 词尾E
    • 单独成词S
  • 部分汉字按一定方式分布,有规律
  • 利用相对固定的字推断相对不定的字的位置问题
  • 虽然无法将所有词列入词典,但字基本稳定

步骤

  • 对所有字根据预定义的特征进行词位特征学习,获得概率 模型
  • 在带待分字串上根据字与字之间的结合紧密程度得到词位的分类 结果
  • 根据词位定义直接获得最终分词结果

Productivity

能产度:词$c_i$在词位$t_j$的能产度定义为

  • $T = {B, B_2, B_3, M, E, S}$
  • 主词位:给定字在其上能产度高于0.5的词位

    |标记|B|B2|B3|M|E|S|总字量| |——-|——-|——-|——-|——-|——-|——-|——-| |字量|1634|156|27|33|1438|632|3920| |百分比|31.74|3.03|0.52|0.64|27.94|12.28|76.16|

    • MSRA2005语料库中有主词位的字量分布
  • 自由字:没有主词位的字

    • 自由字是基于词位分类的分词操作得以有效进行的的基础 之一
  • 字:不仅限于汉字,包括标点、外文字母、注音符号、数字等 任何可能文字符号

优势

  • 能平衡词表词、未登录词
  • 简化分词系统设计
    • 无需强调词表词信息
    • 无需设置特定未登录词识别模块

分词评价指标

  • 正确率
  • 召回率
  • F-测度值

Vector Space Model

向量空间模型:自然语言处理常用模型

  • document:文档,句子、段落、整篇文章
  • term/feature:词根、词、短语、其他
  • weight:项的权重,每个特征项在文档中重要程度

相似度比较

  • 内积

  • Cosine相似度

权重

  • 布尔权重:$bw_{t,d} = {0, 1}$
  • TF:绝对词频,$TF{t,d} = \frac {n{t,d}} {n_d}$
  • IDF:倒排文档频度,$IDF_{t,d} = log \frac M {m_t}$
  • TF-IDF:$TF-IDF{t,d} = TF{t,d} * IDF_{t,d}$
  • TF-IWF:$TFIWF{t,d}= TF{t,d} log \frac {\sum{t=1}^T \sum{d=1}^N n{t,d}} {\sum{t=1} n{t,d}}$
  • $t_{t,d}$:文档$d$中出现特征$t$的次数
  • $t_d$:文档$d$中出现总词数
  • $m_t$:训练集中出现特征$t$文档数
  • $M$:训练集中文档总数
  • $K$:特征总数量

特征加权

  • 特征加权主要包括三个部分(层次)

    • 局部加权:使用词语在文档中的统计量
    • 全局加权:词语在整个数据集中的统计量
    • 标准化
  • 一般化特征加权表达式

    • $L_d(w)$:词$w$在文档$d$中的局部权重
    • $G(w)$:词$w$在文档集合中的全局权重
    • $N_d$:文档d的标准化因子

Document Frequency

DF:文档频率,文本数据中包含某词条的文档数目

  • 通过文档频率进行特征选择:按文档频率大小对词条进行排序

    • 将DF小于某阈值的词删除

      • 稀有词项全局影响力不大
      • 文档若有稀有词向,通常也会有常见词项
      • 和通常信息获取观念抵触:稀有更有代表性
    • 将DF大于某阈值的词删除

      • 太频繁词词项没有区分度
  • 容易实现、可扩展性好

其他指标

  • 信息增益/互信息

  • 卡方统计量

Latent Semantic Analysis

LSA:潜在语义分析

  • 文本分析中常用的降维技术

    • 特征重构方法
    • 很好解决了同义词、一词多义等现象给文本分析造成的困难
  • 理论依据、假设

    • 认为有潜在语义结构隐含在文档中词语的上下文使用模式中
    • 而文档词频共现矩阵在一定程度可以反映词和不同主题之间 关系
  • 以文档词频矩阵为基础进行分析

    • 得到向量空间模型中文档、词的高维表示
    • 并通过投影形成文档、词在潜在语义空间中的相对稠密的 低维表示,缩小问题规模
    • 通过这种低维表示解释出“文档-语义-词语”之间的联系
  • 数学描述

    • LSA将每个文本视为以词语/特征为维度的空间的点,包含 语义的文本出现在空间中分布服从某种语义结构
    • LSA将每个词视为以文档为维度的空间中点
    • 文档由词语构成,词语需要放在文档中理解,体现词语和 文档之间的双重概率关系

应用SVD分解

  • 词频共现矩阵$X=(x_{d,t})$:文档、词语的共现频率矩阵

    • 其中每行代表文档向量
    • 每列代表词语向量
    • 元素$x_{d,t}$表示文档$d$中词$t$出现的频率
  • 对词频共现矩阵$X$进行SVD分解得到$X=U \Sigma V^T$

  • 仅保留$\Sigma$中满足阈值要求的较大的前$r$特征值, 其余置为0,得到 $\tilde X = \tilde U \tilde \Sigma \tilde V^T$,达到信息 过滤、去除噪声的目的

    • $A = \tilde X$:矩阵特征分解后的文档词频矩阵近似
    • $T = \tilde U$:文档和潜在语义的关系矩阵近似
    • $S = \tilde V$:词语和潜在语义的关系矩阵近似
    • $D = \tilde \Sigma$:各潜在语义的重要程度

说明

  • 从数据压缩角度:近似矩阵是秩为$K$的前提下,矩阵$X$的最小 二乘意义下最佳近似

  • r值过大会增加运算量,一般选择K使得贡献率满足

    • $\theta$:阈值
    • $K$:原始词频共现矩阵秩
  • LSA缺点

    • SVD的向量元素有正、有负,性质难以解释
    • SVD的实际意义不够明确,难以控制词义据类的效果
    • 涉及高维矩阵运算

相似关系计算

  • 潜在语义空间中存在:词-词、文本-文本、词-文本3种关系, 可以通过近似矩阵$T, S, D$计算

  • 比较词汇两两相似度:“正向乘法”

  • 比较文本两两相似度:“逆向乘法”

  • 词汇、文本两两相似度:就是原始矩阵$X$的近似矩阵本身$A$

NLP 总述

文本挖掘

  • 文本处理:将非结构化数据转换为结构化数据

  • 预测建模

    • 文本分类:根据观察到的对象特征值预测其他特征值
  • 描述建模

    • 文本聚类:对数据对象进行概括,以看到数据对象的最重要 特征
      • 适应范围非常广
    • 聚类分析
  • 基于相似度方法

    • 需要用户显式指定相似度函数
    • 聚类算法根据相似度的计算结果将相似文本分在同一个组
    • 每个文本只能属于一个组,因此也成为“硬聚类”
  • 基于模型的方法

    • 文本有多个标签,也成为“软聚类”

话题检测

找出文档中的K个话题,计算每个文档对话题的覆盖率

话题表示方法

基于单个词

基于词分布

问题描述
  • 输入
    • N个文档构成的文本集C
    • 话题个数K
    • 词典V
  • 输出
    • K个话题的分布 $(\theta_1, \theta2, \cdots, \theta_K)$
    • N个文档在K个话题上的概率分布 $(\pi_1, \pi_2, \cdots, \pi_N)$

语言模型

词向量:将向量表示词

  • 1-of-N representation/one hot representation:one-hot 表示词

    word_vector

    • 词向量维度为整个词汇表大小
    • 简单、效率不高
  • distributed representation:embedding思想,通过训练, 将词映射到较短词向量中

    word_vector

    • 词向量维度自定义
    • 容易分析词之间关系

Continuous Bag-of-Words

CBOW:输入特征词上下文相关词对应词向量,输出特征词的词向量

  • CBOW使用词袋模型
    • 特征词上下文相关从平等,不考虑和关注的词之间的距离

Skip-Gram

Skip-Gram:输入特征词词向量,输出softmax概率靠前的词向量

神经网络词向量

神经网络词向量:使用神经网络训练词向量

  • 一般包括三层:输入层、隐层、输出softmax层

  • 从隐藏层到输出softmax层计算量很大

    • 需要计算所有词的softmax概率,再去找概率最大值