赞
踩
one-hot
表示以0
向量开始,如果单词存在于句子或者文档中, 则将向量中的相应条目设置为1
,反之为0
。
构成词库 {time,fruit, files, like, a, an, arrow, banana}
"like a banana"的one-hot表示就是:[0, 0, 0, 1, 1, 0, 0, 1]
短语,句子或者文档的词频表示就是其组成的单词one-hot
表示向量的总和。
缺点:词频看不出文档的重要性。
T
F
=
某
个
词
在
文
档
中
出
现
的
次
数
文
档
总
词
数
TF = \frac{某个词在文档中出现的次数}{文档总词数}
TF=文档总词数某个词在文档中出现的次数
如果有一系列专业文献,只顾考虑词频,可能claim这样的高频常见词并不能增加我们认识文献的信息,而低频罕见词tetrafluoroethylene(四氟乙烯)却反而有可能表达文献的本质。为给这些词在表达中增加比重,给无意义词减小比重,就有了逆文档频率(IDF)。
逆
文
档
词
频
(
I
D
F
)
=
log
(
语
料
库
中
总
文
档
数
包
含
该
词
的
总
文
档
数
+
1
)
逆文档词频(IDF)=\log(\frac{语料库中总文档数}{包含该词的总文档数+1})
逆文档词频(IDF)=log(包含该词的总文档数+1语料库中总文档数)
单词的TF-IDF值就是TF和IDF的乘积
T
F
I
D
F
=
T
F
∗
I
D
F
TFIDF = TF * IDF
TFIDF=TF∗IDF
以上表示方法总结存在问题:
解决方案:稠密编码(特征嵌入)
单独词特征: 组成词的字符和它们的次序,以及从中导出的属性,和其他外部信息资源的联系(文档中的词频,TF-IDF)
文本特征: 观察到的特征是字符和词在文本中的数量和次序
TF-IDF
n-gram
N
的滑动窗口操作,形成了长度是N
的字节段序列。
上下文词特征: 考虑词在句子或者文本中时,一个能直接观测到的特征就是其在句子中的位置,以及围绕它的词。由此引出一个概念–窗口。
窗口:围绕词的窗口聚焦于词的直接上下文(即目标每侧的k个词),由此可基于窗口进行统计共现频率,特征组合,词预测等一系列的任务。
自然语言的句子并非只是词语的线性排序,还是遵循一定结构的,这个结构又遵循复杂的某种不易于直接观察到的规律,这个规律就叫做语法 。
针对这些规则或者规律的学习就被称为面向学习的语言学 。
有的语言模板仍未被挖掘,有的已经被充分理解,例如词性 ,部分语法 ,部分语义信息。
存在专门的系统,以不同的准确率来预测词性,语法树,语义角色以及一些其他语言学属性。
稠密向量表示 :不再以one-hot
中的一维来表示各个特征,而是把每个核心特征 (词,词性,位置等)都嵌入到d
维空间中,并用空间中的一个向量表示。通常空间维度d
远小于每个特征的样本数(40000的词表,100/200维向量)。嵌入的向量(每个核心特征的向量表示)作为网络参数与神经网络中的其他参数一起被训练。
稠密编码使用总结
稠密编码优势
组合稠密向量 :假设i
为中心词,两边各包含k
个单词的窗口,窗口大小为2,那我们关注的要编码的就是在位置i-2, i-1, i+1和i+2上的词。将这些词表示组合之后作为新特征使用。
可变特征数目–连续词袋 :前馈神经网络使用固定维度的输入,这样能够很容易地与取固定数目的抽取函数相适应,每个特征用一个向量表示,通过拼接组合向量 ,这种方法中输入向量的每个区域对应一个不同特征。但有时不能预先确定特征的数目(如在文本分类任务中,通常句子中的每个词都是一个特征),因此我们需要使用固定大小的向量 表示任意数量的特征。例如连续词袋(CBOW)模型 。
C
B
O
W
(
f
1
,
⋯
,
f
k
)
=
1
k
∑
i
=
1
k
v
(
f
i
)
\mathrm{CBOW}\left(f_{1}, \cdots, f_{k}\right)=\frac{1}{k} \sum_{i=1}^{k} v\left(f_{i}\right)
CBOW(f1,⋯,fk)=k1i=1∑kv(fi)
WCBOW
(
f
1
,
⋯
,
f
k
)
=
1
∑
i
=
1
k
a
i
∑
i
=
1
k
a
i
v
(
f
i
)
\operatorname{WCBOW}\left(f_{1}, \cdots, f_{k}\right)=\frac{1}{\sum_{i=1}^{k} a_{i}} \sum_{i=1}^{k} a_{i} v\left(f_{i}\right)
WCBOW(f1,⋯,fk)=∑i=1kai1i=1∑kaiv(fi)
P
(
A
B
)
=
P
(
A
∣
B
)
P
(
B
)
=
P
(
B
∣
A
)
P
(
A
)
P(AB)=P(A|B)P(B)=P(B|A)P(A)
P(AB)=P(A∣B)P(B)=P(B∣A)P(A)
P
(
A
∣
B
)
=
P
(
B
∣
A
)
P
(
A
)
P
(
B
)
P(A \mid B)=\frac{P(B \mid A) P(A)}{P(B)}
P(A∣B)=P(B)P(B∣A)P(A)
P
(
B
i
∣
A
)
=
P
(
B
i
)
P
(
A
∣
B
i
)
∑
j
=
1
n
P
(
B
j
)
P
(
A
∣
B
j
)
P\left(B_{i} \mid A\right)=\frac{P\left(B_{i}\right) P\left(A \mid B_{i}\right)}{\sum_{j=1}^{n} P\left(B_{j}\right) P\left(A \mid B_{j}\right)}
P(Bi∣A)=∑j=1nP(Bj)P(A∣Bj)P(Bi)P(A∣Bi)
语言模型就是给任何词序列分配一个概率 。通俗的说,就是预测一个词在一个序列之后的概率,也即已知前i-1
个词,预测第i
个词。
p
(
w
i
∣
w
1
,
w
2
,
⋯
,
w
i
−
1
)
p\left(w_{i} \mid w_{1}, w_{2}, \cdots, w_{i-1}\right)
p(wi∣w1,w2,⋯,wi−1)
p
(
w
i
∣
w
1
,
w
2
,
⋯
,
w
i
−
1
)
=
p
(
w
1
,
w
2
,
⋯
,
w
i
−
1
,
w
i
)
p
(
w
1
,
w
2
,
⋯
,
w
i
−
1
)
p\left(w_{i} \mid w_{1}, w_{2}, \cdots, w_{i-1}\right)=\frac{p\left(w_{1}, w_{2}, \cdots, w_{i}-1, w_{i}\right)}{p\left(w_{1}, w_{2}, \cdots, w_{i-1}\right)}
p(wi∣w1,w2,⋯,wi−1)=p(w1,w2,⋯,wi−1)p(w1,w2,⋯,wi−1,wi)
定义一个统计语言模型 如下:
P
(
w
1
;
n
)
=
P
(
w
1
)
P
(
w
2
∣
w
1
)
P
(
w
3
∣
w
1
:
2
)
P
(
w
4
∣
w
1
:
3
)
⋯
P
(
w
n
∣
w
1
:
n
−
1
)
P\left(w_{1 ; n}\right)=P\left(w_{1}\right) P\left(w_{2} \mid w_{1}\right) P\left(w_{3} \mid w_{1: 2}\right) P\left(w_{4} \mid w_{1: 3}\right) \cdots P\left(w_{n} \mid w_{1: n-1}\right)
P(w1;n)=P(w1)P(w2∣w1)P(w3∣w1:2)P(w4∣w1:3)⋯P(wn∣w1:n−1)
一个计算实例:
则: P ( 商 品 ∣ B O S ) = 2 / 3 P(商品|BOS)=2/3 P(商品∣BOS)=2/3, P ( 和 ∣ B O S 商 品 ) = 1 / 2 P(和|BOS\quad商品)=1/2 P(和∣BOS商品)=1/2, P ( 服 务 ∣ B O S 商 品 和 ) = 1 / 1 P(服务|BOS\quad商品 \quad和)=1/1 P(服务∣BOS商品和)=1/1, P ( E O S ∣ B O S 商 品 和 服 务 ) = 1 / 1 P(EOS|BOS\quad商品\quad和\quad服务)=1/1 P(EOS∣BOS商品和服务)=1/1。
缺点
p
就越多改进方法
最经典和传统的改进方法,就是n
阶马尔科夫模型,也叫n
元语法或者n-gram
。
一个k
阶马尔科夫模型,假设序列中的下一个词的概率只依赖与其前k个词。用公式表述如下(i
为要预测的词的位置或索引,w
代表词):
P
(
w
i
+
1
∣
w
1
,
i
)
≈
P
(
w
i
+
1
∣
w
i
−
k
i
i
)
P\left(w_{i+1} \mid w_{1, i}\right) \approx P\left(w_{i+1} \mid w_{i-k_{i} i}\right)
P(wi+1∣w1,i)≈P(wi+1∣wi−kii)
那句子的概率估计就变为:
P
(
w
1
:
n
)
≈
∏
i
=
1
n
P
(
w
i
∣
w
i
−
k
:
i
−
1
)
P\left(w_{1: n}\right) \approx \prod_{i=1}^{n} P\left(w_{i} \mid w_{i-k: i-1}\right)
P(w1:n)≈i=1∏nP(wi∣wi−k:i−1)
语言模型的 缺点 ,时间步 t t t 的词需要考虑 t − 1 t-1 t−1步的词,其计算量随 t t t呈 指数增长。
输入:k
元语句(代码实现上是k个词向量的拼接)
输出:下一个词的概率分布P
示例:
p
(
C
(
w
i
)
∣
C
(
w
i
−
4
)
,
C
(
w
i
−
3
)
,
C
(
w
i
−
2
)
,
C
(
w
i
−
1
)
)
p\left(C(w_{i}) \mid C(w_{i-4}), C(w_{i-3}), C(w_{i-2}), C(w_{i-1})\right)
p(C(wi)∣C(wi−4),C(wi−3),C(wi−2),C(wi−1))
one-hot
表示词 示例one-hot
表示法存在诸多缺陷,这里使用稠密向量表示,加一个隐藏层C
进行映射。one-hot
表示法这时作为一个索引字典,可以通过映射矩阵对应到具体的词向量。 输入向量x
,输出结果y
的概率分布,两者的表达式如下所示,其中w
代表词向量,v
代表词到词嵌入的映射,LM
是一个多层感知机:
x = [ v ( w 1 ) ; v ( w 2 ) ; ⋯ ; v ( w k ) ] x=\left[v\left(w_{1}\right) ; v\left(w_{2}\right) ; \cdots ; v\left(w_{k}\right)\right] x=[v(w1);v(w2);⋯;v(wk)]
LM
(
w
1
;
k
)
=
softmax
(
h
W
2
+
b
2
)
h
=
g
(
x
W
1
+
b
1
)
x
=
[
v
(
w
1
)
;
v
(
w
2
)
;
⋯
;
v
(
w
k
)
]
图参考链接-Neural Network Language Model PyTorch实现
通常是一个LM的副产物,列举种类例子如:Word2vec, GloVe, FastText, ELMo, GPT, BERT。
Word2vec, GloVe, fasttext模型介绍-预训练词向量-blog链接
更多工业界一线火热的预训练模型获取和使用途径在huggingface
的文档中进行了详细的规整,使用Python调用,即可实现自动下载模型以及加载使用-链接
具体内容参考之前博文 word2vec
参考链接 -深度之眼NLP基础
参考链接 - Chris McCormick - Word2Vec Tutorial - The Skip-Gram Model
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。