CS224N NLP 学习笔记-----word vector

语言的妙处

老师列举了一些案例,个人看法可以概括成两点:
1. 语言的不确定性。
我们日常生活中人与人的交流,建立在human language的基础之上,一句话可以有不同的单词,语气,表达的含义也是多种多样的。如果把这些word看成是一个又一个的signals,实际上这个signal又包括context(上下文)和subtext(潜在含义)。不同的人对于同一个句子可能也会有不一样的理解。也就是说,可以把日常的交流看作是一种概率推测
2. human computer network 人机计算机网络
AI可以理解为我们想要机器去学习human language。我们都知道人类语言的传播速度是slow的,传播的信息是有限的,但是语言所蕴含的vision和信息量又是极大的。所有的信息压缩在我们的大脑,通过简单的word的传递,我们就能互相交流,学习,完成一系列社会行为。(有点混乱,大概就是说language is interesting and useful thing)

一个word的meaning 代表什么

word的意思(Meaning)指两个方面,一方面是单词本身的意思(Representation for words),另一方面是使用单词想要表达的意思(Express by using words);meaning == idea,在编程语言中,也可以把它理解成一种指称语义 denotational semantics(是通过构造表达其语义的(叫做指称(denotation)或意义的)数学对象来形式化计算机系统的语义的一种方法)

如何在计算机中使用并具有meaning

理解词语meaning之间的相关性和关系是解决方法。一种常用方法,就是从NLTK中import wordnet(包含了word的meaning的relationships),同义词集等信息。 存在的缺点就是不能体现出word在某些context中的变化和缺失了word之间的一些细微的差别。wordnet只是人工同义词集合等,不能计算word相似度,需要人为操作。

Representing words as discrete symbols

在传统的NLP中,人们把words处理成离散值,用one-hot向量表示。也可以被称为localist representation,这样会形成一个稀疏的vector,一般一个词汇表中word的数量就是这个vector的维度。这种方法当然有缺点,因为这些向量之间是两两正交的,所以无法体现出相似度。2005年Google的解决办法是构建单词相似度表,这当然也不是最好的解决方法。较好的解决方法就是用另外一组vector直接体现出相似度信息。

Representing words by their context

分布式语义(Distributional semantics),就是这种方法。它通过一个单词周围的context来表现一个单词的meaning,从而组成一个较低维度的密集的vector,这个vector恰好可以体现出word之间的相似度。我们现在通常将其称为word embedding

word2vec

在这里插入图片描述

word2vec的实现

大量的文本语料库,选定中心词,用中心词的周围window内(一般可以定义为10)来表示出中心词的vector,用context和中心词的vector计算出context给出中心词的概率,先随机初始化vector,通过10亿次的迭代优化,最终求出最大概率。这是的vector就是我们想要的word的表示形式。

在这里插入图片描述
唯一的Thera参数,就是vector
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分子的点积是体现两个vector相似度的一个方法,相同的地方,就会得到比较大的结果。exp是为了保证不要出现负数值。除以T,是为了保证不要受到语料库大小的影响,体现的应该是一个平均化的表现。
在这里插入图片描述
每一个word其实都有两个vector,一个是作为中心词时的vector,一个是作为context时的vector。最后我们使用SGD的方法优化训练,得到最优的参数Thera。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值