应用题
8. 《神雕侠侣》是金庸先生在武侠小说创作上的一个里程碑,叙述杨过与小龙女之间的故事。这里给出《神雕侠侣》的网络版本,文件名为“神雕侠侣-网络版.txt”。
《神雕侠侣》中出现了很多人物,这里给出6个人物名字:杨过、小龙女、李莫愁、裘千尺、郭靖、黄蓉。统计人物之间的关联关系,这里定义一种“亲和度”关系如下:如果某名字A后的100个中文词语中出现上述6个名字中任何一个B,则名字A的亲和度加1。(注意,如果到文本末尾部分,名字A后没有100个中文词语,则有多少算多少)
请输出每个名字的亲和度,采用“人名-亲和度”形式,亲和度之间采用逗号分隔,以CSV格式输出,保存文件名为“神雕侠侣-人名亲和度.txt”如下:
杨过-小龙女:1024,杨过-李莫愁:20,(略),小龙女-杨过:2014
(略)
【正确答案】import jieba
fi=open("神雕侠侣-网络版.txt","r",encoding='utf-8')
fo=open("神雕侠侣-人名亲和度.txt","w",encoding='utf-8')
names=["杨过","小龙女","李莫愁","裘千尺","郭靖","黄蓉"]
d={}
for item in names:
d[item]=0
txt=fi.read()
ls=jieba.lcut(txt)
for i in range(len(ls)-100):
if ls[i] in names:
for j in range(1,101):
if ls[i+j]!=ls[i]and(ls[i+j] in names):
d[ls[i]]+=1
break
ols=[]
for key in d:
ols.append("{}-{}".format(key,d[key]))
fo.write(",".join(ols))
fi.close()
fo.close()
【答案解析】