琅琊榜

从八号开始,经朋友善意提醒点开的琅琊榜,一发不可收拾到现在随着电视的结局,此番疯狂终于收尾。
首先呢还是想要理理这个电视的脉络:从麒麟才子得之可得天下开始,江左盟随着江左梅郎进入画面。当时势不两立互相算计的七珠亲王景桓和太子……(好吧,这个太子太挫没记住名字)为了争夺麒麟才子争执不休,竞相向其讨好。当时的梅长苏化名苏哲因朋友萧景睿邀请寄居一品军候谢玉家中养病。(此处一道bug为什么苏哲恰恰此时收到了朋友邀请来京城养病,可能是天意),然后序幕拉开。来京城之前,梅长苏已经将京城布置妥当,该有的人马,该有的铺子,都早已开张,看似与常规无异。从皇上替霓凰选亲,梅长苏遇见霓凰开始,埋下霓凰先于常人认出林殊的伏笔,毕竟是夫妻,谁也瞒不了谁,除非对方太笨。选亲初显麒麟才子料事如神。三小儿打败百里奇也显示出了江左盟在江湖的地位和能力。但此处有个隐秘的地方,就是他安排百里奇进入选亲队伍,而且还不是梁人,而且还是其他国家的勇士,可见江左盟势力范围之广。安排百里奇说是为了要让郡主不至于被迫成亲,但看后面挑三小儿,打败百里奇,确实有救庭生的预先计划。(此处有一bug,挑小儿的时候,蒙挚挑选,梅长苏事先告诉过蒙挚选谁了么?)然后事情发展到太子和誉王的PK,誉王被蒙蔽,误以为梅长苏真心实意辅佐自己。双方互掐之下彼此损失大将和手里的棋子。就拿办案来说,靖王主审誉王自己的人手,若是誉王或者誉王的谋士,一定是力保自己的人手,重新提拔一个多难,一来时间短,找不到死心塌地护主子的,二来,一时间找到的,一定是贪图一时利益的小人,不会死心塌地办事。誉王被一番利害分析就唬住了,涨了靖王的功劳损伤了自己的人马,虽然太子也被不停的拉下马。当两者拉扯的差不多的时候,靖王从郡王成了亲王,那两者的势力确实被剥削的啥也不剩了,(此处有一bug,从电视剧来看太子那么挫,只会抢功,说好话,按理誉王更像皇帝,为什么太子不是景桓呢?皇帝不是都说了没关系么,说有意培养他喽,所以bug就是前面皇上的言行和后面并对不上),这废太子也真够呛,废到最后还是自己把自己给废了,真是bug。
都说擒贼先擒王,最后夏江逃跑,梅长苏一点都不着急,起先我是以为,翻案需要契机,所以林殊选定契机为夏江。而后面的发展却不同于我所想,夏江逃跑,梅长苏没给抓回来,倒是还让夏江告了一状,这是赚取观众泪点,让我们看梅长苏如何有勇有谋走一遭悬镜司,吃一遭毒药,睡几天觉。不理解的是人家般若知道从童路着手先去了眼线,为什么在已经和悬镜司公开斗的时候不先把人家眼线断掉,乱七八糟来这么好几出呢?这叫强行出剧情。感觉就是编者好像哪天营养好,梅长苏就超常发挥机智过人料事如神,哪天营养不良,就错失良机,转了个山道十八弯。虽然也是扳回局面了,但还是有故意让观众揪心的嫌疑,尤其是后面冰续草出现,按当时那个局面,那个紧张局势,完全可以改写为哇塞找到冰续草了,然后费尽九牛二虎之力延寿个几年的,结果吧,非扯什么以血换血来体现林殊为人不为己的优秀品德。要是非要十个人的血量那能不能找100个人每个人分出十分之一,能不能1000个人,每个人分出百分之一?(此处又是一大bug),林殊可以为了聂锋割腕让其饮血,难道没有一千个人排成一排心甘情愿的做这个事?整个江左盟呀,整个禁军呀,整个朝廷呀!为了凸显林殊的大义凛然,重情重义,写书的人就把这么个充满智慧的人写死了。要是写没得救还好,像诸葛亮一样挂就挂了,为国家耗尽心血。可是这么一出倒是让蔺晨一世英名败笔了。还有一处bug,(这战事,早不出晚不出,偏偏啥事也没有的时候,东南西北都出战事了,还非得林殊上战场,这不是强行给他扣上为国献身的光环么?)逻辑强行相关,这人聪明的,有些不正常了。
琅琊榜,如果是缩减点,也许可以成为一本精品小说,虽然逻辑有些牵强但都还说得过去,但是拍成电视剧,感觉有些为了凑剧情而写故事了,虽然貌似有理有据,却还是有些牵强,不过比起当下某月某传什么乱七八糟的还是要好些,美人也耐看,衣服也漂亮,总体还不错。但这个电视里面有很重要的一点是值得感谢的。感谢他给了我一种信念,如果有目标,就一定要为了目标努力。这样才有实现目标的可能。梅长苏,背负着全赤焰军七万多人命,背负了父亲的期许活了下来,所有的一切都是为了洗清罪名,洗清罪名,洗清罪名,期间多少次他可以退步,可以让自己舒服些,可是他并没有,如此重道义之人,好在有无上的谋略,不然岂不是世界的一大灾难?他所受的所有痛苦,挫骨,削皮,知心朋友的怀疑,好在局势没有超出他的预料,不然一定会像诸葛亮一样挂,像周瑜一样被气的吐血,所以感谢他的无上谋略。最后居然还要领兵打仗,我也是醉了,他这权衡,强行凸显道义。至爱人,朋友,亲人于不顾,正常人应该是不会这么傻的。誉王为了太子位,殚精竭虑,虽然最终未成,但也是为目标奋斗,靖王为了翻案,学会慎重,学会思考,虽然前期莽撞,但后期就跟变了个人似的,谨慎,聪明,也是为了自己的目标,这里面大家都有自己的目标,悬镜司首尊是为了悬镜司的长存和荣耀,皇帝是为了皇帝的颜面和皇位,一切的一切都是有目标的,不知道我们的目标,是不是也可以像电视里某人一样,一直坚守着,为此谋划着,让整个世界都为我们的未来而生?这一点是最感染我的,最让我难以自拔的。我看篮球,看足球会因为他们输球懊恼会因为他们赢球而随之高兴,也是因为他们的专注,为一个目标奋斗的感觉而感染。这就是我一直想要的状态。我有目标,但从来没有因为一个目标而全力以赴,难道我想做的是蔺晨那样的人?不管世事但有着操心世事的能力。又难道我想做飞流?不管别人说什么,忠心于自己,是或者不是,有着自己的理念,虽然心智不全,看着傻傻的?又难道我想做静妃?一介医女,能经得起大起大落,能承受寂寞和打压,也能为了自己执着的事而努力,且成功翻盘?还是说,我就做好自己!但不管怎样,有目标为之拼搏,这是未来的前提,走起!

