glove算法工具使用

glove是斯坦福设计的一个新的词向量算法,结合了词频和词嵌入词向量计算的优点,是一项比较伟大的发明。

算法理论学习

Stanford提供了一个基础c语言的工具(只能在Linux和mac上面运行),工具地址如下:

工具下载地址

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

如果没有git,可以下载到本地之后,然后使用unzip解压之后使用make和./demo.sh进行测试。

使用./demo.sh进行测试之后,默认使用的是text8.txt进行测试的。

make
if [ ! -e text8 ]; then
  if hash wget 2>/dev/null; then
    wget http://mattmahoney.net/dc/text8.zip
  else
    curl -O http://mattmahoney.net/dc/text8.zip
  fi
  unzip text8.zip
  rm text8.zip
fi

CORPUS=text8
打开demo.sh发现上面的代码,可以看出demo.sh是从网上下载text8.zip然后进行解压,因此我们想对自己的语料计算词向量可以更改
CORPUS=text8

来训练自己的词向量。

训练好词向量文件vectors.txt,之后我们是不是可以使用gensim中的word2vec把vectors.txt导入进去,这样我们就可以使用gensim里面的函数了。

#-*-coding:utf8-*-
import gensim

input='D:/data/TIAxmmc.txt'
outp1 = 'D:/data/model_v1'
outp2 = 'D:/data/new_vector.txt'
sentences=[]
#读取数据生成sentences
file=open(input,encoding='utf-8')
sentences = gensim.models.word2vec.LineSentence(file)
model = gensim.models.Word2Vec(sentences, size=100, window=6, min_count=5, workers=8)
model.wv.save_word2vec_format(outp2,binary=False)

gensim词向量把训练结果存储在vector.txt的文件之中。

打开gensim的vectors.txt

1166 100

0.9%氯化钠注射液 0.47639892 -0.20384854

比glove生成的vectors.txt多了一个总行数1166和向量的维数100.

只要在glove生成的vector.txt里面添加一个总次数和向量的维数,我们就可以加载glove的vectors进行调用了。

你可能感兴趣的:(NLP)