学习义原预测代码SPWE总结

解析刘知远老师论文《Lexical Sememe Prediction via Word Embeddings and Matrix Factorization》,介绍词向量预处理、数据生成及模型应用流程。

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

读刘知远老师的论文 Lexical Sememe Prediction via Word Embeddings and Matrix Factorization,并在网上下载了代码。

总结一下学习过程:

  • 首先需要准备一个预训练的中文词向量,推荐包含20万个词并且特征在200维以上
  • 把中文词向量命名为embedding_200.txt,放在文件目录下
  • 运行data_generator.sh,会生成train_data,hownet.txt_test和hownet.txt_answer,还有PMI.txt 文件
  • 运行application_SPWE.sh ,会生成output_S PWE文件

那么,在服务器上运行的时候需要注意的是,进入到semme_prediction-master文件夹后,运行脚本时,直接使用

. data_generator.sh即可。要注意.之后有个空格。

接下来分析一下这几个文件

1.通过hownet_corpus_data_picker.py这个文件

embedding_200.txt中的词语总数是259922,维度是300,如下图所示

生成训练目标数据集即train_data,主要是把hownet中的词挑出来看embedding_200.txt中有没有,如果有就认为是目标词语

那么,train_data的总数是75588,维度是300

2.通过test_data_generator.py这个文件

生成三个文件:hownet.txt_test , hownet.txt_answer , train_hownet

首先把hownet字典当中的每一行去掉首尾空格加到列表data中,然后words中存data的偶数索引的词,sememes中存data的奇数索引的词,把train_data中的词(去掉向量)存到sourcewords中,然后从sourcewords中随机选取len(sourcewords)*0.1个词作为samples,判断如果words中包含samples的词,记录下来索引,并把(该词,sememe[索引])添加到samplesBuf中。

那么hownet.txt_test中存的是samplesBuf中的词(没有sememe)

hownet.txt_answer中存的是samplesBuf中的(词,sememe[索引])

将words和sememes进行zip压缩,把samples中的词去重,对于words中的每个词如果不在samples中,那么就把其添加到train_hownet中,train_hownet中是(word+sememe)

3.通过SPWE.py这个文件

embedding_vec是词向量字典,放了所有的词+向量

train_embedding_vec是存放不在test_words中的剩余的词向量字典中的词

test_words是测试的词和词向量字典的交集并且去重

  • 求得embedding_vec(字典)存放每个词的300个特征向量的欧几里得距离

           embedding_vec={‘word':[x1/距离,x2/距离,..........x300/距离]

           距离=sqrt(x1*x1+x2*x2+...........x300*x300)

  • 得到word2sememe={词:义原,词:义原.......}

           sememe_all={'词':0,..................}包含了所有词

  • test_words中存的是去除重复的hownet.txt_test和embedding_vec中相同的词
  • train_embedding_vec中存不在test_words中的词向量字典中的词
  • nearestwords中存放train_embedding_vec中每一个非目标词与目标词进行特征相乘后的结果

           nearestwords=[(非目标词,求和结果)........]

  • 得到word2sememe中非目标词对应的义原,然后计算相似度

           sememe_all={'词':0,'词':0+cosine*power(para_c,rank)............}

  • reslist中的是[(sememe,sememe_all[sememe])]

           final中的是[sememe,sememe..............]

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值