Python Gensim简单的应用实例

来源:互联网 发布:汇电商淘宝插件 编辑:程序博客网 时间:2024/06/17 02:49

gensim是一款强大的自然语言处理工具
封装好的工具包有:
- 基本的语料处理工具
- LSI
- LDA
- HDP
- DTM
- DIM
- TF-IDF
- word2vec、paragraph2vec
这里我将使用的是word2vec,来做一个简单的测试代码
当然想要使用gensim你需要先安装好gensim,去搜索pip gensim网上的教程很多

def wordPro():    logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)    sentences = word2vec.Text8Corpus(u"E:\\语料\\1998人民日报-普通版.txt")    #第一个参数是训练语料,第二个参数是小于该数的单词会被剔除,默认值为5,    # 第三个参数是神经网络的隐藏层单元数,默认为100    model = word2vec.Word2Vec(sentences, size=200)    y1 = model.similarity(u"不错", u"好")    print u"【不错】和【好】的相似度为:", y1    print "--------\n"    y2 = model.most_similar(u"书", topn=20)  # 20个最相关的    print u"和【书】最相关的词有:\n"    for item in y2:        print item[0], item[1]    print "--------\n"    #训练的时间较长,将训练好的模型保存下来    model.save(u"书评.model")    model.save_word2vec_format(u"书评.model.bin", binary=True)

测试的结果,效果不是很好

【不错】和【好】的相似度为: 0.449105876843  --------  和【书】最相关的词有:   戏 0.732930064201  剧组 0.73255687952  水浒传 0.720457673073  三国演义 0.717744410038  关公 0.711197376251  日记 0.709460794926  这部 0.701338291168  讲述 0.694751381874  朴素 0.693894028664  日子 0.690877854824  门 0.689773917198  剧本 0.685462236404  卸 0.684027254581  卷 0.681394279003  读 0.680675268173  春秋 0.677090883255  翻阅 0.677015721798  梦 0.672347187996  歌 0.665402472019  传奇 0.66496026516  

再使用生成后的modle测试一下

def useModleTest():    model = gensim.models.Word2Vec.load(u"书评.model")    y1 = model.most_similar(u"主席", topn=20)  # 20个最相关的    for item in y1:        print item[0], item[1]    print "--------\n"

这次结果好像好点

总书记 0.763739228249  民革 0.742196917534  中央军委 0.709917664528  随同 0.709838449955  迟 0.705794453621  部长 0.696520328522  上将 0.693076491356  接见 0.692161500454  贝宁共和国 0.690106034279  瑞环 0.688430011272  转达 0.687135159969  部长会议 0.68623405695  仪 0.683727860451  主持 0.6834243536  绍祖 0.680112600327  会长 0.678747355938  致电 0.67872685194  浩田 0.678643524647  证监会 0.678385734558  到会 0.67820763588  --------

整体代码

# coding=utf-8import numpyfrom gensim.models import word2vecimport  gensimimport osimport os.pathimport sysimport jiebaimport codecsimport loggingreload(sys)sys.setdefaultencoding('utf-8')def wordPro():    logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)    sentences = word2vec.Text8Corpus(u"E:\\语料\\1998人民日报-普通版.txt")    #第一个参数是训练语料,第二个参数是小于该数的单词会被剔除,默认值为5,    # 第三个参数是神经网络的隐藏层单元数,默认为100    model = word2vec.Word2Vec(sentences, size=200)    y1 = model.similarity(u"不错", u"好")    print u"【不错】和【好】的相似度为:", y1    print "--------\n"    y2 = model.most_similar(u"书", topn=20)  # 20个最相关的    print u"和【书】最相关的词有:\n"    for item in y2:        print item[0], item[1]    print "--------\n"    #训练的时间较长,将训练好的模型保存下来    model.save(u"书评.model")    model.save_word2vec_format(u"书评.model.bin", binary=True)def useModleTest():    model = gensim.models.Word2Vec.load(u"书评.model")    y1 = model.most_similar(u"主席", topn=20)  # 20个最相关的    for item in y1:        print item[0], item[1]    print "--------\n"useModleTest()
原创粉丝点击