一、独热编码(one-hot)

在自然语言处理中,若有个字典或字库里有 $N$ 个单字,则每个单字可以被一个 $N$ 维的one-hot向量代表。如字库里仅有apple,banana ,以及pineapple这三个单词,则他们各自的one-hot向量可以为:

$\begin{array}{ll}\text { apple } & =\left[\begin{array}{lll}1 & 0 & 0\end{array}\right] \\ \text { banana } & =\left[\begin{array}{lll}0 & 1 & 0\end{array}\right] \\ \text { pineapple } & =\left[\begin{array}{lll}0 & 0 & 1\end{array}\right]\end{array}$

由于电脑无法理解非数字类的数据,one-hot编码可以将类别性数据转换成统一的数字格式,方便机器学习的算法进行处理及计算。而转换成固定维度的向量则方便机器学习算法进行线性代数上的计算。

二、词袋模型(Bag of Words)

词袋模型 (英语: Bag-of-words model) 是个在自然语言处理和信息检索(IR)下被简化的表达模型。此模型下,一段文本 (比如一个句子或是一个文档) 可以用一个装着这些词的袋子来表示, 这种表示方式不考虑文法以及词的顺序。

 

示例:下面是两个简单的文件

(1) John likes to watch movies. Mary likes movies too.
(2) John also likes to watch football games.

基于以上两个文件,可以构建出下列清单(词集):

[
"John",
"likes",
"to",
"watch",
"movies",
"also",
"football",
"games",
"Mary",
"too"
]

此处有是个不同的词,使用清单(词集)的索引表示长度为10的向量:

(1) [1, 2, 1, 1, 2, 0, 0, 0, 1, 1] 
(2) [1, 1, 1, 1, 0, 1, 1, 1, 0, 0]

每个向量的索引内容对应到清单中词出现的次数。

举例来说,第一个向量(文件一)前两个内容索引是1和2,第一个索引内容是"John"对应到清单第一个词并且该值设定为1,因为"John"出现一次。

此向量表示法不会保存原始句子中词的顺序。该表示法有许多成功的应用,像是邮件过滤。

 

基于维基百科的解释和sklearn中对于词袋模型的实现(​​CountVectorizer​​)可以得出:在实际过程中,词袋模型多以词集+词频矩阵的方式实现。

值得一提的是,得到了两篇文章的词频矩阵,可以根据余弦相似度来比较两篇文章的相似度,余弦相似度公式如下:

$\frac{\mathrm{a} \cdot \mathrm{b}}{|| \mathrm{a}|| \times|| \mathrm{b}||}$

在示例中的计算结果为:

$\frac{1*1+2*1+1*1+1*1+2*0+0*1+0*1+0*1+1*0+1*0}{\sqrt{1^{2}+2^{2}+1^{2}+1^{2}+2^{2}+0^{2}+0^{2}+0^{2}+1^{2}+1^{2}}+\sqrt{1^{2}+1^{2}+1^{2}+1^{2}+0^{2}+1^{2}+1^{2}+1^{2}+0^{2}+0^{2}}}\approx 0.8$

三、TF-IDF

 

四、n-gram模型

 

五、Word2Vec模型

 

六、Glove模型