标签: word2vec

'file'对象没有属性'rfind'

我想将word2vec保存到文件中.

model = Word2Vec(sentences, size=vector_size, window=5, min_count=5, workers=4)
fo = open("foo.txt", "wb")
model.save(fo)
Run Code Online (Sandbox Code Playgroud)

我在genericpath.py中收到以下错误

File "word2Vec_impl.py", line 39, in <module>
model.save(fo, separately=None)
File "C:\Python27\lib\site-packages\gensim\models\word2vec.py", line 669, in s
ave
super(Word2Vec, self).save(*args, **kwargs)
File "C:\Python27\lib\site-packages\gensim\utils.py", line 269, in save
pickle(self, fname)
File "C:\Python27\lib\site-packages\gensim\utils.py", line 608, in pickle
with smart_open(fname, 'wb') as fout: # 'b' for binary, needed on Windows
File "C:\Python27\lib\site-packages\gensim\utils.py", line 596, in smart_open
_, ext = path.splitext(fname)
File "C:\Python27\lib\ntpath.py", line 190, in splitext
return genericpath._splitext(p, sep, altsep, extsep)
File …
Run Code Online (Sandbox Code Playgroud)

python word2vec

4
推荐指数
1
解决办法
1万
查看次数

如何在gensim创建的word2vec上运行tsne?

我想想象一下从gensim库创建的word2vec.我尝试了sklearn,但似乎我需要安装一个开发人员版本来获取它.我尝试安装开发人员版本,但这不适用于我的机器.是否可以修改此代码以显示word2vec模型?

tsne_python

gensim scikit-learn word2vec

4
推荐指数
2
解决办法
1万
查看次数

如何根据word2vec查找同义词

我正在使用Python中的gensim处理word2vec模型,但我发现结果是具有相同主题的单词,同义词只是结果的一部分.

我可以根据我所做的工作找到单词的同义词吗?

任何回复将不胜感激!

word2vec

4
推荐指数
1
解决办法
4636
查看次数

为什么word2vec只对Word2Vec.scala中的mapPartitionsWithIndex执行一项任务:323

我在spark中运行word2vec,当涉及到时fit(),在UI中只观察到一个任务,如图像:

在此输入图像描述.

根据配置,num-executors = 1000, executor-cores = 2.RDD合并到2000个分区.这需要相当长的时间mapPartitionsWithIndex.它可以分发给多个执行者或任务吗?

scala apache-spark word2vec apache-spark-mllib

4
推荐指数
1
解决办法
311
查看次数

Doc2Vec比Word2Vec向量的平均值或总和更差

我正在训练一个如下Word2Vec模型:

model = Word2Vec(documents, size=200, window=5, min_count=0, workers=4, iter=5, sg=1)
Run Code Online (Sandbox Code Playgroud)

Doc2Vec模型如:

doc2vec_model = Doc2Vec(size=200, window=5, min_count=0, iter=5, workers=4, dm=1)
doc2vec_model.build_vocab(doc2vec_tagged_documents)
doc2vec_model.train(doc2vec_tagged_documents, total_examples=doc2vec_model.corpus_count, epochs=doc2vec_model.iter)
Run Code Online (Sandbox Code Playgroud)

具有相同的数据和可比较的参数.

在此之后我将这些模型用于我的分类任务.我发现简单地平均或总结word2vec文档的嵌入比使用doc2vec向量要好得多.我也尝试了更多的doc2vec迭代(25,80和150 - 没有区别).

任何提示或想法为什么以及如何改善doc2vec结果?

更新:这是如何doc2vec_tagged_documents创建的:

doc2vec_tagged_documents = list()
counter = 0
for document in documents:
    doc2vec_tagged_documents.append(TaggedDocument(document, [counter]))
    counter += 1
Run Code Online (Sandbox Code Playgroud)

关于我的数据的更多事实:

  • 我的培训数据包含4000个文档
  • 平均900字.
  • 我的词汇量大约是1000字.
  • 我的分类任务数据平均要小得多(平均12个字),但我也尝试将训练数据分成线并训练doc2vec模型,但结果几乎相同.
  • 我的数据与自然语言无关,请记住这一点.

python machine-learning gensim word2vec doc2vec

4
推荐指数
1
解决办法
2376
查看次数

如何从pyspark word2vec模型中获取单词列表?

我正在尝试使用PySpark生成单词向量.使用gensim我可以看到单词和最接近的单词如下:

sentences = open(os.getcwd() + "/tweets.txt").read().splitlines()
w2v_input=[]
for i in sentences:
    tokenised=i.split()
    w2v_input.append(tokenised)
model = word2vec.Word2Vec(w2v_input)
for key in model.wv.vocab.keys():
    print key
    print model.most_similar(positive=[key])
Run Code Online (Sandbox Code Playgroud)

使用PySpark

inp = sc.textFile("tweet.txt").map(lambda row: row.split(" "))
word2vec = Word2Vec()
model = word2vec.fit(inp)
Run Code Online (Sandbox Code Playgroud)

如何从模型中的向量空间生成单词?那是与gensim相当的pyspark model.wv.vocab.keys()

