词嵌入简介
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 |
tf=词项t在某一篇文档中出现的次数某文档包含的词项总数tf=\frac{词项t在某一篇文档中出现的次数}{某文档包含的词项总数}tf=某文档包含的词项总数词项t在某一篇文档中出现的次数
所以 TF(this,D1) = 18\frac{1}{8}81
TF(this,Documnet2)=15\frac{1}{5}51
IDF被定义为:IDF=log(Nn)IDF=log(\frac{N}{n})IDF=log(nN)
其中N是语料库中文档的数量,n是有某词项出现的文档的数量
所以IDF(this)=log(22)=0 IDF(this)=log(\frac{2}{2})=0IDF(this)=log(22)=0
TF−IDF(This,D1)=18(0)=0TF-IDF(This,D1)=\frac{1}{8}(0)=0TF−IDF(This,D1)=81(0)=0
TF−IDF(This,D2)=15(0)=0TF-IDF(This,D2)=\frac{1}{5}(0)=0TF−IDF(This,D2)=51(0)=0
TF−IDF(Messi,Documnet1)=480.301=0.15TF-IDF(Messi,Documnet1)=\frac{4}{8}0.301=0.15TF−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模型的镜像,输入是中心词,输出是中心词周边的词,网络隐层的输出为词向量。