是否有任何带有t-SNE算法并行版本的Python库?或者存在多核/并行t-SNE算法?
我正在尝试使用t-SNE减少词汇表中所有word2vecs的维度(300d - > 2d).
问题:词汇量的大小约为130000,并且为它们进行t-SNE需要很长时间.
python parallel-processing multiprocessing dimensionality-reduction word2vec
我正在学习python中的word2vec和GloVe模型,所以我在这里可以看到这个.
在Idle3中逐步编译这些代码之后:
>>>from gensim.models import word2vec
>>>import logging
>>>logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
>>>sentences = word2vec.Text8Corpus('text8')
>>>model = word2vec.Word2Vec(sentences, size=200)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
2017-01-13 11:15:41,471 : INFO : collecting all words and their counts
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
model = word2vec.Word2Vec(sentences, size=200)
File "/usr/local/lib/python3.5/dist-packages/gensim/models/word2vec.py", line 469, in __init__
self.build_vocab(sentences, trim_rule=trim_rule)
File "/usr/local/lib/python3.5/dist-packages/gensim/models/word2vec.py", line 533, in build_vocab
self.scan_vocab(sentences, progress_per=progress_per, trim_rule=trim_rule) # initial survey
File "/usr/local/lib/python3.5/dist-packages/gensim/models/word2vec.py", line 545, in scan_vocab
for sentence_no, …Run Code Online (Sandbox Code Playgroud) 我重新安装了gensim pkg和Cython,但它一直显示这个警告,有人知道吗?我使用的是Python 3.6,PyCharm Linux Mint.
UserWarning:没有为Word2Vec加载C扩展,训练会很慢.安装C编译器并重新安装gensim以进行快速培训.warnings.warn("没有为Word2Vec加载C扩展,训练会很慢."
当我创建或加载模型时,它也会显示此行.
正在使用慢速版本的gensim.models.doc2vec
from gensim.models import word2vec
sentences = word2vec.Text8Corpus('TextFile')
model = word2vec.Word2Vec(sentences, size=200, min_count = 2, workers = 4)
print model['king']
Run Code Online (Sandbox Code Playgroud)
输出向量是“king”的上下文向量还是“king”的词嵌入向量?如何同时获得“king”的上下文向量和“king”的词嵌入向量?谢谢!
我正在seq2seq modelTensorflow 中进行训练。我想用作GLoVe序列中单词的单词嵌入。在 中,我在序列中seq2seq使用一些标签,例如EOS(End of Sequence), GO(start of sequence for decoder), , 作为单词。PAD(for padding sequence)
但GLoVe不会嵌入这些标签。那么,我应该如何表示这些标签呢?
我正在研究一种复发语言模型.要学习可用于初始化我的语言模型的单词嵌入,我使用的是gensim的word2vec模型.训练之后,word2vec模型为词汇表中的每个单词保存两个向量:单词嵌入(输入/隐藏矩阵的行)和上下文嵌入(隐藏/输出矩阵的列).
作为概括这个帖子有这两个嵌入矢量组合至少三种常用的方法:
但是,我找不到关于最佳策略的适当论文或报告.所以我的问题是:
相关(但未答复)的问题:
我正在尝试将一些预先训练的向量加载到 gensimWord2Vec模型中,以便可以使用新数据重新训练它们。我的理解是我可以用 进行再培训gensim.Word2Vec.train()。然而,我能找到的加载向量的唯一方法是gensim.models.KeyedVectors.load_word2vec_format('path/to/file.bin', binary=True)创建一个通常是模型wv属性的对象gensim.Word2Vec。但是这个对象本身没有方法train(),而这正是我重新训练向量所需的方法。
那么如何将这些向量转化为实际gensim.Word2Vec模型呢?
我已经检查了之前的帖子链接,但它似乎不适用于我的情况:-
我已经预先训练过 word2vec 模型:
import gensim
model = Word2Vec.load('w2v_model')
Run Code Online (Sandbox Code Playgroud)
现在我有一个带有关键字的熊猫数据框:
keyword
corruption
people
budget
cambodia
.......
......
Run Code Online (Sandbox Code Playgroud)
我只想在其相应的列中为每个关键字添加向量,但是当我使用model['cambodia']它时会抛出错误KeyError: "word 'cambodia' not in vocabulary"
所以我将关键字更新为:
model.train(['cambodia'])
Run Code Online (Sandbox Code Playgroud)
但这对我不起作用,当我使用
model['cambodia']
它仍然给出错误为KeyError: "word 'cambodia' not in vocabulary". 如何将新单词更新为 word2vec 词汇表,以便我可以获得它的向量?预期输出将是:-
keyword V1 V2 V3 V4 V5 V6
corruption 0.07397 0.290874 -0.170812 0.085428 -0.148551 0.38846
people ..............................................................
budget ...........................................................
Run Code Online (Sandbox Code Playgroud) 所以我有多个文本文件(大约 40 个)。每个文件大约有 2000 篇文章(平均每篇 500 字)。每个文档都是文本文件中的一行。
因此,由于内存限制,我想使用这些文本文件的动态加载来进行训练。(也许是一个迭代器类?)
那么我该如何进行呢?
众所周知,BERT模型的词嵌入能力,它可能比word2vec和任何其他模型都要好。
我想创建一个BERT词嵌入模型来生成同义词或相似的单词。就像我们在Gensim Word2Vec. 我想将 Gensim 的方法创建model.most_similar()到 BERT 词嵌入中。
我对此进行了很多研究,似乎可以做到这一点,但问题是它仅以数字形式显示嵌入,无法从中获取实际的单词。有人可以帮我解决这个问题吗?
word2vec ×10
gensim ×7
python ×7
python-3.x ×3
nlp ×2
iterator ×1
pandas ×1
tensorflow ×1
vector ×1