问题标签 [word-embedding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
130 浏览

text - skflow 将预训练词嵌入加载到 text_classification_cnn

这是关于卷积文本分类的 skflow 示例

当我调试这段代码时,我无法解释它是如何工作的。如何使用预训练的词嵌入来代替它?

0 投票
1 回答
835 浏览

tensorflow - Tensorflow 在学习嵌入时限制批量大小

我正在尝试学习 HMM 产生的一系列状态的状态嵌入,类似于 tensorflow Vector Representation of Words如何为文本序列执行此操作。

我的问题是这个 HMM 的“词汇”只有 12 个不同的状态。当我使用比这个词汇量大的批次运行我的代码时,Tensorflow 似乎不喜欢它。例如,尝试以 14 的批大小对其进行训练会产生错误:

这次检查背后的动机是什么?

0 投票
1 回答
1764 浏览

machine-learning - 使用负采样实现 word2vec

我正在尝试使用 skip-gram 实现 word2vec 的前向和反向传播。我是神经网络的新手,但据我了解,事情是这样的:

  1. 取输入向量和随机初始化权重矩阵的点积
  2. 激活(sigmoid 还是 softmax?)
  3. 取激活的隐藏层和另一个随机初始化权重矩阵的点积
  4. 激活(sigmoid 还是 softmax?)
  5. 我们以某种方式比较第 4 步之后得到的输出,并计算误差(目标输出)相对于矩阵中每个权重的导数。我们从当前权重中减去导数。我们对输出隐藏层和隐藏输入层都这样做。我们这样做了很多次,直到我们足够好。

如果上面有任何问题,请纠正我。

所以现在我的问题是:

  1. 正确的skip-gram和负样本的目标应该是什么?它们分别是 1 和 0 吗?还是应该是skip-gram的上下文?我真的不确定。

  2. 损失应该如何计算?

谢谢你。

0 投票
1 回答
1053 浏览

tensorflow - 如何在 Tensorflow 中使用词嵌入进行预测

我正在尝试完成 Tensorflow 教程,并且在尝试增强RNN/语言模型教程时遇到了困难,以便我可以预测句子中的下一个单词。本教程使用词嵌入作为词的表示。

由于模型在词嵌入上学习,我假设我添加的任何类型的预测都会输出相同的嵌入。我不知道如何将这些嵌入转换回数据集中的单词 id。我见过的唯一示例保留了与 wordid 映射相反的内存数据结构 -> 嵌入并将其用于查找。这显然不适用于所有问题。有没有更好的办法?

0 投票
1 回答
701 浏览

machine-learning - 我应该使用 word2vec 进行词嵌入,包括测试数据吗?

我是 NLP 的新人,我正在尝试做文本分类工作。在做这项工作之前,我知道我们应该做词嵌入。我的问题是我应该只对训练数据进行词嵌入工作(以便测试数据仅从训练数据的预训练 vec 模型中获取向量),还是同时对训练数据和测试数据进行?

0 投票
0 回答
481 浏览

lua - 在大型数据集上训练词嵌入时如何处理内存问题?

我想训练一个单词可预测性任务来生成单词嵌入。文档集合包含 243k 文档。代码实现在torch中。我正在努力应对庞大的数据集,并且需要有关如何在如此庞大的数据集上训练词嵌入的想法,该数据集包含 243,000 个完整的文章文档。研究计算资源是定时的,因此可以短时间访问 GPU 节点,因此选择了增量模型训练:

  1. 增量模型训练:对整个数据集进行训练的一种方法是使用增量模型训练,即在一块数据上训练模型并保存它。稍后选择相同的预训练模型并开始对其下一个数据块进行训练。我在这种方法中面临的问题是我如何维护单词的词汇/字典。在词嵌入方法中,字典/词汇起着重要的作用。我们扫描所有文档并创建计数大于最小设定频率的单词的词汇。现在,实际上这个词汇是一个哈希映射,它具有与每个单词相关联的索引,并且在训练样本中,为了模型的简单性,我们用词汇中的索引替换单词。在增量训练的情况下,如何增量创建字典?我是否必须最初在整个文档上创建词汇/字典,然后逐步训练?或者是一种在增量训练中扩展词汇的方法?
  2. 另一个问题是词汇数据结构大小的内存限制。我在基于 LUA 的 Torch 中实现我的模型。因此,LUA 对表格大小进行了限制,我无法在单个表格中加载整个文档的词汇。如何克服这样的记忆问题?
  3. 从手套向量中汲取灵感。在他们的论文中,他们说他们“我们在五个不同大小的语料库上训练了我们的模型:一个 2010 年的维基百科转储,包含 10 亿个令牌;2014 年 Wikipedia 转储,包含 16 亿个代币;Gigaword 5 拥有 43 亿个代币;Gigaword5 + Wikipedia2014 的组合,拥有 60 亿个代币;以及来自 Common Crawl5 的 420 亿个网络数据令牌。我们使用斯坦福分词器对每个语料库进行分词和小写,构建一个包含 400,000 个最常见词的词汇表,然后构建一个共现计数矩阵 X”。关于 Glove 向量如何在如此大的语料库和大词汇量上进行训练以及如何处理他们案例中的内存限制的任何想法?论文参考 - http://nlp.stanford.edu/pubs/glove.pdf
  4. 关于如何限制生成词嵌入的数据集大小的任何想法?随着文档数量的增加或减少,它将如何影响词嵌入的性能或覆盖率?使用采样技术从数据集中采样文档是个好主意吗?如果是,那么请建议一些采样技术。
0 投票
1 回答
315 浏览

lasagne - 如何在 Lasagne 中为 EmbeddingLayer 提供固定的嵌入矩阵?

我已经实现了一个使用 Lasagne EmbeddingLayer 的深度学习架构。

现在我已经使用 word2vec 学习了词向量,并且不希望词向量成为我的网络的参数。

阅读文档后,我认为它指定提供给'W'参数的numpy数组是嵌入矩阵的初始值。

如何在代码中声明/指定 EmbeddingLayer 以便它使用输入权重矩阵作为词向量的固定矩阵?

0 投票
2 回答
1088 浏览

python - LSTM中的Tensorflow序列到序列LSTM(嵌套)

我想构建一个带有特殊词嵌入的 LSTM,但我对它的工作原理有一些疑问。

您可能知道,一些 LSTM 对字符进行操作,因此它是字符输入,字符输出。我也想做同样的事情,对单词进行抽象,以通过嵌套的 LSTM 学习强大的嵌入,以抵抗轻微的字符级错误。

因此,一个微小的 LSTM 将展开一个单词的每个字母,然后这将创建一个单词的嵌入。然后将句子中的每个嵌入单词作为输入馈送到更高级别的 LSTM,该 LSTM 将在每个时间步在单词级别上操作,而不是在字符上操作。

问题: - 我再也找不到讨论这个问题的研究论文了。如果你知道我在说什么,我想给我想做的事情起个名字。- 是否已经存在一些 TensorFlow 开源代码?- 否则,您对如何实现它有想法吗?神经网络的输出可能更难处理,因为我们需要撤消词嵌入以使用输出嵌套 LSTM 对字符进行训练。整个事情应该作为一个单元训练一次(工作流程:LSTM chars in,LSTM on words,LSTM chars out)。

我想这rnn_cell.MultiRNNCell会将 LSTM 堆叠在一起而不是嵌套它们。

否则您会建议将嵌入(输入和输出)训练为主 LSTM 之外的自动编码器吗?

0 投票
3 回答
39476 浏览

nlp - CBOW vs skip-gram:为什么要反转上下文和目标词?

页面中,据说:

[...] skip-gram 反转上下文和目标,并尝试从其目标词预测每个上下文词 [...]

但是,查看它生成的训练数据集,X 和 Y 对的内容似乎是可以互换的,因为这两个 (X, Y) 对:

(quick, brown), (brown, quick)

那么,如果最终是同一件事,为什么要在上下文和目标之间区分那么多呢?

另外,在 word2vec 上做 Udacity 的深度学习课程练习,我想知道为什么他们在这个问题上似乎对这两种方法有很大的不同:

skip-gram 的替代方案是另一个 Word2Vec 模型,称为 CBOW(连续词袋)。在 CBOW 模型中,不是从词向量预测上下文词,而是根据上下文中所有词向量的总和来预测一个词。实施和评估在 text8 数据集上训练的 CBOW 模型。

这不会产生相同的结果吗?

0 投票
2 回答
2715 浏览

nlp - Word2Vec 中的维度从何而来?

我正在使用 word2vec 模型来训练神经网络并构建神经嵌入以在向量空间上查找相似的单词。但我的问题是关于单词和上下文嵌入(矩阵)中的维度,我们在训练开始时通过随机数(向量)对其进行初始化,例如https://iksinc.wordpress.com/2015/04/13 /单词作为向量/

假设我们想在图表上显示 {book,paper,notebook,novel} 单词,首先我们应该构建一个尺寸为 4x2 或 4x3 或 4x4 等的矩阵,我知道矩阵的第一个维度是我们的词汇|v|。但是矩阵的第二维(向量的维数),例如这是单词“book”的向量[0.3,0.01,0.04],这些数字是什么?它们有什么意义吗?例如与0.3相关的数字对于词汇表中单词“book”和“paper”之间的关系,0.01是book和notebook等之间的关系。就像TF-IDF,或者Co-Occurence矩阵一样,每个维度(列)Y都有一个含义-它是与 X 行中的单词相关的单词或文档。