Windows下使用Glove训练自己的中文语料库

一、 准备自己的语料库

使用爬虫爬取数据,爬取之后的中文文本数据不能直接使用,需要进行分词,分完词后保存为data.txt(这是我爬取的豆瓣影评的数据)
在这里插入图片描述

二、下载Glove代码

https://github.com/stanfordnlp/GloVe
将数据data.txt保存在Glove的主文件夹下
在这里插入图片描述

三、修改bash

打开 demo.sh,修改相应的内容
修改如下:
在这里插入图片描述
因为demo默认是下载网上的语料来训练的,如果想要训练自己的语料,就需要注释掉,并且把语料替换掉,修改如下:
在这里插入图片描述
下边的代码,原来是这样的:

echo
echo "$ $BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE"
$BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE
echo "$ $BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE"
$BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE
echo "$ $BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE"
$BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE
echo "$ $BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE"
$BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE
if [ "$CORPUS" = 'text8' ]; then
   if [ "$1" = 'matlab' ]; then
       matlab -nodisplay -nodesktop -nojvm -nosplash < ./eval/matlab/read_and_evaluate.m 1>&2
   elif [ "$1" = 'octave' ]; then
       octave < ./eval/octave/read_and_evaluate_octave.m 1>&2
   else
       echo "$ $PYTHON eval/python/evaluate.py"
       $PYTHON eval/python/evaluate.py
   fi
fi

现修改成这样的:

$BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE
if [[ $? -eq 0 ]]
  then
  $BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE
  if [[ $? -eq 0 ]]
  then
    $BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE
    if [[ $? -eq 0 ]]
    then
       $BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE
       if [[ $? -eq 0 ]]
       then
           if [ "$1" = 'matlab' ]; then
               matlab -nodisplay -nodesktop -nojvm -nosplash < ./eval/matlab/read_and_evaluate.m 1>&2
           elif [ "$1" = 'octave' ]; then
               octave < ./eval/octave/read_and_evaluate_octave.m 1>&2
           else
               python eval/python/evaluate.py
           fi
       fi
    fi
  fi
fi

四、训练模型

训练模型需要注意Glove支持在linux下运行,因此需要安装一个可以在windows下用linux的环境。只需安装Cygwin,在页面中下载setup-x86_64.exe就可以了。
3.1 安装Cygwin步骤
在这里插入图片描述
在这里插入图片描述
注意这一步 Browser选择你想安装的位置,然后点下一步。
在这里插入图片描述
在这里插入图片描述
在这里选择一个好用的镜像,比如aliyun.com,然后点击下一步。
在这里插入图片描述
再然后,开始安装我们需要的组件,也可以把所有的组件都安装上,但是后面安装的时候很耗时间,所以,我们只需要安装若干个很常用的就行了,我们必须安装的有:gcc,g++,make,tar。。
在这里插入图片描述
依次点开 all-Devel,在Devel里选择我们需要的组件(binutils,gcc-core,gcc-g++,gdb,git,make,mingw64-i686-gcc-core,mingw64-i686-gcc-g++,)
在这里插入图片描述
各种组件:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
找不到的不用纠结,会自动帮你选上的,选完了图示的几个组件后,点下一步:
在这里插入图片描述
然后就开始坐等安装成功了!安装完成之后,桌面上会有一个快捷方式,打开之后验证我们是否安装成功了:
输入:cygcheck -c cygwin
在这里插入图片描述
如果Status 状态是OK,则Cygwin运行正常

之后分别输入make -v,gcc -v, g++ -v查看版本
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到这些组件我们都安装好了,但是还没有结束,还差最后一步添加环境变量。我的电脑(右键)->属性->高级系统设置->环境变量->系统变量中 找到path,点击编辑

