使用wiki百科和gensim训练中文词向量

下载wiki百科的数据

那么我是从https://dumps.wikimedia.org/zhwiki/20170520/上下载的1.4G的这个xml版本

抽取数据的内容

使用https://github.com/attardi/wikiextractor这个工具来从解压后的文件中抽取内容。

繁体转简体

抽取的数据中有很多是繁体,参考http://licstar.net/archives/262,使用opencc项目

安装opencc

https://launchpad.net/ubuntu/artful/amd64/opencc/1.0.4-5下载opencc的deb包,双击安装
使用方式,在terminal中输入:

opencc -i input_file -o output_file -c zht2zhs.ins

下面是我的程序,转换多个文件:

#encoding:utf8
import os
outpath = 'zh-simplify'
outcount = -1
for alpha in ['A','B','C','D','E','F','G','H','I','J','K']:
    print(alpha)
    for i in range(10):
        print(i)
        for j in range(10):
            filename = 'A' + alpha + '/wiki_' + str(i) + str(j)
            if os.path.isfile(filename):
                outcount += 1
                outfilename = '%s/sim_wiki_%d' % (outpath,outcount)
                command = 'opencc -i %s -o %s -c zht2zhs.ini' % (filename,outfilename)
                os.system(command)

训练word2vec

然后开始使用gensim进行训练,中间用到了jieba进行分词,同时参考了http://blog.csdn.net/Star_Bob/article/details/47808499网站对于预料分布在多个文件中的处理方法。
我的代码如下,停用词来自http://blog.csdn.net/shijiebei2009/article/details/39696571和哈工大停用词表:

#encoding:utf8
import gensim,jieba,os
stoplist = {}.fromkeys([ line.strip() for line in open("所有停用词") ])  
class MySentences(object):
    def __init__(self, dirname):
        self.dirname = dirname

    def __iter__(self):
        for fname in os.listdir(self.dirname):
            for line in open(os.path.join(self.dirname, fname)):
                if len(line) > 0:
                    yield [segment for segment in jieba.cut(line.strip(),cut_all=False) if segment not in stoplist]

dirname = 'zh-simplify'

sentences = MySentences(dirname)
model = gensim.models.Word2Vec(sentences=sentences, size=300,min_count=5,workers=7)
model.wv.save_word2vec_format('myWord2Vec',binary=False)

接下来进行漫长的等待。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值