用word2vector做词相似性聚类

最近需要做个热点预测的东西,听说word2vector很强大。于是就试试word2vector。

任务就是分析明星的离婚,结婚模型。
比如王宝强离婚,张靓颖结婚。

首先要获取数据:
这里小伙伴给了相关新闻的url:

用word2vector做词相似性聚类_第1张图片

这里有点让我淡疼,需要自己去爬取。
怎么爬的,爬虫不是本文相关的,有机会后面会详解。

获取数据为:
用word2vector做词相似性聚类_第2张图片

然后对其进行分词处理:

这里写图片描述

所有数据为一行哈。。。

然后进行训练判断。。。

【王宝强】和【马蓉】的相似度为: 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)

你可能感兴趣的:(自然语言处理)