简单神经网络
- 文本表示:从one-hot到word2vec。
1.1 词袋模型:离散、高维、稀疏。
1.2 分布式表示:连续、低维、稠密。word2vec词向量原理并实践,用来表示文本。
文本表示:从one-hot到word2vec
文本表示的意思是把字词处理成向量或矩阵,以便计算机能进行处理。文本表示是自然语言处理的开始环节。
文本表示分为离散表示和分布式表示。
离散表示的代表就是词袋模型,one-hot(也叫独热编码)、TF-IDF、n-gram都可以看作是词袋模型。
分布式表示也叫做词嵌入(word embedding),经典模型是word2vec,还包括后来的Glove、ELMO、GPT和BERT。
-
词袋模型:离散、高维、稀疏
1)One-Hot Encoding:
独热编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。
本质上是用一个只含一个 1、其他都是 0 的向量来唯一表示词语。
2)TF-IDF:https://blog.youkuaiyun.com/xh999bai/article/details/89287016
3)n-gram:n-gram是从一个句子中提取n个连续的字的集合,可以获取到字的前后信息。一般2-gram或者3-gram比较常见。文本的离散表示存在着数据稀疏、向量维度过高、字词之间的关系无法度量的问题,适用于浅层的机器学习模型,不适用于深度学习模型。
后续我会再写两篇文章,分析如何用代码实现文本的one-hot编码和TF-IDF编码。
-
分布式表示:连续、低维、稠密。
word2vec是Google于2013年开源推出的一个用于获取词向量的工具包。
word2vec是一个将词表示为一个向量的工具,通过该向量表示,可以用来进行更深入的自然语言处理,比如机器翻译等。word2vec作为神经概率语言模型的输入,其本身其实是神经概率模型的副产品,是为了通过神经网络学习某个语言模型而产生的中间结果。具体来说,“某个语言模型”指的是“CBOW”和“Skip-gram”。具体学习过程会用到两个降低复杂度的近似方法——Hierarchical Softmax或Negative Sampling。两个模型乘以两种方法,一共有四种实现。
1)CBOW:CBOW 是 Continuous Bag-of-Words Model 的缩写,是一种根据上下文的词语预测当前词语的出现概率的模型。
2)Skip-gram:Skip-gram只是逆转了CBOW的因果关系而已,即已知当前词语,预测上下文。 -
word2vec词向量原理并实践,用来表示文本。
官方API介绍如下:
class gensim.models.word2vec.