索引

术语表与公式速查

忘了某个词是什么意思,或不确定该用哪个公式,可以先在这里查一查。每项都有说明,也有链接带你回到详细讲解。

这里把公式的用途和符号放在一起。想先找一个词的含义,可以直接跳到术语解释;需要完整推导时,点击公式标题回到对应笔记。

公式怎么用

每一项都是“知道前面这些词后,下一个词出现的概率”。把它们连乘,就得到整串词一起出现的概率。

\[ P(w_1 \ldots w_n) = \prod_{k=1}^{n} P(w_k \mid w_1 \ldots w_{k-1}) \]

右边只保留最近 k 个词作为条件。这里 k 数的是前面的词数,所以 n-gram 模型对应 k=n−1。

\[ P(w_i \mid w_1 \ldots w_{i-1}) \approx P(w_i \mid w_{i-k} \ldots w_{i-1}) \]

分子是这对词一起出现的次数,分母是前一个词作为上下文出现的次数。分母要大于零,前后也要使用一致的计数方式。

\[ P(w_i \mid w_{i-1}) = \frac{c(w_{i-1} w_i)}{c(w_{i-1})} \]

W 是测试序列,N 是参与预测的文本单元数。中间一项用了二元模型的假设;最后一项用自然对数和指数计算。比较分数时,测试数据和分词等条件要一致。

\[ \mathrm{PP}(W) = P(w_1 \ldots w_N)^{-1/N} = \sqrt[N]{\prod_{i=1}^{N} \frac{1}{P(w_i \mid w_{i-1})}} = \exp\Big(-\tfrac{1}{N}\sum_i \log P(w_i \mid w_{i-1})\Big) \]

r 表示词频排名,s 控制频率下降的速度。这解释了为什么文本再多,也会有很多罕见词。

\[ \text{freq}(r) \propto r^{-s} \]

每个候选词的计数都加 k。词表有 V 个候选,因此总次数也要增加 kV。k=1 时,就是加一平滑。

\[ P_{\text{Add-1}}(w_i \mid w_{i-1}) = \frac{c(w_{i-1}w_i) + 1}{c(w_{i-1}) + V} \qquad P_{\text{Add-}k}(w_i \mid w_{i-1}) = \frac{c(w_{i-1}w_i) + k}{c(w_{i-1}) + kV} \]

用平滑后的概率乘上原来的上下文次数,就能得到一个便于比较的“调整后计数”,看出平滑对原统计结果影响有多大。

\[ c^*(w_{i-1}w_i) = \frac{[c(w_{i-1}w_i)+1]\, c(w_{i-1})}{c(w_{i-1}) + V} \]

三个权重分别控制一元、二元和三元模型的影响。权重都要非负,并且加起来等于 1;具体数值用留出数据选择。

\[ \hat P(w_n \mid w_{n-2}w_{n-1}) = \lambda_1 P(w_n) + \lambda_2 P(w_n \mid w_{n-1}) + \lambda_3 P(w_n \mid w_{n-2}w_{n-1}), \quad \textstyle\sum_i \lambda_i = 1 \]

先把特征加权相加,再加上偏置,得到一个分数。Sigmoid 将它转成 0 到 1 之间的概率,另一类拿到剩下的概率。

\[ \sigma(z) = \frac{1}{1+e^{-z}}, \qquad P(y=1 \mid x) = \sigma(w \cdot x + b), \qquad P(y=0 \mid x) = \sigma(-(w \cdot x + b)) \]

正确标签 y 只能是 0 或 1,代入后只剩正确类别对应的那一项。模型给正确答案的概率越低,损失就越大。

\[ L_{CE}(\hat y, y) = -\big[ y \log \hat y + (1-y) \log (1-\hat y) \big] \]

一个样本中,权重的梯度等于“预测概率减去正确标签”,再乘上对应特征;偏置的梯度则不需要乘特征。

\[ \frac{\partial L_{CE}}{\partial w_j} = \big[\sigma(w \cdot x + b) - y\big]\, x_j, \qquad \frac{\partial L_{CE}}{\partial b} = \sigma(w \cdot x + b) - y \]

