使用Gensim库构造中文维基百度数据词向量word2vec模型

本文介绍了一个Python脚本,用于将XML格式的中文维基百科数据转换为TXT格式,并进一步利用转换后的数据训练Word2Vec词向量模型。此外,还展示了如何使用该模型进行词汇相似度测试。

1.xml格式转txt格式

process.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 修改后的代码如下:
import logging
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 (globals()['__doc__'] % locals())
        sys.exit(1)
    inp, outp = sys.argv[1:3]
    space = b' '
    i = 0
    output = open(outp, 'w',encoding='utf-8')
    wiki = WikiCorpus(inp, lemmatize=False, dictionary={})
    for text in wiki.get_texts():
        s=space.join(text)
        s=s.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) + " articles")
#python process.py zhwiki-latest-pages-articles.xml.bz2 wiki.zh.text

在cmd中当前目录执行命令:

python process.py 文件名.xml.bz2 输出名.text

2.查看数据,转换为简体数据格式

opencc下载地址:https://download.youkuaiyun.com/download/weixin_43746433/11393396

https://blog.youkuaiyun.com/weixin_43746433/article/details/96838330

3.构造中文维基百度数据词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))
    # check and process input arguments
    #if len(sys.argv) < 4:
    #    print (globals()['__doc__'] % locals())
    #    sys.exit(1)
    inp, outp1, outp2 = './data/zh.jian.wiki.seg-1.3g.txt','wiki.zh.text1.model','wiki.zh.text.vector'##sys.argv[1:4]
    model = Word2Vec(LineSentence(inp), size=400, window=5, min_count=5, workers=multiprocessing.cpu_count())
    model.save(outp1)
    model.model.wv.save_word2vec_format(outp2, binary=False)
#python word2vec_model.py zh.jian.wiki.seg.txt wiki.zh.text.model wiki.zh.text.vector#模型的向量

在这里插入图片描述

4. 测试模型相似度结果

from gensim.models import Word2Vec

en_wiki_word2vec_model = Word2Vec.load('./data/wiki.zh.text.model')

testwords = ['苹果','数学','学术','白痴','篮球']
for i in range(5):
    res = en_wiki_word2vec_model.most_similar(testwords[i])
    print (testwords[i])
    print (res)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值