词向量源码解析:(5.2)ngram2vec源码解析之uni_uni

本文详细解析了ngram2vec工具包中的uni_uni.sh脚本,该脚本展示了从语料到词向量的完整流程。流程包括设置参数、生成词典和共现对、使用word2vec训练、评估及转换词向量格式,以及后续的PPMI、SVD和GloVe模型的训练和评估。所有模型的特征选择和处理都在corpus2pairs阶段确定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ngram2vec工具包的流程和hyperwords很像,都是一系列的##2##文件,最终从语料一步一步得到词向量。所以我们先通过脚本文件看一下整个的执行流程。一共有三个脚本文件,uni_uni,uni_bi,bi_bi。这三个脚本都会完整的执行一遍流程,只不过用的特征不一样。_之前表示中心词用的特征,_之后表示上下文用的特征。uni_bi就表示中心词用的是简单的单词特征,上下文用的是单词特征加上bigram特征。首先看看uni_uni.sh的内容。

#!/bin/sh

#首先是一些参数设置,win是上下文窗口大小,size是词向量维度,thr是低频词过滤的阈值,sub是subsampling的参数,iters是word2vec执行几轮,threads是线程数量,下面的很多程序都是多线程的。negative是word2vec参数,memsize是内存大小,这个工具包会让我们在有限的内存内得到词向量。
win=2
size=300
thr=100
sub=1e-3
iters=3
threads=8
negative=5
memsize=32.0
corpus=wiki2010.clean
output_path=outputs/uni_uni/win${win}

#不同模型的词向量放在不同的路径下面
mkdir -p ${output_path}/sgns
mkdir -p ${output_path}/ppmi
mkdir -p ${output_path}/svd
mkdir -p ${output_path}/glove

#然后执行corpus2vocab,corpus2pairs,后者用到前者的输入。同时后者是多线程,会生成多个文件,我们最后要对多个文件进行拼接得到完整的pair
python ngram2vec/corpus2vocab.py --ngram 1 --memory_size ${memsize} --min_count ${thr} ${corpus} ${output_path}/vocab
python ngram2vec/corpus2pairs.py --win ${win} --sub ${sub} --ngram_word 1 --ngram_context 1 --threads_num ${threads} ${corpus} ${output_path}/vocab ${output_path}/pairs
#concatenate pair files 
if [ -f "${output_path}/pairs" ]
then
rm ${output_path}/pairs
fi
for i in $(seq 0 $((${threads}-1)) )
do

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值