最近需要做个热点预测的东西,听说word2vector很强大。于是就试试word2vector。
任务就是分析明星的离婚,结婚模型。
比如王宝强离婚,张靓颖结婚。
首先要获取数据:
这里小伙伴给了相关新闻的url:
这里有点让我淡疼,需要自己去爬取。
怎么爬的,爬虫不是本文相关的,有机会后面会详解。
获取数据为:
然后对其进行分词处理:
所有数据为一行哈。。。
然后进行训练判断。。。
【王宝强】和【马蓉】的相似度为: 0.996821340958
--------
与王宝强相似的词有:
张靓颖 0.996938765049
马蓉 0.996821403503
冯轲 0.996532142162
万元 0.99597120285
年 0.995867490768
人 0.995223104954
月 0.995128154755
感情 0.995105862617
说 0.995052337646
很 0.994920134544
--------
感觉后面效果不是很好,语料集还不够大吧,还需要更多的内容。
代码如下:
#coding:utf-8
'''
Created on 2016-11-18
'''
from gensim.models import word2vec
import logging
from gensim import corpora, models, similarities
# 主程序
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
sentences = word2vec.Text8Corpus(r"D:\data\files\r3.txt") # 加载语料
model = word2vec.Word2Vec(sentences, size=200) # 训练skip-gram模型; 默认window=5
#model = word2vec.Word2Vec.load_word2vec_format("computer.model.bin", binary=True)
# 计算两个词的相似度/相关程度
y1 = model.similarity(u"王宝强", u"马蓉")
print u"【王宝强】和【马蓉】的相似度为:", y1
print "--------\n"
# 计算某个词的相关词列表
y2 = model.most_similar(u"王宝强", topn=10) # 20个最相关的
print u"与王宝强相似的词有:\n"
for item in y2:
print item[0], item[1]
print "--------\n"
# 保存模型,以便重用
#model.save(u"computer.model")
# 对应的加载方式
# model_2 = word2vec.Word2Vec.load("text8.model")
# 以一种C语言可以解析的形式存储词向量
#model.save_word2vec_format(u"computer.model.bin", binary=True)
# 对应的加载方式
#model_3 = word2vec.Word2Vec.load_word2vec_format("text8.model.bin", binary=True)