从当前参数 θ 中减去梯度乘以学习率 η,就是一次更新。步长需要选得合适,并不是越大越好。

\[ \theta \leftarrow \theta - \eta \nabla_\theta L \]

λ 控制约束强度。L2 的额外更新与权重大小成正比;L1 在非零点使用符号函数,在零点则用次梯度。这组写法没有对偏置加惩罚。

\[ L + \lambda \|w\|_2^2 \ \Rightarrow\ w \leftarrow w - \eta \nabla L - 2\eta\lambda w \qquad\qquad L + \lambda \|w\|_1 \ \Rightarrow\ w_j \leftarrow w_j - \eta \tfrac{\partial L}{\partial w_j} - \eta\lambda\,\mathrm{sign}(w_j) \]

每个类别 c 都有自己的权重和偏置。分数取指数后,再除以 K 个类别的指数总和,得到的概率就会加起来等于 1。

\[ \hat y_c = \frac{\exp(w_c^\top x+b_c)}{\sum_{j=1}^K \exp(w_j^\top x+b_j)} \]

标签采用独热表示,只有正确类别 c* 的位置为 1。因此求和后,只剩正确类别概率的负对数。

\[ L = -\sum_{c=1}^K y_c\log\hat y_c = -\log\hat y_{c^*} \quad (y_{c^*}=1) \]

用两个向量的点积,除以它们各自长度的乘积,就能消除整体长度的影响,比较方向。两个向量都不能为零。

\[ \cos(u,v) = \frac{u^\top v}{\|u\|_2\|v\|_2}, \qquad u\ne 0,\ v\ne 0 \]

先计算从 a 到 b 的变化,再把这个变化加到 c 上,看看结果附近有哪些词。这是一种近似规律,并不适用于所有词语关系。

\[ v_d \approx v_b-v_a+v_c \]

出现过的词先对次数取以 10 为底的对数,再加 1;没出现过的词取零。这里采用第 6 讲 PDF 第 54 页给出的词频写法。

\[ \mathrm{tf}_{t,d}=\begin{cases}1+\log_{10} c(t,d)&c(t,d)>0\\0&c(t,d)=0\end{cases} \]

N 是文档总数,df 是包含这个词的文档数。如果每篇文档都有这个词,它的 IDF 就是零。再把 IDF 与词频权重相乘,得到最终权重。

\[ \mathrm{idf}_t=\log_{10}\frac{N}{\mathrm{df}_t},\qquad \mathrm{tfidf}_{t,d}=\mathrm{tf}_{t,d}\,\mathrm{idf}_t \]

把实际一起出现的概率,与两个词各自概率的乘积比较。以 2 为底取对数时,单位是比特;PPMI 保留正值,把负值改为零。

\[ \operatorname{PMI}(w,c)=\log_2\frac{P(w,c)}{P(w)P(c)},\qquad \operatorname{PPMI}(w,c)=\max(0,\operatorname{PMI}(w,c)) \]

T 是所有目标词与上下文词的配对总数,不一定等于语料中的词数。行总和、列总和都必须来自同一张表。边缘计数为正时,零共现对应的 PPMI 按零处理。

\[ \operatorname{PMI}(w,c)=\log_2\frac{f_{wc}\,T}{(\sum_j f_{wj})(\sum_i f_{ic})},\qquad T=\sum_{i,j}f_{ij} \]

点积衡量目标词向量 w 和上下文向量 c 有多相似,sigmoid 把这个分数变成概率。两个向量都是学出来的。"不是邻居"的概率是剩下的部分。

\[ P(+\mid w,c)=\sigma(\mathbf{c}\cdot\mathbf{w})=\frac{1}{1+\exp(-\mathbf{c}\cdot\mathbf{w})},\qquad P(-\mid w,c)=\sigma(-\mathbf{c}\cdot\mathbf{w}) \]

真邻居的点积高、每个抽出来的词点积低时,损失就小。它是 k+1 个是非判断的交叉熵,这些判断被当作相互独立。

\[ L_{CE}=-\Big[\log\sigma(\mathbf{c}_{pos}\cdot\mathbf{w})+\sum_{i=1}^{k}\log\sigma(-\mathbf{c}_{neg_i}\cdot\mathbf{w})\Big] \]

