0

我在简历语料库(已删除停用词)上运行 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 的信息,但无法安装该软件包。

这方面的任何信息都会有所帮助

4

1 回答 1

1

启用 INFO 级别的日志记录,并确保它表明正在进行真正的培训。(也就是说,您会看到增量进度花费的时间超过了预期的文本数量,超过了预期的迭代次数。)

您可能会在 中遇到这个开放的错误问题Phrases,其中请求 Phrase-promotion(与 一样trigram[sentences])仅提供单次迭代,而不是Word2Vec需要的可多次迭代的集合对象。

Word2Vec需要通过语料库一次进行词汇发现,然后iter再次进行训练。如果sentencesphrasing-wrappers 仅支持单次迭代,则只会发现词汇表——训练将立即结束,模型将显示为未经训练。

正如您将在该问题中看到的那样,一种解决方法是执行短语转换并将结果保存到内存列表(如果它适合)或磁盘上的单独文本语料库(已经被短语组合)。然后,在其上使用真正可重新启动的迭代器——这也将节省一些冗余处理。

于 2017-09-11T17:59:21.280 回答