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”,竟然是这样的,难道是火星文?瞬间满脸黑线,一脸懵逼。弱弱地问一句,有人能看懂吗,膜拜一下。

Word2Vec中文语料实战_第1张图片

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

 
  
  #coding:utf8
  #读取倚天屠龙记文本,转码后存在新的文件里
  fin = open('倚天屠龙记.txt', 'r')
  fou = open('倚天屠龙记_uft8.txt', 'w')
  line = fin.readline()
  while line:
      newline = line.decode('GB18030').encode('utf-8')  #用GBK、GB2312都会出错
      print newline,
      print >> fou, newline,
      line = fin.readline()
  fin.close()
  fou.close()

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

Word2Vec中文语料实战_第2张图片

3.2 中文分词

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

Word2Vec中文语料实战_第3张图片

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

Word2Vec中文语料实战_第4张图片

3.3 模型训练

  #coding:utf8
  import gensim.models.word2vec as w2v
  model_file_name = '倚天屠龙记_model.txt'
  #模型训练,生成词向量
  sentences = w2v.LineSentence('倚天屠龙记_segmented.txt')
  model = w2v.Word2Vec(sentences, size=20, window=5, min_count=5, workers=4) 
  model.save(model_file_name)

3.4 模型测试

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

Word2Vec中文语料实战_第5张图片

4、参考文献

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

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


你可能感兴趣的:(机器学习)