每个梯度都是(预测概率 − 标签)乘以词对里的另一个向量。正样本的上下文向量朝 w 靠近,每个负样本的上下文向量远离 w,w 则根据所有这些词对一起调整。η 是学习率。

\[ \mathbf{c}_{pos}\leftarrow\mathbf{c}_{pos}-\eta\big[\sigma(\mathbf{c}_{pos}\cdot\mathbf{w})-1\big]\mathbf{w},\qquad \mathbf{c}_{neg}\leftarrow\mathbf{c}_{neg}-\eta\big[\sigma(\mathbf{c}_{neg}\cdot\mathbf{w})\big]\mathbf{w} \] \[ \mathbf{w}\leftarrow\mathbf{w}-\eta\Big[\big[\sigma(\mathbf{c}_{pos}\cdot\mathbf{w})-1\big]\mathbf{c}_{pos}+\sum_{i=1}^{k}\big[\sigma(\mathbf{c}_{neg_i}\cdot\mathbf{w})\big]\mathbf{c}_{neg_i}\Big] \]

M 存放共现次数。一个矩阵里每个目标词一个向量,另一个矩阵里每个上下文词一个向量,要求它们的点积只用 d 个维度就能逼近 log M。

\[ V^{\top}U\approx\log M \]

对文本里所有词向量的每一个坐标,应用同一条规则,例如取平均或取最大值。词序会丢失。

\[ \mathbf{v}=\operatorname{pool}(\mathbf{v}_1,\dots,\mathbf{v}_n) \]

它们都把加权和 z 映射成输出。Sigmoid 输出在 (0, 1),tanh 输出在 (−1, 1),ReLU 保留正数、把负数变成零。ReLU 最常用。

\[ \sigma(z)=\frac{1}{1+e^{-z}},\qquad \tanh(z)=\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}},\qquad \operatorname{ReLU}(z)=\max(0,z) \]

隐藏层对输入加权求和后,用激活函数 g 处理。输出层就是作用在隐藏向量上的多分类逻辑回归。公式按 Jurafsky & Martin 第 7 章写出,课件只给了示意图。

\[ \mathbf{h}=g(W\mathbf{x}+\mathbf{b}),\qquad \hat{\mathbf{y}}=\operatorname{softmax}(U\mathbf{h}) \]

第 6 讲课件的 TF 例表与前一页公式采用了不同写法,PMI 例题还有一处分母笔误。对应笔记保留了说明,并使用一致的计数重新计算。

把术语说清楚

按英文名称排列,方便对照课件;中文说明会先解释意思。

句首和句尾标记(<s> / </s>)

这两个特殊标记分别表示句子的开始和结束。有了它们,第一个词也能有前面的条件,模型也能表示“这句话写完了”。

n-gram 模型 · 第 2 讲, 第 3 讲
激活函数(Activation function)

作用在一个单元加权和上的非线性函数。Sigmoid、tanh 和 ReLU 是标准选择。没有它,多层叠加会塌缩成一个线性模型。

前馈神经网络 · 第 7 讲
加一与加 k 平滑(Add-k / add-one (Laplace) smoothing)

把每种可能结果的次数都增加一点,再换算成概率,就能给没出现过的搭配留出机会。增加 1 叫加一平滑,增加 k 叫加 k 平滑。加一通常对语言模型改动过大,但这类方法在朴素贝叶斯等模型中很常用。

平滑:处理零概率 · 第 3 讲, 第 4 讲
分配性伤害与表征性伤害(Allocational vs. representational harm)

带偏见的词向量造成伤害的两种方式。分配性伤害指资源或机会分配不公,例如"程序员对应男性"这种关联扭曲了招聘搜索。表征性伤害指表示本身就带有贬损性的关联,不管有没有用它做任何决定。

词语类比(Analogy)

把一对词之间的关系用到另一对词上。假设 a 和 b 的关系,类似于 c 和 d 的关系,就在 b − a + c 附近寻找 d 的词向量。这个方法只对部分关系有效。

词义与词向量 · 第 6 讲
反义关系(Antonymy)

