word2vec工具学习笔记

今天是第一次听说这个工具,本来是为了解决非目标客户的问题,但是要从头了解这个内容,所以边找资料边记录一下!

一、简介

Word2vec,是为一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系,该向量为神经网络之隐藏层。

二、统计语言的建模技术

n-gram、神经网络以及 log_linear 模型等,在对自然语言进行建模的过程中,会出现维数灾难、词语相似性、模型泛化能力以及模型性能等问题。Word2vec 可以根据给定的语料库,通过优化后的训练模型快速有效地将一个词语表达成向量形式,为自然语言处理领域的应用研究提供了新的工具。Word2vec依赖skip-grams或连续词袋(CBOW)来建立神经词嵌入。

三、依赖

词袋模型CBOW (Continuous Bag-of-Words Model)

此模型下,像是句子或是文件这样的文字可以用一个袋子装着这些词的方式表现,这种表现方式不考虑文法以及词的顺序。最近词袋模型也被应用在计算机视觉领域。词袋模型被广泛应用在文件分类,词出现的频率可以用来当作训练分类器的特征。

Skip-gram 模型(Continuous Skip-gram Model)

第一,语料必须充分。一方面词典的词量要足够大,另一方面要尽可能多地包含反映词语之间关系的句子,例如,只有“鱼在水中游”这种句式在语料中尽可能地多,模型才能够学习到该句中的语义和语法关系,这和人类学习自然语言一个道理,重复的次数多了,也就会模仿了; 第二,语料必须准确。 也就是说所选取的语料能够正确反映该语言的语义和语法关系,这一点似乎不难做到,例如中文里,《人民日报》的语料比较准确。

四、自然语言处理(NLP)

词嵌入是自然语言处理(NLP)中语言模型与表征学习技术的统称。概念上而言,它是指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。词嵌入的方法包括人工神经网络、对词语同现矩阵降维、概率模型以及单词所在上下文的显式表示等。在底层输入中,使用词嵌入来表示词组的方法极大提升了NLP中语法分析器和文本情感分析等的效果。

五、统计语言模型

统计语言模型是用于刻画一个句子出现概率的模型。给定一个由 n 个词语按顺序组成的句子 ,则概率 即为统计语言模型。通过贝叶斯公式,可以将概率 进行分解。要计算一个句子出现的概率,只需要计算出在给定上下文的情况下,下一个词为某个词的概率即可,即 。当所有条件概率 都计算出来后,通过连乘即可计算出 。所以,统计语言模型的关键问题在于找到计算条件概率 的模型。

六、词向量

词向量具有良好的语义特性,是表示词语特征的常用方式。词向量每一维的值代表一个具有一定的语义和语法上解释的特征。所以,可以将词向量的每一维称为一个词语特征。词向量具有多种形式,distributed representation 是其中一种。一个 distributed representation 是一个稠密、低维的实值向量。distributed representation 的每一维表示词语的一个潜在特征,该特 征捕获了有用的句法和语义特性。可见 ,distributed representation 中的 distributed 一词体现了词向量这样一个特点:将词语的不同句法和语义特征分布到它的每一个维度去表示。

基于神经网络的分布表示一般称为词向量、词嵌入( word embedding)或分布式表示( distributed representation)。核心依然是上下文的表示以及上下文与目标词之间的关系的建模。

1. 熊富林,邓怡豪,唐晓晟.Word2vec的核心架构及其应用[J].南京师范大学学报(工程技术版),2015,15(01):43-48.

2.  周练.Word2vec的工作原理及应用探究[J].科技情报开发与经济,2015,25(02):145-148.

七、炼数成金笔记摘抄

1、词的独热表示

到目前为止最常用的词表示方法是 One-hot Representation,这种方法把每个词表示为一个很长的向量。这个向量的维度是词表大小,其中绝大多数元素为 0,只有一个维度的值为 1,这个向量就代表了当前的词。

“可爱”表示为 [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ...]

“面包”表示为 [0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 ...]

每个词都是茫茫 0 海中的一个 1。这种 One-hot Representation 如果采用稀疏方式存储,会是非常的简洁:也就是给每个词分配一个数字 ID。比如刚才的例子中,可爱记为 3,面包记为 8(假设从 0 开始记)。

缺点分析:

1、向量的维度会随着句子的词的数量类型增大而增大;

2、任意两个词之间都是孤立的,无法表示语义层面上词汇之间的相关信息,而这一点是致命的。

2、词的分布式表示

传统的独热表示仅仅将词符号化,不包含任何语义信息。如何将语义融入到词表示中?Harris 在 1954 年提出的“分布假说”为这一设想提供了理论基础:上下文相似的词,其语义也相似。Firth 在 1957年对分布假说进行了进一步阐述和明确:词的语义由其上下文决定。

以(CBOW)为例,如果有一个句子“the cat sits one the mat”,在训练的时候,将“the cat sits one the”作为输入,预测出最后一个词是“mat”。 

我们可以将我们的任务拆解成两部分:

一、选择一种方式描述上下文;

二、选择一种“模型”刻画某个词(即“目标词”)与其上下文之间的关系。

看完了大致有个模糊的印象,对于word2vec能干什么,具体怎么做没看明白,明天再翻资料试试!

你可能感兴趣的:(word2vec工具学习笔记)