关键词: 自然语言处理, 词向量, 奇异值分解, Skip-gram, 连续词袋(CBOW), 负抽样
一、简介
自然语言处理任务
简单: 拼写检查, 关键词搜索, 找同义词
中度: 从网页、文件解析信息
困难: 机器翻译, 语义解析, 指代, 问题回答
使用词向量可以把词编码成向量然后通过计算距离来判断相似性,可使用Jaccard, Cosine, Euclidean等
二、词向量
英语有1300万个标志
把标志编码成向量代表词空间中的一个点
存在N维空间N远远小于1300万并能编码所有语义
语义维度可代表时态,单复数,性别等。
one-hot vector
三、基于SVD方法
找到词嵌入
首先遍历大量数据并累加词同时出现数量,以矩阵X的形式,然后对X执行奇异值分解得到USV_T分解,然后使用U的行作为词嵌入。X的选择方式有
1、词-文本矩阵
我们首先大胆猜测相关的词大多出现在同一文本中
遍历数十亿文本,每次词i在文本j中出现时,我们对X _ij加1
这个矩阵会非常巨大,并随文本数量增长
2、基于窗口的同时出现矩阵
逻辑与之前相同,但这里只计算一定规模窗口内围绕特定词出现词数的统计,用这种方法计算语料集中的所有词。
举例,语料集有3个句子,窗口规模为1
得到矩阵
然后对X进行SVD,根据需要取k个奇异值
得到的子矩阵就是我们的词嵌入矩阵,这样我们得到每个词的k维表征。
上述两种方法给出的词向量足以编码语义和语法信息,但存在许多问题:
矩阵维度频繁改变(新词的加入和语料规模改变)
矩阵非常稀疏,大多数词不同时出现
矩阵维度很高,大约10的6次方×10的6次方
平方训练成本高,执行SVD
对X需要进行处理以解决词频率的极度不平衡
解决方法有:
忽略功能词如the he has等
ramp window, 根据文本中词间距离,给同时出现计数赋权重
使用pearson相关性,设置负计数而不是简单计数
基于迭代的方法能更好的解决上述许多问题。