最近斯坦福的CS224N开课了,看了下课程介绍,去年google发表的Transformer以及最近特别火的Contextual Word Embeddings都会在今年的课程中进行介绍。NLP领域确实是一个知识迭代特别快速的领域,每年都有新的知识冒出来。所以身处NLP领域的同学们要时刻保持住学习的状态啊。笔者又重新在B站上看了这门课程的第一二节课。前两节课的主要内容基本上围绕着词向量进行。所以这篇文章笔者想简单的介绍一下词向量,以及如何利用python的gensim训练一个自己的词向量。
词向量简介
词向量指的是一个词的向量表示。如果你希望计算机能够进行一些复杂点的文本语义学习,你必须得将文本数据编码成计算机能够处理的数值向量吧,所以词向量是一个自然语言处理任务中非常重要的一环。
one-hot representations
很久很久之前,一个词用onehot进行编码,如下图所示,这种方式简单粗暴,将一个词用一个只有一个位置为1,其他地方为0的向量表示。1的位置就代表了是什么词。
词的one-hot编码
这种表示有如下缺点:
- 占用空间大
- 词与词之间的向量是正交关