自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于Python分析金庸小說里的主角,原來他才是真正的主角!

開發(fā) 后端
說起武俠小說,不得不提中國武俠小說三大宗師——金庸、梁羽生、古龍,從上世紀(jì)七八十年代開始,大量的武俠經(jīng)典出現(xiàn)在熒幕之中。三位大師的文字作品幾乎都讀過,在學(xué)習(xí)Python和數(shù)據(jù)分析后又發(fā)現(xiàn)了很多好玩的東西,今天就用數(shù)據(jù)分析來探索一下武俠小說。

粉絲獨(dú)白

說起武俠小說,不得不提中國武俠小說三大宗師——金庸、梁羽生、古龍,從上世紀(jì)七八十年代開始,大量的武俠經(jīng)典出現(xiàn)在熒幕之中。三位大師的文字作品幾乎都讀過,在學(xué)習(xí)Python和數(shù)據(jù)分析后又發(fā)現(xiàn)了很多好玩的東西,今天就用數(shù)據(jù)分析來探索一下武俠小說。

要點(diǎn):

- 誰是主角(金庸)

- 用詞習(xí)慣(梁羽生)

一:誰是金庸小說的主角

天龍八部是一部多主角小說,蕭峰、虛竹、段譽(yù)三兄弟各有際遇,曾經(jīng)還因誰才是第一主角的問題引發(fā)過一陣爭論。

現(xiàn)在我們已經(jīng)懂得用數(shù)據(jù)思維來考慮問題,看看怎樣對中文小說進(jìn)行數(shù)據(jù)分析吧。出場率是評價一個小說人物的重要指標(biāo),我們就先來對《天龍八部》中人物的出場情況進(jìn)行一下統(tǒng)計分析吧。

1.分詞

中文分詞是中文信息處理的基礎(chǔ),但是由于漢語的博大精深,中文分詞的難度比英文要高出一大截,好在python有很多用于中文分詞的庫,jieba就是其中受歡迎程度比較高的一款,下面我們就來體會一下它的妙用。

因為文件太大,每次只讀取固定長度的字符串

基于Python分析金庸小說里的主角,原來他才是真正的主角!

 

  • jieba用起來非常簡單,短短幾行代碼就完成了分詞工作(下圖),可是...仔細(xì)一看發(fā)現(xiàn)哪里不對了
  • “段譽(yù)”作為一個姓名沒有被單獨(dú)分出來,而是和其他一些動詞連在一起,另外也有一些角色名字被拆分成了兩個甚至更多的單詞,例如“神仙姊姊”被分成了“神仙”和“姊姊”兩個詞
  • 不過這也難怪,中文的靈活性太強(qiáng),一個詞往往有多層含義和多種用法,看來直接使用jieba分詞還是會有不小的誤差,我們得想辦法來解決這個問題,不然會對分析結(jié)果造成干擾。

基于Python分析金庸小說里的主角,原來他才是真正的主角!

 

2.優(yōu)化

jieba本身帶有詞庫,而且具備很強(qiáng)大新詞識別的功能,但是為了獲得更高的準(zhǔn)確率我們必須載入自定義詞庫。

因為這次的目的是對人物姓名進(jìn)行分析,我們先從網(wǎng)上找一份熱心網(wǎng)友整理的《天龍八部》人物大全,然后參照“jieba/dict.txt”的格式(一個詞占一行,每一行分三部分:詞語、詞頻(可省略)、詞性(可省略),用空格隔開,順序不可顛倒)做成詞典文件my_dict.txt。

基于Python分析金庸小說里的主角,原來他才是真正的主角!

 

使用 jieba.load_userdict()函數(shù)加載到程序中。如果在程序運(yùn)行過程中發(fā)現(xiàn)其他問題,還可以使用add_word()、suggest_freq()等函數(shù)對詞典和詞頻進(jìn)行動態(tài)調(diào)整。

  • 用load_userdict導(dǎo)入自定義字典,file_name 為文件類對象或自定義詞典的路徑
  • add_word()可在程序中動態(tài)增加詞典
  • del_word()可在程序中動態(tài)刪減詞典
  • suggest_freq()可調(diào)節(jié)單個詞語的詞頻,使其能(或不能)被分出來

現(xiàn)在我們已經(jīng)成功解決了人名被意外分割的問題,而對于“段譽(yù)聽”、“段譽(yù)見”這類包含姓名但分割不徹底的單詞,我們可以使用suggest_freq函數(shù)調(diào)整詞頻進(jìn)行強(qiáng)制分割

不過我感覺這樣做畢竟麻煩,還是決定用正則表達(dá)式的方法把我們需要的人名單獨(dú)取出來,同時將我們不需要的信息(不包含人名的單詞)過濾掉。

3.制圖

經(jīng)過上面兩步操作獲得了一份僅包含《天龍八部》人名的文本,我們可以很輕易地將它讀取并轉(zhuǎn)換為list格式,

現(xiàn)在是不是有一種“我為刀俎,它為魚肉”的感覺了。經(jīng)過簡單的數(shù)據(jù)處理,我們得到了每個人物的名字在小說中出現(xiàn)的頻次,由于蕭峰和喬峰是同一個人,為了方便統(tǒng)計將兩個名字的出場次合并。

然后取出場率排名前30位的角色數(shù)據(jù),用圖表的形式展示出來。

基于Python分析金庸小說里的主角,原來他才是真正的主角!

 

雖然在很多人心中蕭峰的形象更適合本書主角,但從分析結(jié)果來看,“段譽(yù)”這個名字在小說中的出場頻率是最高的。

