如何在我自己的语料库上训练GloVe算法

时间:2018-02-24 11:10:57

标签: stanford-nlp gensim word2vec glove

我试图关注this.
但有些我浪费了很多时间而没有任何用处 我只想在我自己的语料库(~900Mb corpus.txt文件)上训练GloVe模型。 我下载了上面链接中提供的文件并使用cygwin进行了编译(编辑demo.sh文件后将其更改为VOCAB_FILE=corpus.txt。我应该保持CORPUS=text8不变吗?) 输出是:

  1. cooccurrence.bin
  2. cooccurrence.shuf.bin
  3. text8
  4. corpus.txt
  5. vectors.txt
  6. 如何在python上使用这些文件作为GloVe模型加载?

4 个答案:

答案 0 :(得分:2)

你的语料库应该转到变量CORPUS。 vectors.txt是输出,它被认为是有用的。你可以在python中训练Glove,但是需要更多的时间,你需要有C编译环境。我之前尝试过并且没有推荐它。

答案 1 :(得分:2)

这是我对此的看法:

  1. 克隆存储库后,请编辑demo.sh文件,因为您需要使用自己的语料库对其进行训练,用文件名替换CORPUS名称。
  2. 然后删除MAKE和CORPUS之间的脚本,因为该脚本将为您下载示例语料库。
  3. 然后运行make,它将在构建文件夹中形成四个文件。
  4. 现在运行./demo.sh,它将训练并在您自己的语料库上完成脚本中提到的所有工作,并且输出将作为vectors.txt文件生成。

注意:不要忘记将语料库文件直接保存在Glove文件夹中。

答案 2 :(得分:1)

这是运行模型的方式

$ git clone http://github.com/stanfordnlp/glove
$ cd glove && make

要在自己的语料库上训练它,只需更改一个文件demo.sh。

在“ make”之后将脚本从if删除到fi。 将CORPUS名称替换为您的文件名“ corpus.txt” 文件'demo.sh'的末尾还有另一个if循环

if [ "$CORPUS" = 'text8' ]; then

用您的文件名替换text8。

进行更改后,运行demo.sh。

$ ./demo.sh

确保您的语料库文件格式正确。您需要将语料库准备为单个文本文件,所有单词都用一个或多个空格或制表符分隔。如果您的语料库有多个文档,则这些文档(仅)应该用换行符分隔。

答案 3 :(得分:0)

  

您可以使用GloVe库来实现:

安装:pip install Gloves_python

然后:

from glove import Corpus, Glove

#Creating a corpus object
corpus = Corpus() 

#Training the corpus to generate the co occurence matrix which is used in GloVe
corpus.fit(lines, window=10)

glove = Glove(no_components=5, learning_rate=0.05) 
glove.fit(corpus.matrix, epochs=30, no_threads=4, verbose=True)
glove.add_dictionary(corpus.dictionary)
glove.save('glove.model')

参考:word vectorization using glove