问题标签 [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.
neural-network - 为什么我们需要更大的向量空间来显示词嵌入模型中的关系?
我正在研究词嵌入,对词向量的维数有点困惑。我的意思是,以 word2vec 为例,我的问题是为什么我们应该为我们的隐藏层使用 100 个隐藏神经元?这个数字背后有什么意义或逻辑吗?或者如果它是任意的,为什么不是 300?还是10?为什么不多或少?众所周知,显示向量的最简单方法是在二维空间(只有 X 和 Y)上,为什么还要更多维呢?我阅读了一些有关它的资源,在一个示例中,他们选择了 100 个维度,在另一个示例中,他们选择了其他数字,例如 150、200、80 等。
我知道数字越大,显示单词之间关系的空间就越大,但是我们不能在二维向量空间(只有 X 和 Y)上显示关系?!为什么我们需要更大的空间?每个单词都由一个向量显示,那么当我们可以在 2 或 3 维空间上显示向量时,为什么我们必须使用高维空间呢?然后使用余弦之类的相似性技术来查找 2 或 3 维而不是 100 维(从计算时间的角度来看)的相似性更简单,对吧?
nlp - word2vec:CBOW 和 skip-gram 性能 wrt 训练数据集大小
问题很简单。CBOW 和 skip-gram 中的哪一个更适合大型数据集?(小数据集的答案如下。)
我很困惑,因为米科洛夫本人,[链接]
Skip-gram:适用于少量训练数据,甚至可以很好地表示罕见的单词或短语。
CBOW:训练速度比skip-gram快几倍,对频繁词的准确率略高
但是,根据 Google TensorFlow,[链接]
CBOW 平滑了许多分布信息(通过将整个上下文视为一次观察)。在大多数情况下,这对于较小的数据集是有用的。然而,skip-gram 将每个上下文-目标对视为一个新的观察结果,当我们拥有更大的数据集
时,这往往会做得更好。在本教程的其余部分,我们将重点关注 skip-gram 模型。
这是一个支持第一个想法[Link]的 Quora 帖子,然后是另一个 Quora 帖子,它暗示了第二个想法[Link] ——两者似乎都来自上述可靠的来源。
还是像米科洛夫所说的那样:
总的来说,最好的做法是尝试一些实验,看看什么最适合你,因为不同的应用程序有不同的要求。
但在这件事上肯定有经验或分析的结论或最终说法吗?
python - 如何使用 word2vec 获取给定单词的词嵌入向量和上下文向量?
输出向量是“king”的上下文向量还是“king”的词嵌入向量?如何获得“king”的上下文向量和“king”的词嵌入向量?谢谢!
machine-learning - Keras:优化推文特定的预训练词嵌入层
我正在从事一项分类任务,我想将推文分类为 5 个不同的类别。我正在关注用于构建模型的Keras Github IMDB 分类示例,但想修改Embedding
此模型中的层。我没有将用于初始化的权重传递给Embedding
层,而是使用 word2vec 权重来查找我的数据集中的每条推文,因此我可以为每条推文构造一个 (tweet_words x vector_dimension) 矩阵。
例如,“我已经厌倦了听到关于这次选举#tuningout”的推文将表示为如下矩阵:
我正在执行此查找,因为我有针对不同国家/地区分别学习的嵌入,并且我想根据推文的位置查找特定的嵌入,而不是将权重从联合嵌入传递到Embedding
层进行初始化。我可以使用以下 Keras 架构将这样的矩阵直接传递给一个非常简单的 LSTM:
但是,与链接中的示例相比,它的缺点是该架构无法进一步优化Embedding
层。有没有办法将每条推文的这些矩阵传递给嵌入层以进行进一步优化,如示例中所示?谢谢阅读。
python - tf.train.range_input_producer(epoch_size, shuffle=True) 不会终止也不会导致 CPU/GPU 负载
我在研究 RNN 时遇到了一个奇怪的问题。我正在关注TensorFlow RNN 教程并尝试我自己的(更简单的)实现,这很受 R2RT 博客文章的启发:Tensorflow I 中的递归神经网络。
调试后,我发现问题出ranger_input_producer
在tensorflow.models.rnn.ptb.reader.py中(第 115 行)。
我在最小的例子中隔离了它:
这是什么ptb_producer
(具有可变值epoch_size
)。事实证明,这段代码并没有终止(我什至没有调用任何session.run(...)
CPU,也没有使用 CPU。我猜队列正在等待Daving Wong 建议的某些东西。
有什么线索吗?谢谢
多的
python - 使用 Feed Dict 输入维度拆分 Tensorflow
我正在尝试根据使用 feed_dict 输入的输入的维度来 tf.split 一个张量(每个批次的输入变化的维度)。目前我一直收到一个错误,说张量不能用“维度”分割。有没有办法获取维度的值并使用它进行拆分?
谢谢!
r - R text2vec 和 rword2vec 类比结果在包之间有所不同
当我使用 R rword2vec 包计算正文中的单词类比时,我得到了很好、直观的答案。但是,当我使用 bin_to_txt 从中输出单词向量,然后将它们读入并使用 text2vec 包计算类比时,我得到的答案质量非常低。
这两个包计算类比的方式有区别吗?如果有,如果没有这个包,我如何重现 rword2vec 的计算?不幸的是,我无法在生产中需要使用的机器上安装 rword2vec。
在下面的示例中,我使用了类比 king:queen::man:_。使用相同的向量,rword2vec 给了我“woman”、“girl”和“blonde”,而使用 sim2 的 text2vec 方法给了我“man”、“ahab”和“king”。我在搞砸后一种方法是什么?
以下代码用于复制:
gensim - gensim word2vec - 使用新数据更新词嵌入
我已经使用 skipgram 技术训练了 2600 万条推文来创建词嵌入,如下所示:
但是,我不断在我的数据库中收集更多推文。例如,当我有 200 万条推文时,我想更新我的嵌入,同时考虑这个新的 200 万条推文。
是否可以加载先前训练的模型并更新嵌入的权重(可能向我的模型添加新的词嵌入)?还是我需要从一开始就发布 28 (26+2) 百万条推文?使用当前参数需要 5 个小时,使用更大的数据需要更长的时间。
另一个问题,是否可以直接从数据库中检索语句参数(而不是从txt、bz2或gz文件中读取)?随着我们要训练的数据越来越大,最好绕过文本读/写操作。
nlp - 有没有句子嵌入 TensorFlow 语言模型?
我找到了 tensorflow 1b_lm 项目:https ://github.com/tensorflow/models/tree/master/lm_1b
我对第四个例子很困惑
给一个句子,从 LSTM 状态中转储嵌入。
但是,此示例的结果包括 7 个“.npy”文件。似乎它只是为句子中的每个单词生成每个单词嵌入?