例如“热”和“冷”,在一个重要的意义上相反。不过,它们经常能放进相似的句子,所以词向量仍然可能很接近。

词义与词向量 · 第 5 讲, 第 6 讲
词袋表示(Bag of words (BoW))

把词表里的每个词在文档中出现了多少次数出来,排成一组数字。这种表示保留了词频,却没有保留词的顺序和周围的语境。

数据与特征 · 第 3 讲, 第 4 讲
偏置项(Bias term \(b\) (or \(w_0\)))

在各项特征加权相加后,再额外加上的一个数。即使输入特征都是零,它也能影响预测,相当于给分类边界一个可以整体移动的余地。

概率的链式法则(Chain rule of probability)

要算一串词一起出现的概率,可以从左往右计算:先算第一个词的概率,再依次乘上“已经看到前面这些词时,下一个词出现的概率”。

句子的概率 · 第 2 讲, 第 3 讲
封闭词表与开放词表(Closed vs. open vocabulary)

封闭词表假设测试时的词都已经在词表里。开放词表允许遇到新词,因此必须安排处理办法,例如用一个“未知词”标记统一表示。

条件最大似然(Conditional maximum likelihood)

已知输入和正确答案后,选择一组参数,让模型给这些正确答案尽量高的概率。把这个目标改写成负对数,就得到分类中使用的交叉熵损失。

词的情感色彩(Connotation / VAD)

一个词除了字面意思,也可能让人感到愉快、紧张或有掌控感。VAD 用三个维度描述这种色彩:愉悦度、情绪强度和掌控感。

词义与词向量 · 第 5 讲, 第 6 讲
凸函数(Convex function)

凸损失函数有一个有用的性质:如果找到了局部最小点,它也是全局最小点。但最小点不一定只有一个,梯度下降能否收敛仍取决于步长等条件。逻辑回归的损失是凸的,神经网络的损失通常不是。

余弦相似度(Cosine similarity)

先考虑两个向量各自的长度,再比较它们指向的方向。结果在 −1 到 1 之间,越大说明方向越接近。如果其中一个是零向量,就不能直接计算余弦相似度。第 7 讲补充了它比直接用点积好的原因:不然高频词的长向量总会占上风。

交叉熵损失(Cross-entropy loss)

对于只有一个正确类别的例子,取“模型给正确类别的概率”的负对数。正确答案的概率越高,损失越小;如果模型很自信地猜错了,损失就会很大。

判别式分类器(Discriminative classifier)

根据输入判断它属于哪一类,也就是估计“看到这条输入后,各个标签有多大可能正确”。逻辑回归就是一个例子。

数据与特征 · 第 3 讲
分布假说(Distributional hypothesis)

如果两个词经常出现在相似的语境里,它们的含义往往也有联系。因此,我们可以通过观察一个词怎样被使用,来了解它的意思。

词义与词向量 · 第 5 讲, 第 6 讲
任务评估与模型自身评估(Extrinsic vs. intrinsic evaluation)

外在评估把模型放进语音识别等实际任务,看看最终效果有没有提高;内在评估直接给模型打分,例如计算困惑度。前者更接近我们真正想解决的问题,后者通常更方便。

前馈神经网络 / 多层感知机(Feed-forward neural network / multilayer perceptron)

把单元排成层,信息从输入经过一个或多个隐藏层流到输出。每个隐藏单元是加权求和再接激活函数。输出层就是作用在隐藏向量上的多分类逻辑回归。

前馈神经网络 · 第 7 讲
特征与权重(Feature / weight)

特征是输入中可以测量的线索,例如一条评论里有多少个积极词。权重决定这条线索对分类分数影响多大,以及它支持还是反对这个类别。

数据与特征 · 第 3 讲, 第 4 讲
花园路径句(Garden-path sentence)

有些句子的开头会让人先理解错,读到后面才需要重新解释。例如 “The old man the boat” 中,man 是动词。这说明只看附近几个词,可能会错过整句话的结构。

n-gram 模型 · 第 3 讲
GloVe