在这里插入图片描述
添加Cygwin文件夹下的 bin、sbin、usr/sbin这三个文件夹
在这里插入图片描述
然后就可以在cmd命令行里使用linux命令了
先来测试pwd和ls命令:
在这里插入图片描述
测试成功
3.2 Glove训练
在cmd命令行里进入Glove主文件夹下:
在这里插入图片描述
输入:make
在这里插入图片描述
输入: bash demo.sh
在这里插入图片描述
可以看到已经在训练了,训练时间取决于你的语料库,总之还是很快的。
在这里插入图片描述
训练完之后可以看到有生成的词向量txt文件,这就是我们已经训练好的词向量!
最后加载模型,使用Gensim。
安装gensim需要注意的一点:
安装命令: pip install gensim
如果numpy报错,就卸载gensim,再卸载numpy,然后重新pip install gensim,pip install numpy
如果scipy报错,就卸载gensim,再卸载scipy,然后重新安装gensim和scipy
注意卸载之后重新安装的顺序不能乱!
如果import gensim的时候出现了warning那么只需要每次import的时候输入:
在这里插入图片描述

import warnings
warnings.filterwarnings(action='ignore', category=UserWarning, module='gensim')

from gensim.models import KeyedVectors
from gensim.scripts.glove2word2vec import glove2word2vec

import numpy as np

def sigmoid(x):
    # TODO: Implement sigmoid function
    return 1/(1 + np.exp(-x))
# 输入文件
glove_file = 'vectors.txt'
# 输出文件
w2v_file = 'w2v.txt'
# 开始转换
glove2word2vec(glove_file, w2v_file)
# 加载转化后的文件
model = KeyedVectors.load_word2vec_format(w2v_file)  # 该加载的文件格式需要转换为utf-8
# print(model['月'])
vector1 = model['白娘子']
vector2 = model['白素贞']
# print('白娘子和白素贞的相似度', vector1.dot(vector2.T) / (np.linalg.norm(vector1) * np.linalg.norm(vector2)))

print("<余弦距离>\"白娘子\"与\"白素贞\"的相似度为:{:.3f}".format(vector1.dot(vector2.T) / (np.linalg.norm(vector1) * np.linalg.norm(vector2))))

for i in range(len(vector1)):
    temp = np.subtract(vector1[i], vector2[i])
    temp = np.power(temp, 2)
    dicts = np.sqrt(temp.sum())
print("<欧式距离>\"白娘子\"与\"白素贞\"的相似度为:{:.3f}".format(dicts))

运行结果:在这里插入图片描述

  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 在建立了古诗语料库的基础上,我们可以使用词向量模型,如Word2Vec或Glove等,来训练语料库中的词的向量表示。词向量模型是一种通过自然语言处理技术来将文本中的词表示为数字向量的方法。这些向量可以用来表示词之间的相似度,并且可以用来解决一些自然语言处理任务,如文本分类、语义相似度计算等。使用Word2Vec或Glove等词向量模型训练古诗语料库中的词向量,可以帮助我们更好地理解古诗语文本的含义,并且可以帮助我们解决许多自然语言处理任务。 ### 回答2: 基于构建的古诗语料库训练词向量模型,例如Word2Vec、Glove等,可以帮助我们更好地理解和处理古诗文本。 首先,通过构建古诗语料库,我们可以收集大量真实的古代诗歌作品,囊括不同朝代、不同风格的诗歌。这些古诗文本不仅包含了各种主题和情感,还反映了当时社会、文化、历史等方面的信息。构建这样一个丰富多样的语料库,可以为词向量模型提供充足的数据支持。 然后,我们可以使用Word2Vec、Glove等算法来对这个诗歌语料库进行训练,生成古诗的词向量模型。这些模型可以将每个词语映射到一个高维向量空间中,其中每个维度代表了一个特定的语义属性。通过这些词向量,我们可以了解同一主题或风格的诗歌中的常见词语,也可以发现它们之间的关联和语义相似度。 利用这些古诗的词向量模型,我们可以进行多种文本处理任务。例如,我们可以通过计算词向量之间的相似度来进行诗歌的关联识别和相似度评估,进而实现诗歌的自动分类和推荐。同时,通过词向量模型,我们还可以探索古诗的主题、情感、修辞手法等方面的规律和变化趋势,为文学研究提供新的视角。 总之,基于构建的古诗语料库训练词向量模型,能够帮助我们更好地理解和处理古诗文本。通过这些模型,我们可以挖掘出古诗的深层次信息,丰富了我们对古人文学创作的认识,并为相关研究和应用提供了有力的工具和基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值