Questions tagged «word-embeddings»

词嵌入是NLP中一组语言建模和特征学习技术的总称,其中词相对于词汇量,被映射到低维空间中的实数向量。

2
什么是神经网络中的嵌入层?
在许多神经网络库中,都有“嵌入层”,例如Keras或Lasagne中。 尽管阅读了文档,但我不确定我是否了解它的功能。例如,在Keras文档中说: 将正整数(索引)转换为固定大小的密集向量,例如。[[4],[20]]-> [[0.25,0.1],[0.6,-0.2]] 知识渊博的人可以解释它的作用以及何时使用吗? 编辑:关于文档中的粘贴,没有太多可从文档中粘贴,因此是我的问题。我不了解它所做的转换,也不知道为什么要使用它。 无论如何,这是在Keras中解释的方式: 嵌入 keras.layers.embeddings.Embedding(input_dim,output_dim,init ='uniform',input_length = None,weights = None,W_regularizer = None,W_constraint = None,mask_zero = False)将正整数(索引)转换为固定大小的密集向量,例如。[[4],[20]]-> [[0.25,0.1],[0.6,-0.2]] 输入形状:2D张量,形状为:(nb_samples,sequence_length)。输出形状:具有以下形状的3D张量:(nb_samples,sequence_length,output_dim)。参数: input_dim:int> =0。词汇量,即。输入数据中出现1+最大整数索引。output_dim:int> =0。密集嵌入的尺寸 这就是千层面的解释: 单词嵌入层。输入应为整数类型Tensor变量。 参数:传入:一个Layer实例或一个元组 送入该层的层,或预期的输入形状。 input_size:整数 不同嵌入的数量。最后的嵌入将具有索引input_size-1。 output_size:整数 每个嵌入的大小。 W:Theano共享变量,表达式,numpy数组或可调用 嵌入矩阵的初始值,表达式或初始化程序。这应该是形状为(input_size,output_size)的矩阵。有关更多信息,请参见lasagne.utils.create_param()。 例子 >>> from lasagne.layers import EmbeddingLayer, InputLayer, get_output >>> import theano >>> x = T.imatrix() …