Global Vectors 的缩写,一种静态词向量模型。它从整张词—词共现矩阵出发,用固定的少量维度拟合目标词向量和上下文向量,使它们的点积逼近矩阵的对数。它建立在 PPMI 的直觉和矩阵分解之上。

梯度(Gradient)

梯度把每个参数对应的偏导数放在一起,告诉我们参数稍微变化时,损失会怎样变化。它指向附近上升最快的方向,所以降低损失时通常往相反方向走。

留出数据(Held-out data)

从数据中留出一部分,不用来训练权重,而用来选择平滑强度、正则化强度等设置。最后还要用另一份测试数据评估效果,避免一边调模型一边用测试答案。

超参数(Hyperparameter)

有些设置不是模型通过训练权重自动学出来的,例如学习率、一批用多少样本、平滑或正则化的强度。这些设置叫超参数,通常用验证数据比较不同选择。

插值(Interpolation)

把看不同长度上下文的模型结合起来,例如混合一元、二元和三元模型的预测。每个权重都不能为负,而且加起来要等于 1,结果才仍然是概率分布。权重也可以随语境改变。

L1 与 L2 正则化(L1 / L2 regularization)

除了预测误差,再对较大的权重收取额外“代价”。L2 使用权重的平方,通常把权重往小的方向拉;L1 使用绝对值,可以让部分权重变成零,相当于只留下部分特征。

语言模型(Language model)

语言模型会为一串词分配概率,或者根据已经看到的文字,预测下一个词可能是什么,以及各个候选词有多大概率出现。

句子的概率 · 第 1 讲, 第 2 讲, 第 3 讲
学习率(Learning rate \(\eta\))

学习率决定每次沿着梯度调整参数时走多大一步。数值大,步子就大;但太大可能一步跨过合适的位置,反而让训练变得不稳定。

词元、义项与多义性(Lemma / sense / polysemy)

词元是多个词形共有的词典形式,例如 break 和 broke 对应同一个词元。义项是一个具体含义;多义性则是同一个词有多个通常相互关联的含义。

词义与词向量 · 第 5 讲, 第 6 讲
对数空间(Log space)

把概率先取对数,就能把一长串乘法变成加法。这样可以避免许多小概率相乘后,小到计算机无法准确表示。

n-gram 模型 · 第 2 讲, 第 3 讲
马尔可夫假设(Markov assumption)

估计下一个词时,只看前面最近的几个词,而不看从句首到现在的全部内容。这是一种简化,让需要统计的情况少得多。

句子的概率 · 第 2 讲, 第 3 讲
最大似然估计(Maximum likelihood estimate (MLE))

在各种参数取值中,选择最能让已观测数据出现的那一组。对于简单的词频模型,做法就是用某种结果出现的次数,除以相应的总次数。

句子的概率 · 第 2 讲, 第 4 讲
小批量(Mini-batch)

一次拿出一小组样本,分别算出梯度,通常求平均后再统一更新参数。这样每次更新既参考了不止一个例子,也不用等整份训练数据都算完。

多分类逻辑回归(Multinomial logistic regression)

当答案有多个互斥类别时,为每个类别分别打分,再用 softmax 把这些分数变成总和为 1 的概率。这就是从二分类推广到多分类的逻辑回归。

多分类与 Softmax · 第 5 讲, 第 6 讲
负采样(Negative sampling)

对每个真实的(目标词,上下文词)对,随机抽 k 个词充当"不是邻居"的样本。抽样概率按一元词频的幂次加权,常用指数 0.75,这让罕见词被抽中的机会略微增加。

word2vec · 第 7 讲
n 元词组(n-gram)

n-gram 指连续出现的 n 个文本单元。用它建立语言模型时,前 n−1 个单元用于预测下一个:一元模型不看前文,二元模型看前一个,三元模型看前两个。

n-gram 模型 · 第 2 讲, 第 3 讲
独热向量(One-hot vector)

一组数字中只有一个位置是 1,其余都是 0。它可以标记一个类别或词表中的一个词。不过,不同词的 1 位于不同位置,这种表示本身看不出词义是否相近。

从计数得到词向量 · 第 5 讲, 第 6 讲
词表外的词与未知词标记(OOV / <UNK>)

