摘要:更多練習(xí)題可以在公眾號(hào)的編程教室里回復(fù)關(guān)鍵字習(xí)題主要任務(wù)找出三國(guó)演義中名字出現(xiàn)最多的人分析主要幾個(gè)人物回中,每回出現(xiàn)的次數(shù),結(jié)合具體內(nèi)容,看發(fā)生了什么分析人物之間的關(guān)系,利用簡(jiǎn)單繪圖繪制逐字詞云。
題目源自編程教室的“每周一坑”欄目:【每周一坑】三國(guó)演義中誰的存在感最強(qiáng)主要任務(wù)
本文是一位同學(xué)(王文亞)提交的解答,因?yàn)樽龅猛茫剞D(zhuǎn)載至專欄,供各位參考。
更多練習(xí)題可以在公眾號(hào)(Crossin的編程教室)里回復(fù)關(guān)鍵字 習(xí)題
找出《三國(guó)演義》中名字出現(xiàn)最多的10人;
分析主要幾個(gè)人物120回中,每回出現(xiàn)的次數(shù),結(jié)合具體內(nèi)容,看發(fā)生了什么;
分析人物之間的關(guān)系,利用Gephi簡(jiǎn)單繪圖;
繪制“逐”字詞云。
準(zhǔn)備工作1.由于要分析120回中主要人物的出場(chǎng)次數(shù),爬取《三國(guó)演義》120回,每回放在一個(gè)段落里;len(f.readlines()) = 120.
2.安裝主要的python庫,如jieba,wordcloud,pandas,codecs,matplotlib,pyecharts, bs4等,還有Gephi;
1.首先是獲取分成120回每回一行的文件;
url=http://www.purepen.com/sgyy/根據(jù)規(guī)律爬出120回;
2.找到次數(shù)最多的nr(人名)詞語;
函數(shù)findMostWords, 逐詞查看,長(zhǎng)度小于2的自動(dòng)過濾,按照出現(xiàn)次數(shù)排序,寫入到文件中,大約是長(zhǎng)這個(gè)樣子的...
3.根據(jù)找到的詞語排序,大約有7238個(gè)詞匯,然后手動(dòng)選取超過出現(xiàn)20次以上的詞語,大約200條,剔除一些非人名,如“曹兵”等,最終得到52個(gè)詞;
["曹操", "玄德", "孔明", "關(guān)公", "丞相", "孔明曰", "玄德曰", "云長(zhǎng)", "張飛", "主公","呂布", "劉備", "孫權(quán)", "趙云", "司馬懿", "周瑜", "魏延", "袁紹", "馬超", "姜維", "黃忠", "諸葛亮", "龐德", "張遼", "劉表", "董卓", "孫策", "魯肅", "鄧艾", "大將軍", "張苞", "袁術(shù)", "劉玄德", "玄德大", "子龍", "司馬", "孔明笑", "公瑾", "操大喜", "翼德", "劉皇叔", "趙子龍", "郭嘉", "仲達(dá)", "關(guān)云長(zhǎng)","操大怒", "玄德問", "阿斗", "劉豫州", "玄德聞", "玄德乃", "曹丞相"]
4.逐詞匹配上述的52個(gè)詞,得到52個(gè)詞分別出現(xiàn)的次數(shù);
5.整理上述52個(gè)詞匯,將玄德曰,玄德怒,玄德乃,劉皇叔等詞匯合并,繪制Top10;
6.根據(jù)上述52個(gè)詞匯,分別分析每一回,利用pandas.DataFrame很方便得到每回52個(gè)人分別出現(xiàn)的次數(shù);
表格中有大量的空白,后續(xù)使用,需要將空白填充0, DataFrame.fillna(0, inplace=True)
7.繪制一些簡(jiǎn)單的圖;
蜀國(guó)主要人物全書分布情況,三位結(jié)拜兄弟貫穿前80回左右,等他們退出歷史舞臺(tái),諸葛亮繼續(xù)輔佐,支撐著蜀國(guó)大業(yè)。
諸葛亮在35-40, 80-100回出現(xiàn)了較多次數(shù),自然是 “三顧茅廬”、“火燒七百里聯(lián)營(yíng)”、“巧布八陣圖”、“七擒孟獲” 等較為熟知的歷史故事; 同時(shí),80回后諸葛亮出現(xiàn)次數(shù)占據(jù)了全書中較大范圍,也是 “先帝托孤”后“鞠躬盡瘁” 的具體表現(xiàn)。
四位當(dāng)權(quán)者曹操、劉備、孫權(quán)、司馬懿活動(dòng)活度,前80回,曹劉孫較為活躍,體現(xiàn)出了三國(guó)紛爭(zhēng)的局面,讀這一部分,廝殺場(chǎng)面也是相當(dāng)精彩; 待三位同時(shí)代的人物退出歷史舞臺(tái)后,逐漸司馬懿開始活躍,“一統(tǒng)秦兩漢,三分魏蜀吳,兩晉前后延”,歷史朝代更替,滾滾向前。
分析數(shù)據(jù)的能力還優(yōu)待提高,想不出較好的分析的內(nèi)容,還需多寫、多與人溝通交流,提升對(duì)數(shù)據(jù)的認(rèn)識(shí)。
8.分析人物之間的關(guān)系。根據(jù)全文2700多個(gè)自然段,如果一個(gè)自然段內(nèi)同時(shí)出現(xiàn)了A和B,將A和B之間的關(guān)系+1;
得到Node和Edge兩份csv文件,輸入到Gephi,得到以下關(guān)系圖,故事還是圍繞這曹劉的紛爭(zhēng)開展,諸葛亮的經(jīng)緯之才也體現(xiàn)的淋漓盡致。
9.詞云制作;
PS做了一張圖,制作詞云。根據(jù)各種曰可知書中的對(duì)話部分占據(jù)了很大一部分章節(jié),讀者讀起來也更有代入感,身臨其境。
真正自己去做的時(shí)候,才能一次次填補(bǔ)自己的坑。哈哈哈,加油!
*
作者:王文亞
項(xiàng)目地址:
https://github.com/Damon0626/Crossin-Programming-Room/tree/master/09-Analysis%20The%20Three%20Kingdoms
════
其他文章及回答:
如何自學(xué)Python | 新手引導(dǎo) | 精選Python問答 | Python單詞表 | 人工智能 | 爬蟲 | 我用Python | requests | 計(jì)算機(jī)視覺
歡迎搜索及關(guān)注公眾號(hào): Crossin的編程教室
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/42901.html
摘要:部分如上,四個(gè)區(qū)塊,四大名著,嘎嘎代碼如上,寫的很爛,輕噴用來控制元素的顯示和隱藏,實(shí)際上是為了實(shí)現(xiàn)動(dòng)畫效果此處有裝逼的嫌疑,因?yàn)闀?huì)阻礙,而不會(huì),另外也可以用來代替。 說明 又是一個(gè)練手的小玩意兒,本身沒什么技術(shù)含量,就是幾個(gè)不常用的CSS3特性的結(jié)合而已。 要點(diǎn) Label標(biāo)簽的for屬性 單選框的:checked偽類 CSS的加號(hào)[+]選擇器 效果圖 showImg(https...
摘要:部分如上,四個(gè)區(qū)塊,四大名著,嘎嘎代碼如上,寫的很爛,輕噴用來控制元素的顯示和隱藏,實(shí)際上是為了實(shí)現(xiàn)動(dòng)畫效果此處有裝逼的嫌疑,因?yàn)闀?huì)阻礙,而不會(huì),另外也可以用來代替。 說明 又是一個(gè)練手的小玩意兒,本身沒什么技術(shù)含量,就是幾個(gè)不常用的CSS3特性的結(jié)合而已。 要點(diǎn) Label標(biāo)簽的for屬性 單選框的:checked偽類 CSS的加號(hào)[+]選擇器 效果圖 showImg(https...
繼上篇yii實(shí)戰(zhàn)之初見端倪,本篇將講解控制器和視圖的基礎(chǔ)用法。并構(gòu)建一個(gè)人物列表頁面 默認(rèn)控制器 默認(rèn)情況下,當(dāng)瀏覽器請(qǐng)求http://frontend.test/時(shí),實(shí)際上訪問的是frontend/controllers/SiteController.php的actionIndex方法,我們?cè)谶@個(gè)方法斷點(diǎn)測(cè)試下: public function actionIndex() { retur...
閱讀 2225·2019-08-30 15:54
閱讀 1961·2019-08-30 13:49
閱讀 680·2019-08-29 18:44
閱讀 834·2019-08-29 18:39
閱讀 1118·2019-08-29 15:40
閱讀 1538·2019-08-29 12:56
閱讀 3153·2019-08-26 11:39
閱讀 3105·2019-08-26 11:37