标签: word2vec

doc2vec:PV-DBOW是如何实现的

我知道在python(gensim)中已经存在PV-DBOW(段落向量)的实现.但我很想知道如何自己实现它.PV-DBOW 官方文件的解释如下:

另一种方法是忽略输入中的上下文单词,但强制模型预测从输出中的段落中随机抽样的单词.实际上,这意味着在随机梯度下降的每次迭代中,我们对文本窗口进行采样,然后从文本窗口中采样随机词,并在给定段落向量的情况下形成分类任务.

根据该论文,不存储单词向量,并且据说PV-DBOW的工作类似于word2vec中的跳过克.

word2vec参数学习中解释了Skip-gram .在跳过克模型中,单词向量被映射到隐藏层.执行此映射的矩阵在训练期间更新.在PV-DBOW中,隐藏层的维度应该是一个段落向量的维度.当我想将采样示例的单词向量与段落向量相乘时,它们应该具有相同的大小.单词的原始表示具有大小(词汇量x 1).执行哪个映射以在隐藏层中获得正确的大小(段落尺寸x 1).当没有存储单词向量时,如何执行此映射?我假设由于2中的等式26,单词和段落表示在隐藏层中应该具有相同的大小

nlp machine-learning neural-network gensim word2vec

6
推荐指数
1
解决办法
1285
查看次数

从Gensim包中了解Doc2Vec的输出

我有一些我希望通过Doc2Vec模型运行的示例句子.我的最终目标是一个大小矩阵(num_sentences,num_features).

我正在使用Gensim包.

