admin 管理员组

文章数量: 887007

利用词向量来分析人物关系

1、安装gensim
  如果没有安装numpy,scipy,首先去安装(注意对应python版本);再安装gensim.
  如果包已经安装好,但是运行代码时候出现:DLL找不到模块。查了网上的说法是包没安装对,版本的问题,but我换了好几个版本,都有错。。。。
  解决方式:(方式二我试了,没有那个错,程序可以运行)
官网安装。
方式1
方式2
2、知识介绍
  Gensim是自然语言处理中的一款具备多种功能的神器。Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。它支持包括TF-IDF,LSA,LDA,和word2vec在内的多种主题模型算法,支持流式训练,并提供了诸如相似度计算,信息检索等一些常用任务的API接口,里面的语意推断分析相似词汇 功能非常著名。
基本概念
语料(Corpus):一组原始文本的集合,用于无监督地训练文本主题的隐层结构。语料中不需要人工标注的附加信息。在Gensim中,Corpus通常是一个可迭代的对象(比如列表)。每一次迭代返回一个可用于表达文本对象的稀疏向量。
向量(Vector):由一组文本特征构成的列表。是一段文本在Gensim中的内部表达。
稀疏向量(SparseVector):通常,我们可以略去向量中多余的0元素。此时,向量中的每一个元素是一个(key, value)的元组
模型(Model):是一个抽象的术语。定义了两个向量空间的变换(即从文本的一种向量表达变换为另一种向量表达)。
再读取文件,分词,去掉停用词,这些之前都已经写过了,今天只写利用词向量来计算词语的关联度(相似度)还有就是词语的相似度。

代码如下:

# 构建词向量
my_wv = Word2Vec(text_, size=200, min_count=5, window=2, iter=100)# 查看词向量
name = '孙少平'
#print(my_wv[name])
print(my_wv.similar_by_word(name,topn=3)) # 查看跟'孙少平'相关性前三的词
# 查看跟孙少平关系相当于父子跟田福堂的关系的词
print(my_wv.most_similar(['父子', '田福堂'], [name], topn=3))#计算两词之间的余弦相似度

结果如下:

  对于一个词的相似度有利于分析人物性格和文本中主要人物产生关系的对象,但是一但计算两词的相似度,其结果是很差的,有待于提高。
参考博客:

本文标签: 利用词向量来分析人物关系