> For the complete documentation index, see [llms.txt](https://baozoulin.gitbook.io/neural-networks-and-deep-learning/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://baozoulin.gitbook.io/neural-networks-and-deep-learning/di-wu-men-ke-xu-lie-mo-xing-sequence-models/di-wu-men-kexulie-mo-578b28-sequence-models/natural-language-processing-and-word-embeddings/21-ci-hui-biao-zheng-ff08-word-representation.md).

# 2.1 词汇表征（Word Representation）

**one-hot**向量表示：单词Man，Woman，King，Queen，Apple，Orange分别出现在词汇表的第5391，9853，4914，7157，456，6257的位置，则它们分别用$$O\_{5391}$$,$$O\_{9853}$$ 等表示，$$O$$代表**one-hot：**

[![](https://github.com/fengdu78/deeplearning_ai_books/raw/master/images/68d7c930146724f39782cb57d33161e9.png)](https://github.com/fengdu78/deeplearning_ai_books/blob/master/images/68d7c930146724f39782cb57d33161e9.png)

缺点是把每个词孤立起来，使得算法对相关词的泛化能力不强

因为任何两个one-hot向量的内积都是0，例如king和queen，词性相近，但是单从one-hot编码上来看，内积为零，无法知道二者的相似性

因此用**特征表征（Featurized representation）**&#x7684;方法对每个单词进行编码。也就是使用一个特征向量表征单词，特征向量的每个元素都是对该单词某一特征的量化描述，量化范围可以是\[-1,1]之间，而单词使用这种高维特征表示时，就叫做**词嵌入（word embedding），** 词嵌入可以让算法自动的理解一些类似的词，比如男人对女人，国王对王后：

[![](https://github.com/fengdu78/deeplearning_ai_books/raw/master/images/ce30c9ae7912bdb3562199bf85eca1cd.png)](https://github.com/fengdu78/deeplearning_ai_books/blob/master/images/ce30c9ae7912bdb3562199bf85eca1cd.png)

> 以上举例的特征实际上并不是手工设计的，而是算法（word embedding）学习而来；而且这些学习的特征，可能并不具有良好的解释性，但无论如何，算法都可以快速找到哪些单词是类似的

特征向量的长度依情况而定，特征元素越多则对单词表征得越全面。这里的特征向量长度设定为300。使用特征表征之后，词汇表中的每个单词都可以使用对应的300 x 1的向量来表示，该向量的每个元素表示该单词对应的某个特征值。每个单词用e+词汇表索引的方式标记，例如$$e\_{5391}$$，$$e\_{9853}$$，$$e\_{4914}$$，$$e\_{7157}$$，$$e\_{456}$$，$$e\_{6257}$$

用这种表示方法来表示**apple**和**orange**这些词，那么**apple**和**orange**的这种表示肯定会非常相似，可能有些特征不太一样，如颜色口味，但总的来说**apple**和**orange**的大部分特征实际上都一样，或者说都有相似的值。这样对于已经知道**orange juice**的算法很大几率上也会明白**apple juice**这个东西，这样对于不同的单词算法会泛化的更好

[![](https://github.com/fengdu78/deeplearning_ai_books/raw/master/images/59fb45cfdf7faa53571ec7b921b78358.png)](https://github.com/fengdu78/deeplearning_ai_books/blob/master/images/59fb45cfdf7faa53571ec7b921b78358.png)

如果能够学习到一个300维的特征向量，或者说300维的**词嵌入**，把这300维的数据嵌入到一个二维空间里，就可以可视化了。常用的可视化算法是**t-SNE算法**，会发现**man**和**woman**这些词聚集在一块，**king**和**queen**聚集在一块等等

在对这些概念可视化的时候，词嵌入算法对于相近的概念，学到的特征也比较类似，最终把它们映射为相似的特征向量
