Word2Vec中文语料实战


Word2Vec中文语料实战

        

        虽然Word2Vec在NLP领域很火,但网上关于Word2Vec中文语料训练的入门级资料比较少,所以本人整理了一份,希望对感兴趣的朋友有所帮助!本文使用的语料由作者亲自收集,代码由作者亲自编写,亲测有效!

        如有问题可联系作者:QQ:771966081       微信:Bryce_cvprml

1、环境配置

        本人使用的是MacBook + Python2.7.11

        首先,安装NLP工具包gensim,这里包含了今天的主角:Word2Vec

                pip install --upgrade gensim

        其次,安装中文分词工具包jieba

                pip install jieba

2、语料库说明

        从网上下载TXT版的《倚天屠龙记》,作为基本语料,还需要作进一步处理

3、详细实验步骤

3.1 文件编解码(非必需)

        满心欢喜地打开“倚天屠龙记.txt”,竟然是这样的,难道是火星文?瞬间满脸黑线,一脸懵逼。弱弱地问一句,有人能看懂吗,膜拜一下。


        很显然,这是由编解码不一致引起的问题,即写文件时的编码类型和读文件时的解码类型不同。但本人没有安装可以自定义解码方式的文本编辑器,所以只好小米加步枪,直接上代码:

  
  
[python] view plain copy
在CODE上查看代码片 派生到我的代码片
  1. #coding:utf8  
  2. #读取倚天屠龙记文本,转码后存在新的文件里  
  3. fin = open('倚天屠龙记.txt''r')  
  4. fou = open('倚天屠龙记_uft8.txt''w')  
  5. line = fin.readline()  
  6. while line:  
  7.     newline = line.decode('GB18030').encode('utf-8')  #用GBK、GB2312都会出错  
  8.     print newline,  
  9.     print >> fou, newline,  
  10.     line = fin.readline()  
  11. fin.close()  
  12. fou.close()  

        其实很简单,从原始文件“倚天屠龙记.txt”里逐行读取文本内容,先解码再编码,然后输出到新的文件“倚天屠龙记_uft8.txt”里。新的文件长这个样子,是不是一下子能看懂了,很开心有木有^_^ 

3.2 中文分词

        接下来,还要分词、去掉标点符号。废话不多说,直接上代码。其实也很简单,从“倚天屠龙记_uft8.txt”里逐行读取文本,先分词,再去掉标点符号,最后保存到文件“倚天屠龙记_segmented.txt”。分词用到了jieba,本文删除标点符号的方式有点粗暴,不许笑出声来!(细心的读者可能会问,为什么这里不直接给出代码而只是代码截图呢,哈哈。。。因为这里直接贴上代码格式会很乱,为了使代码看起来清晰,只好这样了)

        分词后的结果如下,内心里一阵狂喜对不对?!


3.3 模型训练


  
  
[python] view plain copy
在CODE上查看代码片 派生到我的代码片
  1. #coding:utf8  
  2. import gensim.models.word2vec as w2v  
  3. model_file_name = '倚天屠龙记_model.txt'  
  4. #模型训练,生成词向量  
  5. sentences = w2v.LineSentence('倚天屠龙记_segmented.txt')  
  6. model = w2v.Word2Vec(sentences, size=20, window=5, min_count=5, workers=4)   
  7. model.save(model_file_name)  

3.4 模型测试

        到了最激动人心的时刻,这里打印出了测试代码和结果,看起来还真有点意思啊!赵敏和自己的相似度为1;赵敏和周芷若的相似度0.98277,比较接近;赵敏和韦一笑的相似度为0.80652,远不如赵敏和周芷若相似;最后,查找与张三丰最相似的词,直觉上来看,排前6的都有一定道理,灭绝师太和他都是一代掌门,也是宗师,最相似;排到2到6的都是他的徒弟和徒孙。


4、参考文献

1)中文分词工具包jieba:http://www.oschina.net/p/jieba/?fromerr=s7MN6pKB

2)NLP工具包gensim:https://radimrehurek.com/gensim/models/word2vec.html


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值