我在简历语料库中删除了gensim word2vec代码(删除了停用词),以便从预定义关键字列表中识别语料库中的类似上下文单词。
尽管使用输入参数进行了多次迭代,删除了禁止词等,但类似的上下文单词根本没有意义(就距离或上下文而言) 例如。相关和矩阵在同一窗口中发生了好几次,但矩阵并没有落在相似的最相似结果中
以下是系统和代码的详细信息 gensim 2.3.0,在Python 2.7 Anaconda上运行 培训简历:55,418个句子 每个句子的平均单词:3-4个单词(删除后的停用词) 代码:
wordvec_min_count=int()
size = 50
window=10
min_count=5
iter=50
sample=0.001
workers=multiprocessing.cpu_count()
sg=1
bigram = gensim.models.Phrases(sentences, min_count=10, threshold=5.0)
trigram = gensim.models.Phrases(bigram[sentences], min_count=10, threshold=5.0)
model=gensim.models.Word2Vec(sentences = trigram[sentences], size=size, alpha=0.005, window=window, min_count=min_count,max_vocab_size=None,sample=sample, seed=1, workers=workers, min_alpha=0.0001, sg=sg, hs=1, negative=0, cbow_mean=1,iter=iter)
model.wv.most_similar('correlation')
Out[20]:
[(u'rankings', 0.5009744167327881),
(u'salesmen', 0.4948525130748749),
(u'hackathon', 0.47931140661239624),
(u'sachin', 0.46358123421669006),
(u'surveys', 0.4472047984600067),
(u'anova', 0.44710394740104675),
(u'bass', 0.4449636936187744),
(u'goethe', 0.4413239061832428),
(u'sold', 0.43735259771347046),
(u'exceptional', 0.4313117265701294)]
我迷失了为什么结果如此随机?有没有检查word2vec的准确性?
对于most_similar()函数,还有word2vec的替代方法吗?我读了一下gloVE但是无法安装包。
这方面的任何信息都会有所帮助
答案 0 :(得分:1)
启用INFO级别的日志记录,并确保它表明正在进行真正的培训。 (也就是说,您会看到在预期的文本数量上超过预期的迭代次数的增量进度。)
您可能正在点击此open bug issue in Phrases
,其中请求短语提升(与trigram[sentences]
一样)仅提供单次迭代,而不是Word2Vec
的可乘法迭代的集合对象需要。
Word2Vec
需要通过语料库进行一次词汇发现,然后iter
次再次进行培训。如果sentences
或短语包装器仅支持单次迭代,则只会发现词汇 - 训练将立即结束,模型将显示为未经训练。
正如您在该问题中所看到的,解决方法是执行短语转换并将结果保存到内存列表(如果适合)或磁盘上的单独文本语料库中(&#39) ; s已被短语组合)。然后,使用一个真正可重新启动的迭代 - 这也将节省一些冗余处理。