python對紅樓夢的每一章節進行詞頻統計

2021-10-10 02:29:58 字數 2325 閱讀 5228

import jieba

f=open

("g:\\紅樓夢.txt"

,"r"

,encoding=

"utf-8"

)txt=f.read(

)words=jieba.lcut(txt)

#精準模式

ls=[

]![在這裡插入描述]

=="第"

and word[-1

]=="回":

if word in ls:

continue

else

:print

(ls)

for i in

range

(len

(ls)):

print

(ls[i]

) a=

if i<

len(ls)-1

:for word in words[words.index(ls[i])+

1:words.index(ls[i +1]

)]:if

len(word)==1

:# 排除單個字元的統計結果

continue

else

: a[word]

= a.get(word,0)

+1elif i ==

len(ls)-1

:#最後一回

for word in words[words.index(ls[i])+

1:]:

iflen

(word)==1

:# 排除單個字元的統計結果

continue

else

: a[word]

= a.get(word,0)

+1items =

list

(a.items())

# 將字典轉換為記錄列表

items.sort(key=

lambda x: x[1]

, reverse=

true

)# 記錄第二列排序

for i in

range(5

):word, count = items[i]

print(""

.format

(word, count)

)print

("\n"

)f.close(

)

第一步是開啟紅樓夢.txt檔案,唯讀的方式,使用utf-8編碼方式

第二步是使用精準模式,將單詞儲存到words列表中,再將「第幾回」存放到乙個新的列表中,便於對紅樓夢檔案每一回進行切片,切邊的界點便是第多少回這樣的字眼,第一種統計是第i回到第i+1回的之間的詞頻統計,還有一種就是最後一回的詞頻統計。

使用乙個字典型別a={},統計單詞的次數:

for word in words:

iflen

(word)==1

:#排除單個字元的統計結果

continue

else

: a[word]

=a.get(word,0)

+1

如果字元長度為1則跳過,否則使用a.get(word,0)方法表示:如果word在a中則返回word對應的值,如果word不在a中就返回0。

第三步是對單詞的統計的值從高到低進行排序,輸出前5個高頻詞語,並格式化列印輸出。由於字典沒有順序,需要將其轉換為有順序的列表型別,再使用sort()方法和lambda函式配合實現單詞出現的次數,對元素進行排序。最後輸出排序結果前15位的單詞。

items=

list

(a.items())

#將字典轉換為記錄列表

items.sort(key=

lambda x:x[1]

,reverse=

true

)#記錄第二列排序

Rust 紅樓夢一書中文字元的統計

一 準備工作 1 相關的庫 因為紅書中大部分是中文字元,標準庫中目前還無法直接處理。因此,在進行分析前,在toml檔案中的依賴庫中,新增一下以下 encoding 0.2 2 紅樓夢一書的txt檔案。直接找度娘。二 相關 extern crate encoding use encoding use ...

用Python來理一理紅樓夢裡的這些關係

最近把紅樓夢又抽空看了一遍,古典中的經典,我真無法用言辭讚美她。今天,想跟大家一起用 python 來理一理紅樓夢中的的那些關係 不要問我為啥是紅樓夢,而不是水滸三國或西遊,都是經典,但我個人還是更喜歡偏古典的書,紅樓夢也是我多次反覆品讀的為數不多的 對它的感情也是最深的。好了好了這些都不重要,重要...

Python爬蟲練習第一章 每60s重新整理

作為乙個吾愛的忠實粉,我最喜歡的就是成天重新整理吾愛的精品區,看看有啥新鮮好玩的軟體。此次需要用到4個模組 首先還是先貼上源 為敬 coding utf 8 import requests import re import time import random def wuai url a requ...