背景:我需要将模型中的单词和同义词存储在地图中,以便稍后我可以使用它们来查找推文的情绪.我不能在pyspark中的map函数中重用word-vector模型,因为模型属于spark上下文(下面粘贴的错误).我想要pyspark word2vec版本而不是gensim,因为它为某些测试单词提供了更好的同义词.

 Exception: It appears that you are attempting to reference SparkContext from a broadcast variable, action, or transformation.SparkContext can only be used on the driver, not in code that it run on workers.
Run Code Online (Sandbox Code Playgroud)

任何替代解决方案也欢迎.

nlp apache-spark word2vec pyspark apache-spark-mllib

4
推荐指数
1
解决办法
2442
查看次数

Gensim word2vec WMD相似词典

我在一百万个摘要数据集(20亿字)上使用word2vec.为了找到大多数类似的文档,我使用了这个gensim.similarities.WmdSimilarity类.在尝试使用时检索最佳匹配时wmd_similarity_index[query],计算会花费大部分时间来构建字典.这是一段日志:

2017-08-25 09:45:39,441 : INFO : built Dictionary(127 unique tokens: ['empirical', 'model', 'estimating', 'vertical', 'concentration']...) from 2 documents (total 175 corpus positions)                                                        
2017-08-25 09:45:39,445 : INFO : adding document #0 to Dictionary(0 unique tokens: [])          
Run Code Online (Sandbox Code Playgroud)

这部分是什么?它依赖于查询吗?有没有办法一次性完成这些计算?

编辑:我的代码中的培训和评分阶段:

培训并保存到磁盘:

w2v_size = 300
word2vec = gensim.models.Word2Vec(texts, size=w2v_size, window=9, min_count=5, workers=1, sg=1, hs=1, iter=20) # sg=1 means skip gram is used 
word2vec.save(utils.paths.PATH_DATA_GENSIM_WORD2VEC)
corpus_w2v_wmd_index = gensim.similarities.WmdSimilarity(texts, word2vec.wv)
corpus_w2v_wmd_index.save(utils.paths.PATH_DATA_GENSIM_CORPUS_WORD2VEC_WMD_INDEX)
Run Code Online (Sandbox Code Playgroud)

载入和评分:

w2v = gensim.models.Word2Vec.load(utils.paths.PATH_DATA_GENSIM_WORD2VEC)
words = [t for t in proc_text …
Run Code Online (Sandbox Code Playgroud)

python nlp cpu-word gensim word2vec

4
推荐指数
1
解决办法
2793
查看次数

Word2Vec向量大小与扫描的单词总数之间的关系?

如果唯一字的总数大于10亿,则在word2vec算法中设置的矢量大小的最佳数目是多少?

我正在为word2vec使用Apache Spark Mllib 1.6.0。

示例代码:-

public class Main {       
      public static void main(String[] args) throws IOException {

        SparkConf conf = new SparkConf().setAppName("JavaWord2VecExample");
        conf.setMaster("local[*]");
        JavaSparkContext jsc = new JavaSparkContext(conf);
        SQLContext sqlContext = new SQLContext(jsc);

        // $example on$
        // Input data: Each row is a bag of words from a sentence or document.
        JavaRDD<Row> jrdd = jsc.parallelize(Arrays.asList(
          RowFactory.create(Arrays.asList("Hi I heard about Spark".split(" "))),
          RowFactory.create(Arrays.asList("Hi I heard about Java".split(" "))),
          RowFactory.create(Arrays.asList("I wish Java could use case classes".split(" "))),
          RowFactory.create(Arrays.asList("Logistic regression models are …
Run Code Online (Sandbox Code Playgroud)

machine-learning word2vec apache-spark-mllib

4
推荐指数
2
解决办法
3776
查看次数

为什么词嵌入实际上是向量?

我为我的幼稚而感到抱歉,但我不明白为什么NN训练过程(word2vec)产生的词嵌入实际上是向量。

嵌入是降维的过程,在训练过程中,NN将词的1/0数组缩小为较小的数组,该过程不执行任何应用矢量算法的过程。

因此,结果是我们只有数组而不是向量。为什么将这些数组视为向量?

即使我们得到矢量,为什么每个人都将它们描述为来自原点(0,0)的矢量?

再次,对不起,如果我的问题看起来很愚蠢。

nlp machine-learning embedding neural-network word2vec

4
推荐指数
2
解决办法
1722
查看次数

如何修复未加载'C扩展名,培训会很慢。安装C编译器,然后重新安装gensim,以进行快速培训。”

我正在使用基于gensim word2vec模型的库node2vec来对嵌入空间中的节点进行编码,但是当我要适合word2vec对象时,会收到以下警告:

C:\ Users \ lenovo \ Anaconda3 \ lib \ site-packages \ gensim \ models \ base_any2vec.py:743:UserWarning:未加载C扩展名,培训会很慢。安装C编译器并重新安装gensim,以进行快速培训。

有人可以帮我解决这个问题吗?

python-3.x gensim anaconda word2vec jupyter-notebook

4
推荐指数
1
解决办法
5239
查看次数