NLP深度学习 —— CS224学习笔记 1

来源:互联网 发布:薄膜蒸发器js xlhg 编辑:程序博客网 时间:2024/06/05 23:56

关键词: 自然语言处理, 词向量, 奇异值分解, 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相关性,设置负计数而不是简单计数

基于迭代的方法能更好的解决上述许多问题。

原创粉丝点击