2
Keras的“嵌入”层如何工作?
需要了解Keras库中“嵌入”层的工作方式。我在Python中执行以下代码 import numpy as np from keras.models import Sequential from keras.layers import Embedding model = Sequential() model.add(Embedding(5, 2, input_length=5)) input_array = np.random.randint(5, size=(1, 5)) model.compile('rmsprop', 'mse') output_array = model.predict(input_array) 它给出以下输出 input_array = [[4 1 3 3 3]] output_array = [[[ 0.03126476 0.00527241] [-0.02369716 -0.02856163] [ 0.0055749 0.01492429] [ 0.0055749 0.01492429] …

3
将单词嵌入应用于整个文档,以获得特征向量
如何使用词嵌入将文档映射到适合于监督学习的特征向量? 甲字嵌入每个单词映射到一个向量,其中是一些不太大数目(例如,500)。流行的词嵌入包括word2vec和Glove。v ∈ [R d dwwwv∈Rdv∈Rdv \in \mathbb{R}^dddd 我想应用监督学习对文档进行分类。我目前正在使用单词袋表示法将每个文档映射到特征向量,然后应用现成的分类器。我想用一个基于现有的预训练词嵌入的词替换词袋特征向量,以利用词嵌入中包含的语义知识。有标准的方法吗? 我可以想象出一些可能性,但是我不知道是否有最有意义的东西。我考虑过的候选方法: 我可以计算文档中每个单词的向量,然后将它们平均。但是,这似乎可能会丢失很多信息。例如,使用词袋表示法,如果有几个词与分类任务高度相关,而大多数词都不相关,则分类器可以轻松地学习到;如果我将文档中所有单词的向量平均,分类器就没有机会了。 将所有单词的向量连接起来是行不通的,因为这不会导致固定大小的特征向量。同样,这似乎是一个坏主意,因为它将对单词的特定位置过于敏感。 我可以使用单词嵌入将所有单词的词汇聚类为一组固定的聚类,例如1000个聚类,其中我在向量上使用余弦相似度作为单词相似度的度量。然后,我可以有一个词包,而不是词包:我提供给分类器的特征向量可以是1000个向量,其中第个分量计算文档中的词数是集群一部分。我iiiiii 给定单词,这些单词嵌入使我能够计算出前20个最相似的单词及其相似度得分的集合。我可以使用它来适应类似词袋的特征向量。当我看到这个词,除了增加相应字元素由,我还可以增加对应的字元素通过,增加对应的字元素通过,等等。w 1,… ,w 20 s 1,… ,s 20 w w w 1 w 1 s 1 w 2 s 2wwww1,…,w20w1,…,w20w_1,\dots,w_{20}s1,…,s20s1,…,s20s_1,\dots,s_{20}wwwwww111w1w1w_1s1s1s_1w2w2w_2s2s2s_2 是否有任何特定的方法可能对文档分类有效? 我不是在寻找para2vec或doc2vec;这些需要在大型数据语料库上进行培训,而我没有大型数据语料库。相反,我想使用现有的单词嵌入。


3
R:尽管数据集中没有NaN,随机森林仍在“外部函数调用”错误中抛出NaN / Inf [关闭]
我正在使用插入符号在数据集上运行交叉验证的随机森林。Y变量是一个因素。我的数据集中没有NaN,Inf或NA。但是,当运行随机森林时,我得到 Error in randomForest.default(m, y, ...) : NA/NaN/Inf in foreign function call (arg 1) In addition: There were 28 warnings (use warnings() to see them) Warning messages: 1: In data.matrix(x) : NAs introduced by coercion 2: In data.matrix(x) : NAs introduced by coercion 3: In data.matrix(x) : NAs introduced by …

1
是否已复制使用段落向量进行情感分析的最新技术成果?
Le和Mikolov 在ICML 2014论文“ 句子和文档的分布式表示 ”中给我留下了深刻的印象。他们描述的技术称为“段落向量”,它基于word2vec模型的扩展来学习任意长的段落/文档的无监督表示。该论文报告了使用这种技术进行情感分析的最新性能。 我希望在其他文本分类问题上评估此技术,以替代传统的词袋表示法。但是,我在word2vec Google小组的一个线程中遇到了第二个作者的帖子,这让我停顿了一下: 在夏季,我尝试重现Quoc的结果。我可以使IMDB数据集的错误率达到9.4%-10%左右(取决于文本规范化的程度)。但是,我无法达到Quoc报告的结果(错误7.4%,那是一个很大的差异)。当然,我们还向Quoc询问了代码;他答应出版,但到目前为止没有任何反应。...我开始认为Quoc的结果实际上是不可复制的。 有人成功复制了这些结果吗?

1
负采样在word2vec中如何工作?
我一直在努力理解word2vec中否定采样的概念。我无法消化[负]采样的想法。例如,在米科洛夫(Mikolov)的论文中,负采样期望被表示为 logσ(⟨w,c⟩)+k⋅EcN∼PD[logσ(−⟨w,cN⟩)].log⁡σ(⟨w,c⟩)+k⋅EcN∼PD[log⁡σ(−⟨w,cN⟩)].\log \sigma(\langle w,c\rangle ) + k \cdot \mathbb E_{c_N\sim PD}[\log\sigma(−\langle w,c_N\rangle)]. 我了解左边的,但是我无法理解对否定的词-语境对采样的想法。logσ(⟨w,c⟩)log⁡σ(⟨w,c⟩)\log \sigma(\langle w,c\rangle)




3
Word2Vec的跳过语法模型如何生成输出向量?
我在理解Word2Vec算法的跳过语法模型时遇到问题。 在连续词袋中,很容易看到上下文词如何在神经网络中“拟合”,因为您基本上是在将每个一次性编码表示形式与输入矩阵W相乘后对它们进行平均。 但是,在skip-gram的情况下,您只能通过将一热点编码与输入矩阵相乘来获得输入词向量,然后假设通过将上下文词乘以C(=窗口大小)来表示上下文词输入矢量表示,输出矩阵为W'。 我的意思是说,词汇量为,编码为,输入矩阵,作为输出矩阵。给定单词具有一词热编码和上下文单词和(具有热代表和),如果将乘以输入矩阵,则得到,现在如何从中生成得分矢量?Ñ w ^ ∈ [R V × Ñ W¯¯ ' ∈ [R Ñ × V瓦特我X 我瓦特Ĵ 瓦特ħ X Ĵ X ħ X 我 W¯¯ ħ:= X Ť 我 W¯¯ = w ^ (我,⋅ ) ∈ [R Ñ ÇVVVNNNW∈RV×NW∈RV×NW \in \mathbb{R}^{V\times N}W′∈RN×VW′∈RN×VW' \in \mathbb{R}^{N\times V}wiwiw_ixixix_iwjwjw_jwhwhw_hxjxjx_jxhxhx_hxixix_iWWWh:=xTiW=W(i,⋅)∈RNh:=xiTW=W(i,⋅)∈RN{\bf h} := x_i^TW …

1
从性能上考虑词嵌入算法
我试图将大约6000万个短语嵌入向量空间,然后计算它们之间的余弦相似度。我一直在使用sklearn's CountVectorizer和一个自定义的生成标记器的函数,该函数会产生字母和二字组。事实证明,要获得有意义的表示,我必须允许大量列,行数成线性。这会导致矩阵稀疏,从而导致性能下降。如果只有大约10,000列,那还不错,我认为这对于单词嵌入来说是相当合理的。 我正在考虑尝试使用Google,word2vec因为我敢肯定它会产生低得多的尺寸和更密集的嵌入。但是在此之前,还有其他嵌入值得一看吗?关键要求是能够扩展大约6000万个短语(行)。 我对词嵌入领域还很陌生,因此任何建议都将对您有所帮助。 我还应该补充一点,我已经在使用奇异值分解来提高性能。


1
在SVD之前在单词共生矩阵上应用逐点互信息的利弊是什么?
生成单词嵌入的一种方法如下(mirror): 获得一个语料库,例如“我喜欢飞行。我喜欢NLP。我喜欢深度学习。” 从中建立单词共现矩阵: 在上执行SVD ,并保留U 的前列。XXXķķk 子矩阵每一行都是该行表示的单词的单词嵌入(行1 =“ I”,行2 =“ like”,…)。ü1 : | V| ,1:kü1个:|V|,1个:ķU_{1:|V|,1:k} 在第2步和第3步之间,有时会应用逐点相互信息(例如A. Herbelot和EM Vecchi。2015。构建共享世界:映射分布到模型理论语义空间。)在2015年自然语言处理经验方法会议上的发言(葡萄牙里斯本)。 在SVD之前在单词共生矩阵上应用逐点互信息的利弊是什么?

2
关于连续词袋的问题
我在理解这句话时遇到了麻烦: 首先提出的体系结构类似于前馈NNLM,其中去除了非线性隐藏层,并为所有单词共享了投影层(而不仅仅是投影矩阵)。因此,所有单词都投影到同一位置(对它们的向量进行平均)。 什么是投影层与投影矩阵?说所有单词都投射到相同位置意味着什么?为什么这意味着它们的向量是平均的? 该句子是向量空间中单词表示的有效估计的第3.1节的第一部分(Mikolov等,2013)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.