蕭峰(喬峰)緊隨其后,難怪有人為誰是第一主角的事發(fā)起過爭論。不過人物的重要性也不能只看戲份多少,像慕容博,蕭遠(yuǎn)山,玄慈,段正淳這些人的出場率雖然不是特別高。

但正是這幾個人上一代的宿命恩怨,引發(fā)了蕭峰虛竹段譽(yù)三兄弟的江湖故事,實(shí)實(shí)在在是另一條暗線的主角。

關(guān)于主角的問題我們就不展開討論了,從圖中還可以看到其他一些角色的出場頻率,仔細(xì)琢磨一下還是蠻有意思的。

其實(shí)《天龍八部》的中心思想就是“求不得”:

  • 段譽(yù)不想學(xué)武功卻練成了絕世神通
  • 一心追求王語嫣最終美人對慕容復(fù)不離不棄
  • 蕭峰立志保衛(wèi)大宋沒想到自己居然是契丹人
  • 決定與阿朱塞外牧馬,然而造化弄人,心愛的人卻死在自己手上

世間種種往往難以掌控,所以我們平時閱讀、學(xué)習(xí)的過程中也不必過于心浮氣躁、急功近利,還是要平心靜氣、踏實(shí)苦練,即使目標(biāo)無法完全實(shí)現(xiàn)也可能遇到“有心栽花花不開、無心插柳柳成蔭”的境遇。

二:小說里的用詞習(xí)慣

每個人寫作都會有自己的風(fēng)格,而寫作風(fēng)格很大程度上可以在用詞習(xí)慣上體現(xiàn)出來,剛才我們分析了金老的作品, 這次我們來看下被譽(yù)為新派武俠小說開山祖師梁羽生的兩部部代表作品——《萍蹤俠影錄》和《云海玉弓緣》。

1.取詞

既然是中文語言分析那第一步當(dāng)然還是分詞了,考慮到“說”、“走”、“開始”、“平常”等簡單詞語使用頻率通常很高且難以體現(xiàn)寫作風(fēng)格。

這里我們僅提取詞長度不小于4的成語、俗語和短語進(jìn)行分析。同時,考慮到某些人名(例如:上官婉兒、澹臺滅明)等專有名詞會對分析結(jié)果造成干擾,在分詞取詞的時候可以一并過濾掉,最終得到這樣一份詞語文件:

基于Python分析金庸小說里的主角,原來他才是真正的主角!

 

2.云圖

對用詞習(xí)慣的分析更傾向于定性分析,我們這里使用詞云圖來作展示,首先繪制《萍蹤俠影錄》的詞云圖。

基于Python分析金庸小說里的主角,原來他才是真正的主角!

 

我們可以看到在這篇小說中“微微一笑”、“哈哈大笑”、“大吃一驚”、“非同小可”等詞語使用頻率非常高,再來看另一部作品《女帝奇英傳》,詞云圖如下:

基于Python分析金庸小說里的主角,原來他才是真正的主角!

 

我們很容易就發(fā)現(xiàn),這部小說中使用頻率最高的還是“微微一笑”、“哈哈大笑”、“大吃一驚”、“非同小可”這幾個詞, 繼續(xù)查看其他一些使用頻率較高的詞也會發(fā)現(xiàn)類似的規(guī)律。

看來梁老先生寫作的用詞習(xí)慣還是有跡可循的,有興趣的朋友也可以拿其他大師的文學(xué)作品或者網(wǎng)絡(luò)小說來進(jìn)行分析,說不定會發(fā)現(xiàn)很有趣的規(guī)律哈。

中文分詞其實(shí)是一個非常有意思的事情,特別是對這些武俠小說的探索!我自己也是一個武俠迷,超級喜歡金庸的小說。飛雪連天射白鹿 笑書神俠倚碧鴛,每一本書都是非常經(jīng)典。除了上面兩個維度,我們還有一個人物關(guān)系的分析文章,正在創(chuàng)作中,大家敬請期待。

如果對于本篇有啥建議,歡迎留言交流!對于中文分詞和語言分析,筆者也是初學(xué)乍道,對于文中涉及的技術(shù)理解和小說見解,如有不當(dāng)之處歡迎大家批評指正。 

責(zé)任編輯:龐桂玉 來源: 今日頭條
相關(guān)推薦

2014-04-03 16:58:37

Build2014

2012-12-31 10:05:11

IBMGartnerSaaS提供商

2009-04-30 09:19:15

埃里森甲骨文Sun

2009-07-02 09:43:00

綜合布線跳線

2013-09-26 14:23:16

數(shù)據(jù)

2017-11-02 09:24:59

物聯(lián)網(wǎng)CIO大數(shù)據(jù)

2018-05-05 15:35:47

大數(shù)據(jù)互聯(lián)網(wǎng)程序員

2024-05-28 11:25:46

2013-06-20 09:46:35

棱鏡門大數(shù)據(jù)云計算

2018-05-15 08:18:18

微軟Windows人工智能

2010-06-12 14:38:39

云計算

2013-08-28 13:20:08

李彥宏百度

2013-06-28 09:33:54

PC時代LinuxOS

2010-07-26 14:39:51

云計算GoogleIBM

2010-08-09 10:18:45

惠普性騷擾

2023-03-04 21:31:57

大數(shù)據(jù)采集抽樣式

2010-05-27 09:46:03

Chrome

2012-08-05 16:52:30

IBMRationalInnovate 20

2012-03-16 13:57:06

蘋果Android專利案
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號