初中学校网站如何做,兰州新增94个高风险区,中信建发公司简介,网站app建站多少钱文章目录目录1.词嵌入产生的背景1.1 NLP关键#xff1a;语言的表示1.2 NLP词的表示方法类型1.2.1 独热表示one-hot1.2.2 词的分布式表示distributed representation1.3 NLP中的语言模型1.4 词的分布表示1.4.1 基于矩阵的分布表示1.4.2 基于聚类的分布表示1.4.3 基于神经网络的…
文章目录目录1.词嵌入产生的背景1.1 NLP关键语言的表示1.2 NLP词的表示方法类型1.2.1 独热表示one-hot1.2.2 词的分布式表示distributed representation1.3 NLP中的语言模型1.4 词的分布表示1.4.1 基于矩阵的分布表示1.4.2 基于聚类的分布表示1.4.3 基于神经网络的分布表示词嵌入word embedding2.什么是词嵌入技术2.1 概念2.2 神经网络语言模型与word2vec2.2.1 神经网络语言模型2.2.2 word2vec与CBOW、Skip-gram2.2.3 word embedding理解3.常用的词嵌入技术有哪些3.1 word2vec GloVe3.2 FastText ELMo目录
1.词嵌入产生的背景
1.1 NLP关键语言的表示
我们知道如果我们需要使用计算机去处理一些信息则必须对这个问题进行数学建模。自然语言处理也是一样我们如何对我们的文本进行数学建模呢我们来看一下其他领域是如何处理的。 我们看看图像和语音是怎么表示数据的 在语音中用音频频谱序列向量所构成的matrix作为前端输入喂给NN进行处理good在图像中用图片的像素构成的matrix展平成vector后组成的vector序列喂给NN进行处理good那在自然语言处理中呢噢你可能知道或者不知道将每一个词用一个向量表示出来想法是挺简单的对事实上就是这么简单然而真有这么简单吗可能没这么简单。
有人提到图像、语音属于比较自然地低级数据表示形式在图像和语音领域最基本的数据是信号数据我们可以通过一些距离度量判断信号是否相似在判断两幅图片是否相似时只需通过观察图片本身就能给出回答。而语言作为人类在进化了几百万年所产生的一种高层的抽象的思维信息表达的工具其具有高度抽象的特征文本是符号数据两个词只要字面不同就难以刻画它们之间的联系即使是“麦克风”和“话筒”这样的同义词从字面上也难以看出这两者意思相同语义鸿沟现象可能并不是简单地一加一那么简单就能表示出来而判断两个词是否相似时还需要更多的背景知识才能做出回答。
那么据上是不是可以自信地下一个结论呢如何有效地表示出语言句子是决定NN能发挥出强大拟合计算能力的关键前提
1.2 NLP词的表示方法类型
按照现今目前的发展词的表示分为独热表示one-hot、分布式表示。
1.2.1 独热表示one-hot
独热编码和我们平时处理结构化数据中的类别型的数据一样。假设有一个大的词典词的数目为N则我们对每个词表示成一个N为的向量只有在该词出现在词典的位置处的值为1其余位置处的值为0.
每个词都是茫茫 0 海中的一个 1。这种 One-hot Representation 如果采用稀疏方式存储会是非常的简洁也就是给每个词分配一个数字 ID。比如刚才的例子中话筒记为 3麦克记为 8假设从 0 开始记。如果要编程实现的话用 Hash 表给每个词分配一个编号就可以了。这么简洁的表示方法配合上最大熵、SVM、CRF 等等算法已经很好地完成了 NLP 领域的各种主流任务。
现在我们分析他的不当处。1、向量的维度会随着句子的词的数量类型增大而增大2、任意两个词之间都是孤立的根本无法表示出在语义层面上词语词之间的相关信息而这一点是致命的。
1.2.2 词的分布式表示distributed representation
统的独热表示 one-hot representation仅仅将词符号化不包含任何语义信息。如何将语义融入到词表示中Harris 在 1954 年提出的分布假说 distributional hypothesis为这一设想提供了理论基础上下文相似的词其语义也相似。Firth 在 1957 年对分布假说进行了进一步阐述和明确词的语义由其上下文决定 a word is characterized by thecompany it keeps。
到目前为止基于分布假说的词表示方法根据建模的不同主要可以分为三类基于矩阵的分布表示、基于聚类的分布表示和基于神经网络的分布表示。尽管这些不同的分布表示方法使用了不同的技术手段获取词表示但由于这些方法均基于分布假说它们的核心思想也都由两部分组成一、选择一种方式描述上下文二、选择一种模型刻画某个词下文称“目标词”与其上下文之间的关系。
1.3 NLP中的语言模型
语言模型即对语言建模的模型。NLP中主要包括文法语言模型和统语言模型。其中文法语言模型因为语法的复杂性很难建模用的比较少。目前NLP中用的比较多的是统计语言模型。
统计语言模型 统计语言模型把语言词的序列看作一个随机事件并赋予相应的概率来描述其属于某种语言集合的可能性。给定一个词汇集合 V对于一个由 V 中的词构成的序列S ⟨w1, · · · , wT ⟩ ∈ Vn统计语言模型赋予这个序列一个概率P(S)来衡量S 符合自然语言的语法和语义规则的置信度。
用一句简单的话说就语言模型就是计算一个句子的概率大小的这种模型。有什么意义呢一个句子的打分概率越高越说明他是更合乎人说出来的自然句子。
就是这么简单。常见的统计语言模型有N元文法模型N-gram Model最常见的是unigram model、bigram model、trigram model等等。形式化讲统计语言模型的作用是为一个长度为 m 的字符串确定一个概率分布 P(w1; w2; :::; wm)表示其存在的可能性其中 w1 到 wm 依次表示这段文本中的各个词。一般在实际求解过程中通常采用下式计算其概率值 同时通过这些方法均也可以保留住一定的词序信息这样就能把一个词的上下文信息capture住。
1.4 词的分布表示
假设语言满足一个分布是以一定的概率生成某些词的。
1.4.1 基于矩阵的分布表示
基于矩阵的分布表示通常又称为分布语义模型在这种表示下矩阵中的一行就成为了对应词的表示这种表示描述了该词的上下文的分布。由于分布假说认为上下文相似的词其语义也相似因此在这种表示下两个词的语义相似度可以直接转化为两个向量的空间距离。
常见到的Global Vector 模型 GloVe模型是一种对“词-词”矩阵进行分解从而得到词表示的方法属于基于矩阵的分布表示。
1.4.2 基于聚类的分布表示
该方法以根据两个词的公共类别判断这两个词的语义相似度。最经典的方法是布朗聚类Brown clustering
1.4.3 基于神经网络的分布表示词嵌入word embedding
基于神经网络的分布表示一般称为词向量、词嵌入word embedding或分布式表示distributed representation
神经网络词向量表示技术通过神经网络技术对上下文以及上下文与目标词之间的关系进行建模。由于神经网络较为灵活这类方法的最大优势在于可以表示复杂的上下文。在前面基于矩阵的分布表示方法中最常用的上下文是词。如果使用包含词序信息的 n-gram 作为上下文当 n 增加时 n-gram 的总数会呈指数级增长此时会遇到维数灾难问题。而神经网络在表示 n-gram 时可以通过一些组合方式对 n 个词进行组合参数个数仅以线性速度增长。有了这一优势神经网络模型可以对更复杂的上下文进行建模在词向量中包含更丰富的语义信息。
2.什么是词嵌入技术
词嵌入是一类将词映射为低维稠密向量的技术统称。最近比较火的是谷歌开源的word2vec技术。
2.1 概念
基于神经网络的分布表示又称为词向量、词嵌入神经网络词向量模型与其它分布表示方法一样均基于分布假说核心依然是上下文的表示以及上下文与目标词之间的关系的建模。
前面提到过为了选择一种模型刻画某个词下文称“目标词”与其上下文之间的关系我们需要在词向量中capture到一个词的上下文信息。同时上面我们恰巧提到了统计语言模型正好具有捕捉上下文信息的能力。那么构建上下文与目标词之间的关系最自然的一种思路就是使用语言模型。从历史上看早期的词向量只是神经网络语言模型的副产品。
2001年 Bengio 等人正式提出神经网络语言模型 Neural Network Language Model NNLM该模型在学习语言模型的同时也得到了词向量。所以请注意一点词向量可以认为是神经网络训练语言模型的副产品。
2.2 神经网络语言模型与word2vec
2.2.1 神经网络语言模型
a) Neural Network Language Model NNLM b) Log-Bilinear Language Model LBL c) Recurrent Neural Network based Language ModelRNNLM d) Collobert 和 Weston 在2008 年提出的 CW 模型 e) Mikolov 等人提出了 CBOW Continuous Bagof-Words和 Skip-gram 模型
2.2.2 word2vec与CBOW、Skip-gram 2.2.3 word embedding理解
现在词向量既能够降低维度又能够capture到当前词在本句子中上下文的信息表现为前后距离关系那么我们对其用来表示语言句子词语作为NN的输入是非常自信与满意的。
另外一点很实用的建议在你做某一项具体的NLP任务时如你要用到词向量那么我建议你要么1、选择使用别人训练好的词向量注意得使用相同语料内容领域的词向量要么2、自己训练自己的词向量。我建议是前者因为……坑太多了。
3.常用的词嵌入技术有哪些
3.1 word2vec GloVe
在过去的五年里已经提出了大量可行的词嵌入的方法。 最常用的模型是word2vec和GloVe它们都是基于分布假设 distributional hypothesis的无监督方法出现在相似语境中的词往往具有相似的含义。 Word2Vechttps://github.com/dav/word2vec/ GloVehttps://nlp.stanford.edu/projects/glove/
3.2 FastText ELMo
虽然有些研究工作通过结合对语义或句法知识的监督来增强这些无监督的方法但在2017-2018年纯粹的无监督方法获得了有趣的进展最著名的是FastTextword2vec的扩展和ELMo较先进的上下文词向量。
FastText FastText由Tomas Mikolov团队提出word2vec框架也是他们在2013年提出的FastText促进了对于通用词嵌入研究的爆炸式增长。
FastText对原始word2vec向量的主要改进是包含基于字符的n-gram模型它允许计算没有出现在训练数据中的单词表示“词外”字。
FastText矢量训练速度超快可在157种语言的Wikipedia和Crawl训练中使用。 他们是一个很好的基准。
ELMo 最近深层语境化词表征ELMo在较好的词嵌入技术基础上有了显著地提升。 它们由艾伦人工智能研究所开发将于6月初在NAACL 2018展出。
ELMo知道很多关于文字的上下文
在ELMo中每个单词被赋予一个表征这个表征是它们所属的整个语料库句子的函数。 嵌入是从双层双向语言模型LM的内部状态计算出来的因此名为“ELMo”Embeddings from Language Models从语言模型嵌入。
ELMo的特点 ELMo的输入是字符而不是单词。 因此可以利用子字词单元来计算有意义的表征即使对于词典外的词如FastText也是如此。 ELMo是由biLMs若干层激活的连接。 语言模型的不同层对单词上的不同类型信息进行编码例如词语标注由biLSTM的较低层完成预测而词义消歧在较高层中更好地编码。 把所有层连接起来可以自由组合各种文字表征以提高下游任务的性能表现。