python分析人物关系_基于共现发现人物关系的python实现

python分析⼈物关系_基于共现发现⼈物关系的python实现基于共现发现⼈物关系的python实现
1.共现关系
在⽂献计量学中,关键词的共词⽅法常⽤来确定该⽂献集所代表学科中各主题之间的关系。⽽在这⾥,我们需要通过分析⼀篇⼩说或剧本,来分析剧中各个⾓⾊之间的⼈物关系。两者有很相同的地⽅。
⼀般我们认为,在⼀篇⽂章中的同⼀段出现的两个⼈物之间,⼀定具有某种关联,因此我们的程序的⼤致流程也可以确定下来。我们可以先做分词,将每⼀段中的⼈物⾓⾊抽取出来,然后以段落为单位,统计两个⾓⾊同时出现的出现次数,并把结果存在⼀个⼆维矩阵之中。这个矩阵也可以作为关系图的矩阵,矩阵中的元素(统计的出现次数)就是边的权值。
举个例⼦,⽐如,现有三个段落的分词结果如下:a/b/c,b/a/f,a/d/c,那么就是ab共现2次,ac共现2次,以此类推。
同时,为了⽅便,我们把⼈物和⼈物关系也通过⽂件记录,我们要分析的⼈物关系则来⾃于⼈名的名义(⼩说)
2.jieba分词
jieba分词的原理和语法可以参考这篇⽂章《中⽂分词的基本原理以及jieba分词的⽤法》
虽然有jieba分词可以对⽂章进⾏分析,但是仍然不是很准。⽐如,⼈名名义中有⼀个⾓⾊叫“易学习”,“易”是副词,“学习”是动词,因此很难将这个⼈名分出来。不过好在结巴分词提供了⾃定义字典,我们就可以根据之前的分词结果,⼀点⼀点去修正⾃⼰的字典即可。当然,我建议在构建⾃定义字典的时候,最好先直接把⼈名的名义的⾓⾊表直接抄⼀份过来,词性全部标记成nr(⼈名)。新风控制系统
这样我们就可以通过先分词,然后筛选词性的⽅式,把名字筛选出来。筛选出之后,就记录到每⼀段的⼀个list中,⽤于后⾯的矩阵构成。
这个过程我们是以段落为单位进⾏的,因此可以设置⼀个全局字典来记录每⼀个⾓⾊的权重(即词频统计)。代码如下:
# 将剧本进⾏分词,并将表⽰⼈名的词提出,将其他停⽤词和标点省略
# 提出⼈名的同时,同name字典记录下来,作为矩阵的⾏和列
def cut_word(text):
words=pseg.cut(text)
L_name=[]
for x in words :
if x.flag!='nr' or len(x.word) < 2:
continue
if (x.word):
Names[x.word]=1
else:
Names[x.word]=Names[x.word]+1
L_name.append(x.word)
门控系统return L_name
# 建⽴词频字典和每段中的⼈物列表
def namedict_built():
global Names
电热丝切割机
with open('e:/PY/relationship_','r') as f:
缘114
for l adlines():
n=cut_word(l)
if len(n)>=2: # 由于要计算关系,空list和单元素list没有⽤
Lines.append(n)
Names=dict(sorted(Names.items(),key = lambda x:x[1],reverse = True)[:36])
# print(Line)
3.构建矩阵
虽然嘴上说着矩阵,但实际上在代码⾥使⽤⼆维字典完成的,因为这样访问起来⽐较快。统计也很简(bao)单(li),就是把我们在上⾯得出的每⼀段的⼈物list都遍历⼀遍。。.
由于,分词结果总是会有⼀些奇怪的词,所以,我们在构建矩阵的时候,直接以上⾯代码中的Names中的⼈物为基准,滤掉其他不在Names中的词,不然会有其他东西乱⼊。代码如下:
# 通过遍历Lines来构建贡献矩阵
def relation_built():
for key in Names:
relationships[key]={}
for line in Lines:
for name1 in line:
if (name1):
continue
for name2 in line:
if name1==name2 or ((name2)):
continue
if not relationships[name1].get(name2):
relationships[name1][name2]= 1
else:
relationships[name1][name2] = relationships[name1][name2]+ 1
高见光# print(relationships)
做出来的图。。
>IT维保

本文发布于:2024-09-21 04:36:14,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/99991.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:关系   分词   矩阵   字典   筛选   统计
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议