词向量 Word Vectors#NLP系列课02

《人工智能Mix+》专栏系列文章

 

 

- 人类的语言 

人类在开始掌握语言之前,就已经知道利用声音高低强弱来表达感情和自己的观点。当一个群体里有人去世时,群体的其他成员就会用低沉的呜咽声来表达对死者的哀悼和纪念。后来,人类懂得了劳动,还发明了用来统一劳动节奏的号子和相互间交流和传递信息的呼喊……

 

人类语言具有信息功能社会功能。据估计,人类语言只有大约5000年的短暂历史。语言是人类变得强大的主要原因,而写作是另一件让人类变得强大的事情。语言使得知识能够在空间上传送到世界各地,并在时间上一代代传递的一种媒介。

但是,对比当今互联网的传播速度而言,人类语言显得缓慢(数据>语言)。然而,只需人类语言的少量信息,就可以表达整个视觉场景。这就是自然语言如此迷人的原因(言简意赅、信息量)。

 

 

- 我们是如何表达一个词的意思的?

How do we represent the meaning of a word?

 

  • 用一个词、词组等表示的概念(跨界这个词的概念)

  • 用语言、符号等来表达的想法(?)

  • 表达在作品、艺术等方面的思想(Mixlab这个词的思想)

 

在计算机科学中,理解meaning最普遍的一种方式是:

 

signifier (symbol) ⟺ signified (idea or thing)

= denotational semantics (指称语义)

 

- 指称语义

在计算机科学中,指称语义(英语:Denotational semantics)是通过构造表达其语义的或意义的数学对象来形式化计算机系统的语义的一种方法。

 

计算机科学对语言研究(包括对自然语言和对人工语言)大致三个向:语法syntax、语义semantics、语用pragmatics

*语法研究语言的形态结构

*语义研究语言与其所指代对象的联系

*语用研究语言和其使用者之间的联系(从使用者角度、按使用者的需求对语料进行差异化)

 

 

- KnowYourNyms

KnowYourNyms 一种用于学习语义关系的web网络游戏

http://www.know-your-nyms.com

https://github.com/rossmechanic/know_your_nyms/

在为用户提供有吸引力体验的同时,应用程序可以收集大量可用于改进语义关系分类器的数据。数据还很有广度地告诉我们人们如何察觉词之间的关系,为心理学和语言学研究提供有用的见解。

一个一个问题的询问用户,用户做填空题,最后会把所用用户回答这个问题的答案统计结果呈现出来。

 

这个系统的架构如下所示:

 

 

- WordNet

WordNet, 一个包含同义词(synonym)和上位词(hypernyms,“is a”关系) 的字典。

 

 

WordNet的不足之处:

*忽略了细微差别

例如“proficient”被列为“good”的同义词。这只在某些上下文中是正确的

*难以持续更新

例如 wicked, badass, nifty, wizard, genius, ninja, bombest

*主观的,需要人类手工来创造和调整

*无法计算单词相似度

 

 

- 在传统的自然语言处理中,我们把词语看作离散的符号

Representing words as discrete symbols

 

单词可以通过one-hot vectors来表示。one-hot vectors 又称独热编码、一位有效编码。其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。

 

简单来说,只有一个1,其余均为0的稀疏向量,例如:

 

motel = [0 0 0 0 0 0 0 0 0 0 1 0 0 0 0]

hotel = [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0]

 

向量维度=词汇量(如500000)

 

特点是所有向量是正交的,没有关于相似性的概念,并且向量维度很容易过大。

 

 

- 现代NLP的第一性原理

第一性原理最早来自于古希腊哲学家亚里士多德,他说:“在每个系统探索中存在第一性原理。第一性原理是基本的命题和假设,不能被省略和删除,也不能被违反。”

 

 

Distributional semantics :一个单词的意思是由经常出现在它附近的单词给出的。

  • “You shall know a word by the company it keeps” (J. R. Firth 1957: 11)

  • 现代统计NLP最成功的理念之一

  • “物以类聚,人以群分”

 

构建方法:

  • 当一个单词w出现在文本中时,它的上下文是出现在其附近的一组单词(在一个固定大小的窗口中)

  • 使用w的许多上下文来构建w的表示

 

banking这个单词的含义由窗口中的其他单词来共同表达。

 

 

- Word2vec

 

我们为每个单词构建一个 密集 的向量,使其与出现在相似上下文中的单词向量相似。词向量(word vectors)有时被称为词嵌入(word embeddings)或词表示(word representations),它们是分布式表示(distributed representation)。

 

例如:

banking = [ 0.286 0.792 −0.177 −0.107 0.109 −0.542 0.349 0.271 ]

 

计算过程如下:

*我们有大量的文本 (corpus means 'body' in Latin. 复数为corpora)

*固定词汇表中的每个单词都由一个向量表示

  • *文本中的每个位置 t,其中有一个中心词 c和上下文(“外部”)单词 o

  • *使用 c 和 o 的 词向量的相似性 来计算给定 c 的 o 的 概率 (反之亦然)

  • *不断调整词向量来最大化这个概率

详情可以了解论文:Word2vec (Mikolov et al. 2013)

 

 

- 课后练习:

- 掌握gensim的word2vec

 

- 相关阅读:

智能时代之前,我们一直在量化世界

指称语义:语言发展的一种方法论

Denotational Semantics: A Methodology for Language Development

https://t.zsxq.com/Y3BmEAQ

 

机器学习:数据预处理之独热编码(One-Hot)

https://imooc.com/article/35900

 

KnowYourNyms? A Game of Semantic Relationships

https://t.zsxq.com/EiMn276

 

Word2vec (Mikolov et al. 2013)

https://arxiv.org/pdf/1301.3781.pdf

  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值