中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

資深Python程序員教你統計,三國中人物名字出現的頻率,很簡單

發布時間:2020-06-26 12:01:14 來源:網絡 閱讀:1183 作者:小十iOS開發 欄目:編程語言

資深Python程序員教你簡單、有趣的程序:
使用第三方庫jieba切分,統計統計名著三國演義中人物名字出現次數。

資深Python程序員教你統計,三國中人物名字出現的頻率,很簡單
其中一個jieba庫是一個對中文文本依照漢字間關聯概率進行詞組劃分的第三方庫,使用簡單,且非常好用

import jieba

def getWords():
 txt = open('novels/threekingdoms.txt', 'r', encoding = 'utf-8').read()
 words = jieba.lcut(txt)
 counts = {}
 for word in words:
 if len(word) == 1:
 continue
 else:
 counts[word] = counts.get(word, 0) + 1
 word_list = list(counts.items())
 word_list.sort(key = lambda x : x[1], reverse = True)
 return word_list

進行人肉優化,去掉不是人名的詞語,并將一些指同一個人物的詞合并到一個人物下。

import jieba

def countWords(excludes, merges):
 txt = open('novels/threekingdoms.txt', 'r', encoding = 'utf-8').read()
 words = jieba.lcut(txt)
 counts = {}
 # 取出長度為一的詞和符號以及excludes中的詞
 for word in words:
 if len(word) == 1 or word in excludes:
 continue
 else:
 counts[word] = counts.get(word, 0) + 1
 # 合并名稱相同的人名
 for merge in merges:
 for name in merge[1]:
 counts[merge[0]] += counts.get(name, 0)
 del counts[name]
 word_list = list(counts.items())
 word_list.sort(key = lambda x : x[1], reverse = True)
 return word_list
excludes = {'卻說','二人','不可','主公','陛下','漢中','只見','眾將','后主','蜀兵','上馬','大叫','太守','此人','夫人',
 '先主','后人','背后','城中','天子','一面','何不','大軍','忽報','先生','百姓','何故','不能','如此','如何',
 '然后','先鋒','不如','趕來','原來','令人','江東','下馬','喊聲','正是','徐州','忽然','荊州','左右','軍馬',
 '因此','成都','不見','未知','大敗','大事','之后','一軍','引軍','起兵','軍中','接應','引兵','次日','大喜',
 '進兵','大驚','可以','以為','大怒','不得','心中','下文','一聲','追趕','糧草','天下','東吳','于是','都督',
 '曹兵','一齊','分解','回報','分付','只得','出馬','三千','大將','許都','隨后','報知','今日','不敢','魏兵',
 '前面','之兵','且說','眾官','洛陽','領兵','商議','軍士','星夜','精兵','城上','之計','不肯','相見','其言',
 '一日','而行','文武','襄陽','準備','若何','出戰','親自','必有','一人','人馬','不知','何人','此事','之中',
 '伏兵','祁山','乘勢','忽見','大笑','樊城','兄弟','首級','立于','西川','傳令','當先','五百','一彪','堅守',
 '此時','之間','投降','五千','埋伏','長安','三路','遣使','將軍','關興','軍師','朝廷','三軍','大王','回見',
 '大將軍','必然','將士','是夜','小路' }

merges = [ ('劉備',('玄德','玄德曰','玄德問','劉玄德','玄德大','玄德自','玄德聞','皇叔','劉皇叔')),
 ('關羽',('關公','云長','關云長')),
 ('孔明',('諸葛亮','孔明曰','孔明笑','孔明之','孔明自')),
 ('曹操',('丞相','孟德','曹公','曹孟德')),
 ('張飛',('翼德','張翼德'))
 ]

word_list = countWords(excludes, merges)
for i in range(30):
 word, count = word_list[i]
 print('{0:^10}{1:{3}^10}{2:^15}'.format(i+1, word, count, chr(12288))) # chr(12288)為中文空格 ```
結果如下,當然其中類似將軍、英雄、主公、大哥、君這種詞語無法判斷指的是誰,這里僅統計能夠判斷的,所以這里只能做一個相對的參考。

1     劉備     1578
2     曹操     1485
3     孔明     1485
4     關羽     820
5     張飛     393
6     呂布     300
7     趙云     278
8     孫權     264
9     司馬懿     221
10     周瑜     217
11     袁紹     191
12     馬超     185
13     魏延     180
14     黃忠     168
15     姜維     151
16     馬岱     127
17     龐德     122
18     孟獲     122
19     劉表     120
20     夏侯惇     116
21     董卓     114
22     孫策     108
23     魯肅     107
24     徐晃     97
25     司馬昭     89
26     夏侯淵     88
27     王平     88
28     劉璋     85
29     袁術     84
30     呂蒙     83



以上是Python語言中的一個小案例,僅供大家參考。
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

张掖市| 武城县| 金山区| 和硕县| 微山县| 石门县| 平塘县| 顺义区| 石渠县| 平武县| 芦溪县| 颍上县| 灵石县| 海原县| 富宁县| 福建省| 乌兰察布市| 博罗县| 廊坊市| 平舆县| 吉隆县| 南涧| 徐闻县| 宁德市| 旬邑县| 阿尔山市| 临朐县| 新平| 泾源县| 达日县| 昌黎县| 彩票| 宁蒗| 江达县| 饶平县| 六安市| 扶余县| 柏乡县| 哈密市| 南昌县| 富源县|