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

Cod*_*dir 10 stanford-nlp gensim word2vec glove

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

  1. cooccurrence.bin
  2. cooccurrence.shuf.bin
  3. text8
  4. corpus.txt
  5. vectors.txt

我怎样才能将这些文件作为GloVe模型加载到python上?

Gha*_*nem 18

您可以使用 GloVe 库来实现:

安装它:pip install glove_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')
Run Code Online (Sandbox Code Playgroud)

参考:使用手套进行词向量化

  • 必须在 Windows 10 和 Linux Mint 19.3 上使用 pip install glove==1.0.0。尝试安装glove_python时出现各种错误 (6认同)

Pal*_*lak 9

这就是您运行模型的方式

$ git clone http://github.com/stanfordnlp/glove
$ cd glove && make
Run Code Online (Sandbox Code Playgroud)

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

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

if [ "$CORPUS" = 'text8' ]; then
Run Code Online (Sandbox Code Playgroud)

将 text8 替换为您的文件名。

更改完成后运行 demo.sh。

$ ./demo.sh
Run Code Online (Sandbox Code Playgroud)

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


MLa*_*Lam 3

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