我想在训练,验证和推理阶段使用TensorFlow Transform将标记转换为单词向量.
我按照这个StackOverflow帖子实现了从标记到向量的初始转换.转换按预期工作,我获取EMB_DIM每个令牌的向量.
import numpy as np
import tensorflow as tf
tf.reset_default_graph()
EMB_DIM = 10
def load_pretrained_glove():
tokens = ["a", "cat", "plays", "piano"]
return tokens, np.random.rand(len(tokens), EMB_DIM)
# sample string
string_tensor = tf.constant(["plays", "piano", "unknown_token", "another_unknown_token"])
pretrained_vocab, pretrained_embs = load_pretrained_glove()
vocab_lookup = tf.contrib.lookup.index_table_from_tensor(
mapping = tf.constant(pretrained_vocab),
default_value = len(pretrained_vocab))
string_tensor = vocab_lookup.lookup(string_tensor)
# define the word embedding
pretrained_embs = tf.get_variable(
name="embs_pretrained",
initializer=tf.constant_initializer(np.asarray(pretrained_embs), dtype=tf.float32),
shape=pretrained_embs.shape,
trainable=False)
unk_embedding = tf.get_variable(
name="unk_embedding",
shape=[1, EMB_DIM],
initializer=tf.random_uniform_initializer(-0.04, 0.04),
trainable=False)
embeddings = …Run Code Online (Sandbox Code Playgroud) 我试图理解为什么word2vec的skipgram模型对每个单词(隐藏表示,即单词嵌入)和输出表示(也称为上下文单词嵌入)有2个表示.这只是为了普遍性,上下文可以是任何东西(不仅仅是单词),还是有更基本的原因
我正在尝试使用Gensim的Word2Vec实现.Gensim警告说,如果你没有C编译器,训练速度会慢70%.有没有确认Gensim正确使用我安装的C编译器?
我在Windows 10上使用Anaconda Python 3.5.
我想创建一个本质上是字典的文本文件,每个单词通过word2vec与其矢量表示形成配对.我假设这个过程首先训练word2vec,然后从我的列表中查找每个单词并找到它的表示(然后将其保存在一个新的文本文件中)?
我是word2vec的新手,我不知道该怎么做.我已经阅读了几个主要网站,以及Stack上的一些问题,但还没有找到一个好的教程.
我想知道gensim word2vec的两个相似性度量之间的区别:most_similar()和most_similar_cosmul().我知道第一个使用单词向量的余弦相似性,而另一个使用Omer Levy和Yoav Goldberg提出的乘法组合目标.我想知道它对结果有何影响?哪一个给出语义相似性?等.例如:
model = Word2Vec(sentences, size=100, window=5, min_count=5, workers=4)
model.most_similar(positive=['woman', 'king'], negative=['man'])
Run Code Online (Sandbox Code Playgroud)
结果:[('queen',0.50882536),...]
model.most_similar_cosmul(positive=['baghdad', 'england'], negative=['london'])
Run Code Online (Sandbox Code Playgroud)
结果:[(u'iraq',0.8488819003105164),...]
我目前正在使用Python中的gensim开发word2vec模型,并希望编写一个函数来帮助我找到给定单词的反义词和同义词.例如:反义词("sad")="happy"同义词("upset")="enraged"
有没有办法在word2vec中这样做?
我在看的DeepDist(链接)模块和思维将其联合Gensim的Doc2VecAPI来训练上段载体PySpark.该链接实际上如何做以下干净的例子提供Gensim的Word2Vec模型:
from deepdist import DeepDist
from gensim.models.word2vec import Word2Vec
from pyspark import SparkContext
sc = SparkContext()
corpus = sc.textFile('enwiki').map(lambda s: s.split())
def gradient(model, sentences): # executes on workers
syn0, syn1 = model.syn0.copy(), model.syn1.copy() # previous weights
model.train(sentences)
return {'syn0': model.syn0 - syn0, 'syn1': model.syn1 - syn1}
def descent(model, update): # executes on master
model.syn0 += update['syn0']
model.syn1 += update['syn1']
with DeepDist(Word2Vec(corpus.collect()) as dd:
dd.train(corpus, gradient, descent) …Run Code Online (Sandbox Code Playgroud) 我在python中使用gensim word2vec包.我想检索W和W'已跳过克学习期间学习权重矩阵.
在我看来,model.syn0给了我第一个,但我不知道我怎么能得到另一个.任何的想法?
我真的很想找到关于模型可访问属性的任何详尽文档,因为官方文档看起来并不精确(例如syn0没有被描述为属性)
当我尝试创建一个word2vec模型(带负抽样的skipgram)时,我收到3个文件作为输出,如下所示.
word2vec (File)
word2vec.syn1nef.npy (NPY file)
word2vec.wv.syn0.npy (NPY file)
Run Code Online (Sandbox Code Playgroud)
我只是担心为什么会发生这种情况,因为我以前在word2vec中的测试示例我只收到一个模型(没有npy文件).
请帮我.
我正在使用 Word2vec 和 gensim 进行项目,
model = gensim.models.Word2Vec(
documents = 'userDataFile.txt',
size=150,
window=10,
min_count=2,
workers=10)
model = gensim.model.Word2Vec.load("word2vec.model")
model.train(documents, total_examples=len(documents), epochs=10)
model.save("word2vec.model")
Run Code Online (Sandbox Code Playgroud)
这是我目前拥有的部分代码,我在下面收到此错误
Run Code Online (Sandbox Code Playgroud)Traceback (most recent call last): File "C:\Users\User\Desktop\InstaSubProject\templates\HashtagData.py", line 37, in <module> workers=10) TypeError: __init__() got an unexpected keyword argument 'documents'
UserDataFile.txt 是我存储从网络抓取中获得的输出结果数据的文件。
我不太确定我需要在这里修复什么。
先感谢您 !
word2vec ×10
gensim ×7
python ×6
nlp ×2
apache-beam ×1
apache-spark ×1
compilation ×1
glove ×1
installation ×1
pyspark ×1
semantics ×1
similarity ×1
tensorflow ×1