from gensim.models.doc2vec import TaggedDocument
from gensim.models import Doc2Vec
# warning: long sample of data. It's just 40 sentences really though.
labeled_sents = [TaggedDocument(words=['u0644', 'u0646', 'u062f', 'u0646', 'u060c', 'u0628', 'u0631', 'u0637', 'u0627', 'u0646', 'u06cc', 'u06c1', 'u06a9', 'u0627'], tags='400'), TaggedDocument(words=['do', 'pan', 'en', '1713', 'o', 'soar', 'onde', 'se', 'sit', 'xfaa'], tags='401'), TaggedDocument(words=['u0420', 'u044c', 'u043e', 'u043d', 'u0442', 'u0433', 'u0435', 'u043d', '1901', 'xa0', 'u2022', 'u041b', 'u043e', 'u0440', 'u0435', 'u043d', 'u0446', 'xa0', 'u0417', 'u0435', 'u0435', 'u043c', 'u0430', 'u043d', '1902', 'xa0', 'u2022', 'u0411', 'u0435', 'u043a', …
Run Code Online (Sandbox Code Playgroud)

python gensim word2vec

6
推荐指数
1
解决办法
1372
查看次数

如何训练sense2vec模型

sense2vec的文档提到了3个主要文件 - 第一个是merge_text.py.我尝试了几种类型的input-txt,csv,bzipped文件,因为merge_text.py试图打开由bzip2压缩的文件.

该文件位于:https: //github.com/spacy-io/sense2vec/blob/master/bin/merge_text.py

这个脚本需要什么类型的输入格式?此外,如果有人可以请建议如何训练模型.

python word2vec spacy

6
推荐指数
2
解决办法
3421
查看次数

如何使用 word2vec 获取给定单词的词嵌入向量和上下文向量?

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”的词嵌入向量?谢谢!

python vector word2vec word-embedding

6
推荐指数
1
解决办法
2303
查看次数

seq2seq 中特殊词的 GLoVe 词嵌入

我正在seq2seq modelTensorflow 中进行训练。我想用作GLoVe序列中单词的单词嵌入。在 中,我在序列中seq2seq使用一些标签,例如EOS(End of Sequence), GO(start of sequence for decoder), , 作为单词。PAD(for padding sequence)

GLoVe不会嵌入这些标签。那么,我应该如何表示这些标签呢?

word2vec deep-learning tensorflow

6
推荐指数
0
解决办法
1818
查看次数

向量化单词时如何处理文本字符串中的数字?

如果我有一个要矢量化的文本字符串,我应该如何处理其中的数字?或者,如果我向神经网络提供数字和单词,我如何将数字保存为数字?

我打算制作一本关于我所有单词的字典(如此处所示).在这种情况下,所有字符串都将成为数字数组.我该如何处理数字字符?如何输出不将单词索引与数字字符混合的向量?

将数字转换为字符串会削弱我为网络提供的信息吗?

nlp word2vec tensorflow word-embedding

6
推荐指数
2
解决办法
2342
查看次数

具有LSTM的用于Keras中的句子相似性的Siamese Network定期给出相同的结果

我是Keras的新手,我正在努力解决在Keras使用NN的句子类似任务.我使用word2vec作为单词嵌入,然后使用Siamese Network来预测两个句子的相似程度.Siamese网络的基础网络是LSTM,为了合并两个基础网络,我使用具有余弦相似度量的Lambda层.作为数据集,我正在使用SICK数据集,它为每对句子提供一个分数,从1(不同)到5(非常相似).

我创建了网络并运行,但我有很多疑问:首先,我不确定我用LSTM提供句子的方式是否正常.我为每个单词采用word2vec嵌入,每个句子只创建一个数组,用零填充到seq_len,以获得相同的长度数组.然后我以这种方式重塑它: data_A = embedding_A.reshape((len(embedding_A), seq_len, feature_dim))

此外我不确定我的暹罗网络是否正确,因为不同对的预测很多,并且损失没有太大变化(在10个时期内从0.3300到0.2105,并且在100个时期内变化不大)时期).

有人可以帮我找到并理解我的错误吗?非常感谢(抱歉我的英语不好)

对我的代码感兴趣

def cosine_distance(vecs):
    #I'm not sure about this function too
    y_true, y_pred = vecs
    y_true = K.l2_normalize(y_true, axis=-1)
    y_pred = K.l2_normalize(y_pred, axis=-1)
    return K.mean(1 - K.sum((y_true * y_pred), axis=-1))

def cosine_dist_output_shape(shapes):
    shape1, shape2 = shapes
    print((shape1[0], 1))
    return (shape1[0], 1)

def contrastive_loss(y_true, y_pred):
    margin = 1
    return K.mean(y_true * K.square(y_pred) + (1 - y_true) * K.square(K.maximum(margin - y_pred, 0)))

def create_base_network(feature_dim,seq_len):

    model = Sequential()  
    model.add(LSTM(100, batch_input_shape=(1,seq_len,feature_dim),return_sequences=True))
    model.add(Dense(50, activation='relu'))    
    model.add(Dense(10, activation='relu')) …
Run Code Online (Sandbox Code Playgroud)

python-3.x word2vec sentence-similarity lstm keras

6
推荐指数
1
解决办法
2204
查看次数

将向量加载到 gensim Word2Vec 模型中 - 不是 KeyedVectors

我正在尝试将一些预先训练的向量加载到 gensimWord2Vec模型中,以便可以使用新数据重新训练它们。我的理解是我可以用 进行再培训gensim.Word2Vec.train()。然而,我能找到的加载向量的唯一方法是gensim.models.KeyedVectors.load_word2vec_format('path/to/file.bin', binary=True)创建一个通常是模型wv属性的对象gensim.Word2Vec。但是这个对象本身没有方法train(),而这正是我重新训练向量所需的方法。

那么如何将这些向量转化为实际gensim.Word2Vec模型呢?

nlp machine-learning gensim word2vec word-embedding

6
推荐指数
1
解决办法
3358
查看次数

如何将大数据集加载到gensim word2vec模型

所以我有多个文本文件(大约 40 个)。每个文件大约有 2000 篇文章(平均每篇 500 字)。每个文档都是文本文件中的一行。

因此,由于内存限制,我想使用这些文本文件的动态加载来进行训练。(也许是一个迭代器类?)

那么我该如何进行呢?

  • 训练每个文本文件 -> 保存模型 -> 加载模型并在新数据上重新运行?
  • 迭代器类有没有办法自动执行此操作?
  • 我应该逐句、逐篇文章或逐个文本文件作为模型训练的输入吗?

python iterator gensim word2vec

6
推荐指数
1
解决办法
2723
查看次数

使用 BERT 通过词嵌入生成相似词或同义词

众所周知,BERT模型的词嵌入能力,它可能比word2vec和任何其他模型都要好。

我想创建一个BERT词嵌入模型来生成同义词或相似的单词。就像我们在Gensim Word2Vec. 我想将 Gensim 的方法创建model.most_similar()到 BERT 词嵌入中。

我对此进行了很多研究,似乎可以做到这一点,但问题是它仅以数字形式显示嵌入,无法从中获取实际的单词。有人可以帮我解决这个问题吗?

python nlp gensim word2vec bert-language-model

6
推荐指数
1
解决办法
5209
查看次数