词表外的词,就是没有收入模型词表的词。一种处理办法是把训练中的稀有词、测试中的陌生词,都替换为 <UNK>,让模型提前学会怎样处理“未知词”。

生成句子与未知词 · 第 2 讲, 第 3 讲
过拟合(Overfitting)

模型把训练中的例子贴得太紧,连偶然的规律或噪声也记住了,结果换一批新例子就表现变差。问题在于学到的规律没能很好地推广。

生成句子与未知词, 过拟合与正则化 · 第 2 讲, 第 3 讲, 第 4 讲
参数模型(Parametric model)

模型的行为由一组规定好的参数控制,例如权重和偏置。训练时调整的是这些数值,而不是每学一个样本就重新设计模型的结构。

数据与特征 · 第 3 讲
池化(Pooling)

对每个坐标应用同一条规则,例如取平均或取最大值,把多个词向量合成一个向量。这样分类器每段文本只有一个输入,但词序丢失了。

困惑度(Perplexity)

困惑度根据模型给测试文本的概率计算,并把文本长度的影响平均掉。在相同的评估条件下,越低越好。如果每次都有若干个等概率选项,它就等于选项的数量。

用困惑度评估模型 · 第 2 讲, 第 3 讲
点互信息与正点互信息(PMI / PPMI)

先看两个词实际一起出现了多少,再和“它们互不相关时,预计会一起出现多少”作比较。PMI 是这两个概率之比的对数;PPMI 把负值改为零。次数太少时,估计可能不可靠。

ReLU 与 tanh(ReLU / tanh)

两种激活函数。ReLU 即 max(0, z),正数原样通过,负数变成零,是最常用的选择。tanh 是以零为中心的 S 形曲线,输出在 −1 到 1 之间。

前馈神经网络 · 第 7 讲
自监督(Self-supervision)

用数据自己提供的标签训练,不需要人工标注。在 word2vec 里,真正出现在目标词附近的词就是"是"的答案。

word2vec · 第 7 讲
Sigmoid 函数(Sigmoid)

一个平滑的 S 形函数,可以把任意有限分数转换成 0 到 1 之间的数。二分类逻辑回归用它把分数变成概率。

带负采样的 skip-gram(Skip-gram with negative sampling,SGNS)

课上展开的那种 word2vec。一个逻辑回归分类器用两个向量点积的 sigmoid,判断一个上下文词是否属于目标词附近。真邻居是正样本,随机抽出的词是负样本。

word2vec · 第 7 讲
Softmax 函数(Softmax)

把多个类别的分数一起转换成概率:每个分数先取指数,再除以所有指数值的总和。有限分数得到的概率都大于零,而且加起来等于 1。

多分类与 Softmax · 第 5 讲, 第 6 讲
稀疏向量与稠密向量(Sparse vs. dense vectors)

稀疏向量里有很多零,通常是因为大量可能的语境没有出现过。稠密词向量一般更短,大多数位置不是零,把词的信息集中在较少的数字里。第 7 讲给出了典型长度:稀疏向量两万到五万,稠密向量 50 到 1000。

从计数得到词向量、word2vec · 第 6 讲, 第 7 讲
静态词向量与上下文词向量(Static vs. contextual embeddings)

静态词向量让同一个词无论出现在哪里,都使用同一组数字。上下文词向量会随句子改变,因此同一个词在不同语境中可以有不同的表示。

随机梯度下降(Stochastic gradient descent (SGD))

每看完一个样本,或一小批样本,就调整一次参数,不必等全部训练样本算完。训练时通常会打乱样本顺序,让更新不总沿着同一种排列进行。

随机系统与确定性系统(Stochastic vs. deterministic system)

在输入和设置相同的情况下,确定性系统会给出相同结果;随机系统会使用随机性,结果可能不同。语言模型按概率采样时具有随机性,但固定的解码方式也可以得到确定的输出。

停用词(Stop words)

例如 the、is、of 这类极常见的词。如果它们对当前任务帮助不大,可以在预处理中去掉;但是否删除要看任务,不能一概而论。

数据与特征 · 第 3 讲
同义、相似与相关(Synonymy vs. similarity / relatedness)