import urllib.request from bs4 import BeautifulSoup import re import jieba import matplotlib.pyplot as plt import networkx as nx import csv import jieba.posseg as pseg import matplotlib.colors as mcolors 添加用户代理头避免被拦截 headers = { ‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36’ } 从百度百科获取《琅琊》数据 url = “https://baike.baidu.com/item/琅瓊/15474822” req = urllib.request.Request(url, headers=headers) response = urllib.request.urlopen(req) html_content = response.read().decode(‘utf-8’) soup = BeautifulSoup(html_content, ‘html.parser’) 提取剧情内容 all_jq = “” 主要剧情 main_plot = soup.find(‘div’, class_=‘lemma-summary’) if main_plot: paragraphs = main_plot.find_all(‘div’, class_=‘para’) for para in paragraphs: content_text = para.get_text(strip=True) content_text = re.sub(r’\s*[\d+]', ‘’, content_text).strip() all_jq += content_text + “\n” 分集剧情 episode_section = None for h2 in soup.find_all(‘h2’): if “分集剧情” in h2.get_text().strip(): episode_section = h2 break if episode_section: table = episode_section.find_next(‘table’, class_=‘table-view’) if table: rows = table.find_all(‘tr’) for row in rows: if row.th: # 跳过表头 continue tds = row.find_all(‘td’) if len(tds) >= 2: episode_text = tds[1].get_text(strip=True) 清理文本 episode_text = re.sub(r’[编辑]|\s{2,}', ‘’, episode_text) if episode_text: all_jq += episode_text + “\n” 保存剧情 with open(‘琅琊剧情.txt’, ‘w’, encoding=‘utf-8’) as f: f.write(all_jq) 提取主要角色 names = [] characters_section = None for h2 in soup.find_all(‘h2’): if “角色介绍” in h2.get_text().strip() or “主要角色” in h2.get_text().strip(): characters_section = h2 break if characters_section: 查找角色表格 table = characters_section.find_next(‘table’, class_=‘table-view’) if table: rows = table.find_all(‘tr’) for row in rows: 第一行为表头,跳过 if row.th: continue 第一列为角色名称 first_td = row.find(‘td’) if first_td: 移除括号内的演员名(如"梅长苏(胡歌饰)") name_text = re.sub(r’(.)|(.)‘, ‘’, first_td.get_text(strip=True)) 只保留中文名 if re.match(r’^[\u4e00-\u9fa5·]{2,4}$', name_text): names.append(name_text) 手动添加主要角色(确保核心角色都在列表中) core_characters = [‘梅长苏’, ‘萧景琰’, ‘霓凰郡主’, ‘蒙挚’, ‘誉王’, ‘谢玉’, ‘言豫津’, ‘萧景睿’] for char in core_characters: if char not in names: names.append(char) 去重并排序 names = sorted(set(names)) print(f"提取的角色列表: {', '.join(names)}") 保存角色列表 with open(‘琅琊角色名单.txt’, ‘w’, encoding=‘utf-8’) as f: f.write(‘\n’.join(names)) 为分词添加角色名 for name in names: jieba.add_word(name) 对于3-4字的角色名,添加可能的分词组合 if len(name) == 3: jieba.add_word(name[:2]) jieba.add_word(name[1:]) elif len(name) == 4: jieba.add_word(name[:2]) jieba.add_word(name[2:]) jieba.add_word(name[1:3]) 人物出场次数统计 with open(‘琅琊剧情.txt’, ‘r’, encoding=‘utf-8’) as f: plot_summary = f.read() 分割句子 sentences = [s for s in re.split(r’[。!?:]', plot_summary) if s.strip()] 统计各角色出场次数 name_counts = {name: 0 for name in names} for sentence in sentences: 使用jieba分词 words = jieba.cut(sentence) for word in words: if word in name_counts: name_counts[word] += 1 按出场次数排序 sorted_name_counts = sorted(name_counts.items(), key=lambda item: item[1], reverse=True) top_ten = sorted_name_counts[:10] 绘制统计图 plt.figure(figsize=(12, 6)) top_names, top_counts = zip(*top_ten) plt.bar(top_names, top_counts, color=‘#1f77b4’) plt.xlabel(‘角色名称’, fontsize=12) plt.ylabel(‘出场次数’, fontsize=12) plt.title(‘《琅琊》主要角色出场统计TOP10’, fontsize=14) plt.xticks(rotation=15) plt.tight_layout() plt.savefig(‘琅琊人物出场次数统计.png’, dpi=150) plt.show() 构建人物关系网络 G = nx.Graph() 添加节点 for name, count in name_counts.items(): if count > 0: # 只添加实际出场的角色 G.add_node(name, size=count) 关系增强字典(已知的强关系对) enhanced_relationships = { 正面关系 (‘梅长苏’, ‘萧景琰’): 10, # 挚友 (‘梅长苏’, ‘霓凰郡主’): 10, # 情侣 (‘梅长苏’, ‘蒙挚’): 8, # 部下 (‘萧景琰’, ‘霓凰郡主’): 7, # 兄妹 负面关系 (‘梅长苏’, ‘誉王’): -8, # 政敌 (‘萧景琰’, ‘誉王’): -8, # 政敌 (‘梅长苏’, ‘谢玉’): -10, # 仇敌 } 分析人物关系:同一句子中出现算一次关联 sentence_cooccurrence = {} for sentence in sentences: 找出当前句子中出现的角色 current_chars = set() words = jieba.cut(sentence) for word in words: if word in names: current_chars.add(word) 为当前句子中出现的人物建立关系 char_list = list(current_chars) for i in range(len(char_list)): for j in range(i+1, len(char_list)): char1 = char_list[i] char2 = char_list[j] pair = tuple(sorted([char1, char2])) # 累加关系权重 if pair in sentence_cooccurrence: sentence_cooccurrence[pair] += 1 else: sentence_cooccurrence[pair] = 1 将关系添加到图中 for pair, count in sentence_cooccurrence.items(): weight = count 检查是否在增强字典中 if pair in enhanced_relationships: 如果是正权重就增强,负权重就减弱 sign = 1 if enhanced_relationships[pair] > 0 else -1 weight = max(2, count) * (abs(enhanced_relationships[pair])/5) weight *= sign elif (pair[1], pair[0]) in enhanced_relationships: sign = 1 if enhanced_relationships[(pair[1], pair[0])] > 0 else -1 weight = max(2, count) * (abs(enhanced_relationships[(pair[1], pair[0])])/5) weight *= sign G.add_edge(pair[0], pair[1], weight=weight) 7. 导出CSV文件(用于Gephi或其他可视化工具) with open(‘琅琊人物关系_节点.csv’, ‘w’, newline=‘’, encoding=‘utf-8-sig’) as f: writer = csv.writer(f) writer.writerow([‘Id’, ‘Label’, ‘Size’]) for node, data in G.nodes(data=True): writer.writerow([node, node, data.get(‘size’, 1)]) with open(‘琅琊人物关系_边.csv’, ‘w’, newline=‘’, encoding=‘utf-8-sig’) as f: writer = csv.writer(f) writer.writerow([‘Source’, ‘Target’, ‘Weight’, ‘Type’]) for u, v, data in G.edges(data=True): edge_type = ‘Positive’ if data[‘weight’] > 0 else ‘Negative’ writer.writerow([u, v, abs(data[‘weight’]), edge_type]) 可视化人物关系图 plt.figure(figsize=(20, 16)) 创建颜色映射 - 基于关系权重 weights = [abs(data[‘weight’]) for _, _, data in G.edges(data=True)] norm = mcolors.Normalize(vmin=min(weights), vmax=max(weights)) cmap = plt.cm.coolwarm # 暖色为正向关系,冷色为负向关系 节点大小基于出场次数 node_sizes = [data[‘size’]*50 for _, data in G.nodes(data=True)] 边的颜色和宽度基于关系强度 edge_colors = [] edge_widths = [] for u, v, data in G.edges(data=True): if data[‘weight’] > 0: 正向关系 - 红色系 edge_colors.append(cmap(1 - norm(data[‘weight’]))) # 浅红到深红 else: 负向关系 - 蓝色系 edge_colors.append(cmap(norm(abs(data[‘weight’])))) # 浅蓝到深蓝 edge_widths.append(norm(abs(data[‘weight’])) * 2 + 0.5) 使用spring_layout算法布局 pos = nx.spring_layout(G, k=0.3, iterations=50, seed=42) 绘制图形 nx.draw_networkx_nodes(G, pos, node_size=node_sizes, node_color=‘#ff9999’, alpha=0.9) nx.draw_networkx_edges(G, pos, edge_color=edge_colors, width=edge_widths, alpha=0.7) nx.draw_networkx_labels(G, pos, font_size=12, font_family=‘SimHei’) 添加图例(说明) plt.scatter([], [], c=‘#ff9999’, s=100, label=‘人物节点’) plt.plot([], [], c=‘red’, linewidth=2, label=‘正向关系’) plt.plot([], [], c=‘blue’, linewidth=2, label=‘负向关系’) plt.legend(loc=‘best’) plt.title(‘《琅琊》主要人物关系网络’, fontsize=20) plt.axis(‘off’) plt.tight_layout() plt.savefig(‘琅琊人物关系图.png’, dpi=150) plt.show() print(“分析完成!已保存关系图和数据文件。”) 将这个案例改变成网址https://baike.baidu.com/item/琅琊/12700172 使得生成的图片有数据
06-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z_shsf

来包瓜子嘛,谢谢客官~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值