基于维基百科中文数据的word2vec模型相似度测试

一、获取语料
https://dumps.wikimedia.org/zhwiki/20230301/
在这里插入图片描述

二、xml转txt

import logging![请添加图片描述](https://img-blog.csdnimg.cn/f837d01e9cf44cdb94300ba57646534d.png)

import os.path
import sys
from gensim.corpora import WikiCorpus

if __name__ == '__main__':
    program = os.path.basename(sys.argv[0])
    logger = logging.getLogger(program)
    logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')
    logging.root.setLevel(level=logging.INFO)
    logger.info("running %s" % ' '.join(sys.argv))

    # check and process input arguments
    if len(sys.argv) != 3:
        print("Using: python process_wiki.py enwiki.xxx.xml.bz2 wiki.en.text")
        sys.exit(1)

    inp, outp = sys.argv[1:3]
    space = " "
    i = 0

    output = open(outp, 'w',encoding='utf-8')
    wiki = WikiCorpus(inp, dictionary={})
    for text in wiki.get_texts():
        S=space.join(text)
        S=S.encode('utf8').decode('utf8') + "\n"
        output.write(S)
        i = i+1
        if(i%10000==0):
            logger.info("Saved"+str(i)+"articles")
    output.close()
    logger.info("Finished Saved"+str(i)+"articlesconda act")

在这里插入图片描述

三、使用opencc将繁体数据转换为简体中文数据
使用Opencc,直接将数据转为简中。
在这里插入图片描述
四、jieba进行分词

import jieba
import jieba.analyse
import jieba.posseg as pseg
import codecs,sys
def cut_words(sentence):
    return " ".join(jieba.cut(sentence)).encode('utf-8')

f=codecs.open('test.txt','r',encoding="utf8")
target = codecs.open("test_result.txt","w",encoding="utf8")
print('open files')
line_num=1
line=f.readline()
while line:
    print('----processing ',line_num,' article------------')
    line_seg = " ".join(jieba.cut(line))
    target.writelines(line_seg)
    line_num = line_num+1
    line =f.readline()
f.close()
target.close()
exit()

在这里插入图片描述
在这里插入图片描述

五、构造word2vec模型

import logging
import os.path
import sys
import multiprocessing
from gensim.corpora import WikiCorpus
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
if __name__ == '__main__':

    program = os.path.basename(sys.argv[0])
    logger = logging.getLogger(program)
    logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')
    logging.root.setLevel(level=logging.INFO)
    logger.info("running %s" % ' '.join(sys.argv))

    if len(sys.argv) < 4:
        print (globals()['__doc__'], locals())
        sys.exit(1)
    inp, outp1, outp2 = sys.argv[1:4]
    model = Word2Vec(LineSentence(inp), vector_size=1000, window=5, min_count=5, workers=multiprocessing.cpu_count())
    model.save(outp1)
    model.wv.save_word2vec_format(outp2, binary=False)

在这里插入图片描述
在这里插入图片描述
六、相似度测试

from gensim.models import Word2Vec

en_wiki_word2vec_model = Word2Vec.load('wiki.test_result.test.model')

testwords = ['可爱','苹果','英语口语','伙伴','朋友']
for i in range(5):
    res = en_wiki_word2vec_model.wv.most_similar(testwords[i])
    print(testwords[i])
    print(res)

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值