---
# System prepended metadata

title: 讨论 2022-11-29

---

讨论 2022-11-29
=

# 语言中的特征与模式

## Bag of Words
词袋模型（Bag of Words）是最为基础的特征，也是语言中最简单的模式，即关键字。词袋模型描述了一段文本包含了哪些关键字，并据此给出决策。比如看到“好”，“不错”就认为是表扬。只看关键字当然是不够的，比如“不好”也有关键字好。

词袋模型有两个直接的扩展：
-    第一是位置相关的词袋，即同时考虑关键字和其位置，比如模式（0，“你”），（1，“好”）就表示第一个位置是你，第二个位置是好。
-    第二是关键词的频率，即关键词出现的频率，比如“好”出现了5次，而“坏”出现了1次，那我们理应更重视“好”。

频率和位置还可以结合，也就是一段连续的关键字组合出现的频率，即N-gram特征。2-gram指的是就是两个连续的单词组成的一个组合，3-gram即三个连续单词的组合。

## TF-IDF
语言有一个很重要的特性就是频率高的不一定是重要的，这和一般的数据有很大区别。频率反应重要性，但模式却不简单。比如“之乎者也”频率虽高但没有含义。同样的，很多高频词的概念很模糊，比如“车”就比“特斯拉”要模糊很多。为此，以TF-IDF为主的方法引入相对频率的概念，即每个单词在不同文本中有一个基准频率，如果在某一篇文章中，这个词的频率远高于基准频率，那么说明它很重要。

这里引出了一个很有趣的问题，如果一个高频的词突然在一个文章中完全不出现，那么是否也是一种特征？实际上这关系到了一个NLP经常碰到的问题，即数据量不足以充分体现统计量。很多高频词都不会在一个文章中出现，因为他们不够“高频”。假如两个词的概率为百分之一和千分之一，而一段文字只有50词，那么如何区分二者？

对TF-IDF的进一步讨论中有一个非常重要的工作，Topic Model，其核心思想是每篇文章有一个主题，比如体育，养生，时政等。不同主题下用词习惯大不相同，所以引入隐变量来分别统计。这里其实很好的体现了之前提到的隐变量的作用一定是把问题分解的更简单了，也就是我们很难找到一个统计模型去同时描述体育和烹饪文章，但分别描述他们很简单。

## PMI
要想进一步理解语言，就要面对上下文信息，其中很有代表性又非常基础的一种特征便是PMI，即$$PMI=\log \frac{P(x,y)}{P(x)P(y)}$$

这里x，y是不同的单词，x，y共同出现即x,y同时出现在一句话中，或二者相差几个单词之内。这其实和经典的Skip-gram思想很接近。

稍微变化一下，我们考虑$P(X|C)$，这里X是单词，而C变成上下文，比如之前的N-gram，或者是上下分对应的特征。这个也可以拓展为BERT训练使用的是MLM以及word2vec中的CBOW。

这里需要明确一点，就是PMI究竟在捕捉什么信息？很多人会受词向量的几何性质，以为词向量接近的词就是同义词，这其实是不准确的。PMI描述的是可替换性，即把一个词替换为另一个有相近词向量的词，不影响语句的流畅性，但不保证意思相近。

比如 **“这是一个好（坏）人”**，这里把“好”换成“坏”，句子完全通顺，但意思相反。换言之，PMI是不能区分同义词，反义词，其他可替换词之间的区别的。

## 依赖与作用范围
PMI往往隐含了距离信息，两个词在相近出现，就很可能有关系。而依赖关系则从另一个角度考虑问题，即某些词是修饰或描述其他词的，比如“**一个方方正正，表面光滑，耐高温，价格便宜的不锈钢盒子** ” ，这里面的形容词都是形容盒子的，“方方正正”和“不锈钢”是一样重要的，不能因为距离远近决定其重要性。而这种修饰关系是可以拓展的，比如一个动词的主语，宾语都可以认为是对这个动词的修饰，状语也同理。依赖关系在同时描述多个物体的时候更有优势，比如"**张三和李四去宴会，前者一直在聊天，后者不理前者，一直认真品尝美食。**"
如果仅靠位置关系，是很难合理的建模这句话的，但依赖关系可以很好的处理。

依赖关系不仅仅局限于句子内部，根据不同的作用范围，我们可以有句子之间的依赖关系，两句话内部词语之间的依赖关系等。

## 语义抽象化
语言的一大特点是表达多样性，一句话有很多种不同的说法。其中最基本的便是词语的多样性，比如“高兴”，“开心”，“愉快”，他们表达的意思是一样。如何独立考虑他们的含义，在与其他词语组合之后，不同的表达方式几何级数增加的。为了减少可能性，人们提出了**语义单元**的概念，即一种明确语义，没有表达差异的单元。比如上述的三个词都会用同一个单元表示而不是三个。这一过程也就称之为语义的抽象化。

![](https://i.imgur.com/imEgkq6.png)


## 省略
机器处理语言的一大困难就是省略现象，而省略的原因又可以归结为多种情况。
- “你懂的”， “吃了嘛”，对话型的省略，信息在语言种不完备，参与方的背景，表情，语音等等信息都不包含在文字中。
- “张三新买的车，轮子不太好”，整体和局部，通常我们在连续描述整体与局部时，会省略他们的从属关系，也就需要常识了。
- “张三3年级，李四4年级，他们学习都不好”，复数指代机器也很难处理，因为这涉及到集合运算。更复杂的例子如“20个同学去秋游，3个人去做饭，5个人搬行李，其余的人中一半去爬山了。”
- “没有一个人是无辜的”，“有一个人看到了”，不明确指代更为复杂，他标志了逻辑运算，所以自然语言其实时包含逻辑知识的，至少比一阶逻辑复杂。

## 总结
目前的研究认为 如果我们很好的解决了最后三个问题，依赖关系，语义抽象，以及省略，那么基本就完成对语言模式的建模。