zoukankan      html  css  js  c++  java
  • word2vec词向量处理中文语料

    word2vec介绍

    word2vec官网https://code.google.com/p/word2vec/

    • word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词之间的距离。
    • 它将term转换成向量形式,可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。
    • word2vec计算的是余弦值,距离范围为0-1之间,值越大代表两个词关联度越高。
    • 词向量:用Distributed Representation表示词,通常也被称为“Word Representation”或“Word Embedding(嵌入)”。

    简言之:词向量表示法让相关或者相似的词,在距离上更接近。

    具体使用(处理中文)

    收集语料

    本文:亚马逊中文书评语料,12万+句子文本。
    语料以纯文本形式存入txt文本。
    注意
    理论上语料越大越好
    理论上语料越大越好
    理论上语料越大越好
    重要的事情说三遍。
    因为太小的语料跑出来的结果并没有太大意义。

    分词

    中文分词工具还是很多的,我自己常用的:
    - 中科院NLPIR
    - 哈工大LTP
    - 结巴分词

    注意:分词文本将作为word2vec的输入文件。

    分词文本示例
    语料示例

    word2vec使用

    python,利用gensim模块。
    win7系统下在通常的python基础上gensim模块不太好安装,所以建议使用anaconda,具体参见: python开发之anaconda【以及win7下安装gensim】

    直接上代码——

     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 
     4 """
     5 功能:测试gensim使用,处理中文语料
     6 时间:2016年5月21日 20:49:07
     7 """
     8 
     9 from gensim.models import word2vec
    10 import logging
    11 
    12 # 主程序
    13 logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
    14 sentences = word2vec.Text8Corpus(u"C:\Users\lenovo\Desktop\word2vec实验\亚马逊中文书评语料.txt")  # 加载语料
    15 model = word2vec.Word2Vec(sentences, size=200)  # 默认window=5
    16 
    17 # 计算两个词的相似度/相关程度
    18 y1 = model.similarity(u"不错", u"")
    19 print u"【不错】和【好】的相似度为:", y1
    20 print "--------
    "
    21 
    22 # 计算某个词的相关词列表
    23 y2 = model.most_similar(u"", topn=20)  # 20个最相关的
    24 print u"和【书】最相关的词有:
    "
    25 for item in y2:
    26     print item[0], item[1]
    27 print "--------
    "
    28 
    29 # 寻找对应关系
    30 print u"书-不错,质量-"
    31 y3 = model.most_similar([u'质量', u'不错'], [u''], topn=3)
    32 for item in y3:
    33     print item[0], item[1]
    34 print "--------
    "
    35 
    36 # 寻找不合群的词
    37 y4 = model.doesnt_match(u"书 书籍 教材 很".split())
    38 print u"不合群的词:", y4
    39 print "--------
    "
    40 
    41 # 保存模型,以便重用
    42 model.save(u"书评.model")
    43 # 对应的加载方式
    44 # model_2 = word2vec.Word2Vec.load("text8.model")
    45 
    46 # 以一种C语言可以解析的形式存储词向量
    47 model.save_word2vec_format(u"书评.model.bin", binary=True)
    48 # 对应的加载方式
    49 # model_3 = word2vec.Word2Vec.load_word2vec_format("text8.model.bin", binary=True)
    50 
    51 if __name__ == "__main__":
    52     pass


    运行结果

     1 【不错】和【好】的相似度为: 0.790186663972
     2 --------
     3 
     4 和【书】最相关的词有:
     5 
     6 书籍 0.675163209438
     7 书本 0.633386790752
     8 确实 0.568059504032
     9 教材 0.551493048668
    10 正品 0.532882153988
    11 没得说 0.529319941998
    12 好 0.522468209267
    13 据说 0.51004421711
    14 图书 0.508755385876
    15 挺 0.497194319963
    16 新书 0.494331330061
    17 很 0.490583062172
    18 不错 0.476392805576
    19 正版 0.460161447525
    20 纸张 0.454929769039
    21 可惜 0.450752496719
    22 工具书 0.449723362923
    23 的确 0.448629021645
    24 商品 0.444284260273
    25 纸质 0.443040698767
    26 --------
    27 
    28 书-不错,质量-
    29 精美 0.507958948612
    30 总的来说 0.496103972197
    31 材质 0.493623793125
    32 --------
    33 
    34 不合群的词: 很
     

    参考资料

    【python gensim使用】word2vec词向量处理英文语料:
    http://blog.csdn.net/churximi/article/details/51472203
    深度学习:使用 word2vec 和 gensim:
    http://www.open-open.com/lib/view/open1420687622546.html

  • 相关阅读:
    第9.11节 Python中IO模块文件打开读写操作实例
    第9.10节 Python中IO模块其他文件操作属性和方法简介
    Python使用import导入模块时执行了模块的文件但报ModuleNotFoundError错误的愚蠢问题
    Python使用import导入模块时报ValueError: source code string cannot contain null bytes的解决方案
    第9.9节 Python文件随机读写定位操作方法seek
    第9.8节 Python使用writelines函数写入文件内容
    第9.7节 Python使用write函数写入文件内容
    Python中import模块时报SyntaxError: (unicode error)utf-8 codec can not decode 错误的解决办法
    The 2nd tip of DB Query Analyzer
    水仙花数优化问题:穷举法、查找表法、组合数学法
  • 原文地址:https://www.cnblogs.com/chenlove/p/9911344.html
Copyright © 2011-2022 走看看