我遵循这个教程,一切都很好,我预处理和训练我的模型但是当我想找到与下面的代码相似时:
model = gensim.models.Word2Vec.load("wiki.fa.word2vec.model")
print model.most_similar(U'???')
Run Code Online (Sandbox Code Playgroud)
矢量格式不正确:
[(u'\u0631\u0648\u0632', 0.6399222612380981), (u'\u0647\u0641\u062a\u0647', 0.5578583478927612), (u'\u0645\u0627\u0647\u0647\u0627\u06cc', 0.5577661991119385), (u'\u062f\u0631\u0645\u0627\u0647', 0.5260834097862244), (u'\u0634\u0627\u0645\u06af\u0627\u0647', 0.5142802596092224), (u'\u06cc\u06a9\u0645\u0627\u0647', 0.48211610317230225), (u'\u0642\u062f\u06cc\u0631\u0641', 0.4799095690250397), (u'\u06cc\u06a9\u0633\u0627\u0644', 0.47623544931411743), (u'\u0645\u0627\u0647\u0647', 0.46996498107910156), (u'\u062d\u0648\u062a', 0.4551585912704468)]
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?
该文件GoogleNews-vectors-negative300.bin包含3亿个字向量。我认为(不确定)在编写以下行时已加载此文件:
from gensim.models.keyedvectors import KeyedVectors
Run Code Online (Sandbox Code Playgroud)
我想下载我在名为的列表中从外部给出的单词的向量words。这是我执行此操作的代码:
import math
import sys
import gensim
import warnings
warnings.filterwarnings(action='ignore', category=UserWarning, module='gensim')
from gensim.models.keyedvectors import KeyedVectors
words = ['access', 'aeroway', 'airport', 'amenity', 'area', 'atm', 'barrier', 'bay', 'bench', 'boundary', 'bridge', 'building', 'bus', 'cafe', 'car', 'coast', 'continue', 'created', 'defibrillator', 'drinking', 'ele', 'embankment', 'entrance', 'ferry', 'foot', 'fountain', 'fuel', 'gate', 'golf', 'gps', 'grave', 'highway', 'horse', 'hospital', 'house', 'landuse', 'layer', 'leisure', 'man', 'manmade', 'market', 'marketplace', 'maxheight', 'name', 'natural', 'noexit', 'oneway', 'park', 'parking', 'pgs', 'place', 'worship', 'playground', …Run Code Online (Sandbox Code Playgroud) 我想知道是否有任何科学解释为什么像 CBOW 这样的 word2vec 模型在小数据上表现不佳。这是我测试过的;
data=[[context1], [context2], [context3]......[contextn]]
model=trained word2vec model
model.most_similar('word')
output=[word not in even in top-10]
Run Code Online (Sandbox Code Playgroud)
我用 10 倍的数据集重新训练了模型。
model.most_similar(word)
output=[word in the 10 most similar words]
Run Code Online (Sandbox Code Playgroud)
随着数据大小的增加,除了字数随着数据的增加而增加之外,还有什么科学的理由可以解释性能的提高吗?
我想上手word2vec和doc2vec使用优秀的教程,在这里和这里,并试图使用代码样本.我只添加了line_clean()删除标点符号,停用词等的方法.
但是我line_clean()在训练迭代中调用的方法遇到了麻烦.我理解对全局方法的调用搞砸了,但我不知道如何解决这个问题.
Iteration 1
Traceback (most recent call last):
File "/Users/santino/Dev/doc2vec_exp/doc2vec_exp_app/doc2vec/untitled.py", line 96, in <module>
train()
File "/Users/santino/Dev/doc2vec_exp/doc2vec_exp_app/doc2vec/untitled.py", line 91, in train
model.train(sentences.sentences_perm(),total_examples=model.corpus_count,epochs=model.iter)
File "/Users/santino/Dev/doc2vec_exp/doc2vec_exp_app/doc2vec/untitled.py", line 61, in sentences_perm
shuffled = list(self.sentences)
AttributeError: 'TaggedLineSentence' object has no attribute 'sentences'
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
import gensim
from gensim import utils
from gensim.models.doc2vec import TaggedDocument
from gensim.models import Doc2Vec
import os
import random
import numpy
from sklearn.linear_model import LogisticRegression
import logging
import sys …Run Code Online (Sandbox Code Playgroud) 使用 gensim 工具包加载了一个预训练的 word2vec 模型后,我想找到一个词的同义词,给定上下文,例如“她是一个聪明的人”的智能。
我正在尝试使用 word2vec 和 Kmeans 进行聚类,但它不起作用。
这是我的部分数据:
demain fera chaud à paris pas marseille
mauvais exemple ce n est pas un cliché mais il faut comprendre pourquoi aussi
il y a plus de travail à Paris c est d ailleurs pour cette raison qu autant de gens",
mais s il y a plus de travail, il y a aussi plus de concurrence
s agglutinent autour de la capitale
Run Code Online (Sandbox Code Playgroud)
脚本:
import nltk
import pandas
import pprint
import numpy as np
import pandas …Run Code Online (Sandbox Code Playgroud) 我gensim使用model.save(model_name)两个不同语料库的命令构建了两个词嵌入(word2vec 模型)并将其保存为(word2vec1 和 word2vec2)(这两个语料库有些相似,相似意味着它们像一本书的第 1 部分和第 2 部分一样相关) . 假设,两个语料库的前几个词(就频率或出现次数而言)是同一个词(假设为a)。
cosine-similarity or similarity对于两个 word2vec 模型,如何计算提取的顶级词(例如“a”)的相似度 ( )?是否most_similar()会在这种情况下有效地工作?
我想知道同一个词 (a) 与两个不同的生成模型之间的相似度有多大?
任何想法都深表赞赏。
我在python的以下代码中收到此错误“AttributeError:'Word2Vec'对象没有属性'index2word'”。有谁知道我该如何解决?实际上“tfidf_weighted_averaged_word_vectorizer”会引发错误。“obli.csv”包含句子行。谢谢你。
from feature_extractors import tfidf_weighted_averaged_word_vectorizer
dataset = get_data2()
corpus, labels = dataset.data, dataset.target
corpus, labels = remove_empty_docs(corpus, labels)
# print('Actual class label:', dataset.target_names[labels[10]])
train_corpus, test_corpus, train_labels, test_labels = prepare_datasets(corpus,
labels,
test_data_proportion=0.3)
tfidf_vectorizer, tfidf_train_features = tfidf_extractor(train_corpus)
vocab = tfidf_vectorizer.vocabulary_
tfidf_wv_train_features = tfidf_weighted_averaged_word_vectorizer(corpus=tokenized_train,
tfidf_vectors=tfidf_train_features,
tfidf_vocabulary=vocab,
model=model,
num_features=100)
def get_data2():
obli = pd.read_csv('db/obli.csv').values.ravel().tolist()
cl0 = [0 for x in range(len(obli))]
nonObli = pd.read_csv('db/nonObli.csv').values.ravel().tolist()
cl1 = [1 for x in range(len(nonObli))]
all = obli + nonObli
db = Db(all,cl0 + cl1)
db.data = all …Run Code Online (Sandbox Code Playgroud) 我不确定我应该如何使用 gensim 的 Word2Vec 的 most_similar 方法。假设您想测试经过验证的例子:男人代表国王,女人代表 X;找到 X。我认为这就是你可以用这种方法做的事情,但从我得到的结果来看,我认为这不是真的。
文档中写道:
找到前 N 个最相似的词。正面词对相似度有正面贡献,负面词对相似度有负面影响。
该方法计算给定词的投影权重向量的简单平均值与模型中每个词的向量之间的余弦相似度。该方法对应于原始 word2vec 实现中的词类比和距离脚本。
我假设,然后,most_similar取正例和反例,并尝试在向量空间中找到尽可能接近正向量并尽可能远离负向量的点。那是对的吗?
另外,有没有一种方法可以让我们将两点之间的关系映射到另一个点并得到结果(参见 man-king woman-X 示例)?
我正在Doc2Vec使用以下代码训练模型,其中tagged_data是TaggedDocument我之前设置的实例列表:
max_epochs = 40
model = Doc2Vec(alpha=0.025,
min_alpha=0.001)
model.build_vocab(tagged_data)
for epoch in range(max_epochs):
print('iteration {0}'.format(epoch))
model.train(tagged_data,
total_examples=model.corpus_count,
epochs=model.iter)
# decrease the learning rate
model.alpha -= 0.001
# fix the learning rate, no decay
model.min_alpha = model.alpha
model.save("d2v.model")
print("Model Saved")
Run Code Online (Sandbox Code Playgroud)
当我后来检查模型结果时,它们并不好。可能出了什么问题?