同义词在某些语境中表示相同意思;相似的词共享一些重要属性,例如咖啡和茶;相关的词在同一个场景中有联系,例如咖啡和杯子,但它们不是同一种东西。

词义与词向量 · 第 5 讲, 第 6 讲
目标词向量与上下文向量(Target vs. context embeddings)

word2vec 给每个词保存两个向量:作为目标词时用一个,作为上下文词时用另一个,分别放在矩阵 W 和 C 里。常见的最终表示是把两者相加。

word2vec · 第 7 讲
词—文档矩阵(Term-document matrix)

把词放在行上,把文档放在列上,表格中的每个数表示这个词在这篇文档里出现了多少次。横着看是一个词在不同文档中的分布,竖着看是一篇文档的词频。

词频与逆文档频率(TF-IDF)

一个词如果在某篇文档里经常出现,却不是到处都出现,就更能代表这篇文档。TF 衡量它在当前文档中的频率,IDF 则降低那些几乎每篇文档都有的词的权重。

从计数得到词向量 · 第 3 讲, 第 6 讲
文本单元(Token)

把文本切分后,模型一次处理的一个单元。本课程这些例子通常把一次词语出现当作一个单元;其他分词方式也可能把标点、词的一部分或单个字符作为单元。

分词、词干提取与词形还原(Tokenization / stemming / lemmatization)

分词负责把文本切成单元;词干提取按规则缩短词形,例如 Porter 算法;词形还原则找到对应的词典形式。它们都在整理输入,但解决的是不同问题。

数据与特征 · 第 3 讲
词型与词次(Type vs. token)

词型看“有几种不同的词”,词次看“总共出现了多少次”。统一小写并忽略标点后,“the cat chased the cat” 有 3 种词,出现了 5 次。

词义与词向量 · 第 5 讲, 第 6 讲
数值下溢(Underflow)

计算结果小到超出计算机能正常表示的范围。很多小概率连续相乘容易遇到这个问题,因此通常先取对数,再用加法计算。

n-gram 模型 · 第 2 讲
权重衰减(Weight decay)

训练时把权重往零的方向拉一点。在普通梯度下降中,加入 L2 惩罚项就会产生这种效果,同时模型仍根据预测误差调整参数。

词向量(Word embeddings)

用一组数字表示一个词。通过词的使用语境得到这些数字后,模型就能利用相似词之间的联系,而不只是把每个词当成互不相干的名字。

词义与词向量 · 第 5 讲, 第 6 讲
窗口大小(Window size)

目标词两侧各有多少个词算作上下文。小窗口(约 ±2)找到用法相似的词,大窗口(约 ±5)找到主题相关的词。它对稀疏向量和稠密向量都有影响。

词—上下文矩阵(Word-context matrix)

把目标词放在行上,把附近出现的词放在列上。每个单元格统计:在规定的距离范围内,这两个词一起出现了多少次。

得到紧凑词向量的几种方法(Word2vec / GloVe / SVD)

得到稠密词向量的三条路线。Word2vec 对词对训练一个分类器并保留它的权重,包括 skip-gram 和 CBOW 两种变体;GloVe 对共现矩阵的对数做矩阵分解;SVD 直接对矩阵降维,LSA 将它用于文本。第 6 讲点了三者的名,第 7 讲展开了前两种。

word2vec、GloVe 与词向量的性质 · 第 6 讲, 第 7 讲
WordNet 与同义词集(WordNet / synset)

WordNet 把表达同一个概念的词义放进同义词集,还记录“某物是一种什么”和“某物是另一物的一部分”等关系。

词义与词向量 · 第 5 讲, 第 6 讲
零计数与零概率(Zeros)

未做平滑的计数模型,可能给训练中没有出现过的搭配分配零概率。如果测试文本里出现了它,整段文本的概率就会成为零,对数概率不再有限,困惑度则变为无穷大。

生成句子与未知词 · 第 2 讲, 第 3 讲
齐夫定律(Zipf's law)

少数词出现得特别多,大量词却很少出现。大致来说,把词按频率从高到低排列后,频率会随着排名按幂次下降。