词嵌入简介
1 综述
1.1 是什么
词嵌入就是将词转化成数值向量的方法
1.2 为什么这么做
很多机器学习模型只支持数据数据输入,无法直接处理文本
2 基于频率的词嵌入
2.1 计数向量
语料库C中有D个文本{d1,d2…dD}包含N个词项,生成一个D*N的计数矩阵M,矩阵中每行代表文件D(i)中各词出现的频率。下面举一个例子说明:
语料库中有两篇文章D1、D2.
D1: He is a lazy boy. She is also lazy
D2: Neeraj is a lazy person
这里,D=2,N=6
大小为2*6的计数矩阵M表示如下
1 | He | She | Lazy | boy | Neeraj | person |
---|---|---|---|---|---|---|
D1 | 1 | 1 | 2 | 1 | 0 | 0 |
D2 | 0 | 0 | 1 | 0 | 1 | 1 |
2.2 TF-IDF
有一些常用词如“is”、“the”、“a”在每一篇文档中出现频率都很高,我们想降低这些词的权重。
TF-IDF提出就是为了降低“is”、“the”、“a”的重要性,提高出现频率不高,但是只在少部分文档出现的词语的重要性。
举例说明,有两个文档 D1,D2
D1:
Term | Count |
---|---|
This | 1 |
is | 1 |
about | 2 |
Messi | 4 |
D2:
Term | count |
---|---|
this | 1 |
is | 2 |
about | 1 |
tf-idf | 1 |
t f = 词 项 t 在 某 一 篇 文 档 中 出 现 的 次 数 某 文 档 包 含 的 词 项 总 数 tf=\frac{词项t在某一篇文档中出现的次数}{某文档包含的词项总数} tf=某文档包含的词项总数词项t在某一篇文档中出现的次数
所以 TF(this,D1) = 1 8 \frac{1}{8} 81
TF(this,Documnet2)= 1 5 \frac{1}{5} 51
IDF被定义为: I D F = l o g ( N n ) IDF=log(\frac{N}{n}) IDF=log(nN)
其中N是语料库中文档的数量,n是有某词项出现的文档的数量
所以 I D F ( t h i s ) = l o g ( 2 2 ) = 0 IDF(this)=log(\frac{2}{2})=0 IDF(this)=log(22)=0
T F − I D F ( T h i s , D 1 ) = 1 8 ( 0 ) = 0 TF-IDF(This,D1)=\frac{1}{8}(0)=0 TF−IDF(This,D1)=81(0)=0
T F − I D F ( T h i s , D 2 ) = 1 5 ( 0 ) = 0 TF-IDF(This,D2)=\frac{1}{5}(0)=0 TF−IDF(This,D2)=51(0)=0
T F − I D F ( M e s s i , D o c u m n e t 1 ) = 4 8 0.301 = 0.15 TF-IDF(Messi,Documnet1)=\frac{4}{8}0.301=0.15 TF−IDF(Messi,Documnet1)=840.301=0.15
3 基于预测的词嵌入
3.1 CBOW Continuous Bag of words (连续词袋模型)
CBOW是word2Vec词向量模型中的一种,他训练一个浅层神经网络,这个神经网络输入是中心词周边的词,输出是中心词,用周边的词预测中心词,词向量为网络隐层的输出。
3.2 Skip-Gram模型
skip-Gram是word2Vec中另一种模型,他像是CBOW模型的镜像,输入是中心词,输出是中心词周边的词,网络隐层的输出为词向量。