看了一個Beyond的紀錄片, 提到這個. 覺得心有不甘, 於是搜集了24首歌詞, 用Python做了簡單分詞和詞頻統計. 源碼(包括歌詞)在: "program in chinese/study" 統計了總出現次數( )和詞出現在歌曲的數目( ). 前者算進了所有重覆歌詞, 後者是算某個詞出現在了 ...
看了一個Beyond的紀錄片, 提到這個. 覺得心有不甘, 於是搜集了24首歌詞, 用Python做了簡單分詞和詞頻統計.
源碼(包括歌詞)在: program-in-chinese/study
統計了總出現次數(詞頻列表
)和詞出現在歌曲的數目(詞所在文件數列表
). 前者算進了所有重覆歌詞, 後者是算某個詞出現在了幾首歌中.
源碼:
import jieba
import os
所有詞 = []
詞頻表 = {}
詞所在文件 = {}
詞所在文件數 = {}
路徑 = "數據"
for 文件名 in os.listdir(路徑):
print(文件名)
with open(os.path.join(路徑, 文件名)) as 文件:
內容 = 文件.read()
分詞結果 = jieba.cut(內容)
for 詞 in 分詞結果:
if 詞 != " " and len(詞) != 1:
所有詞.append(詞)
if 詞 in 詞頻表:
詞頻表[詞] += 1
詞所在文件[詞].add(文件名)
else:
詞頻表[詞] = 1
詞所在文件[詞] = set([文件名])
for 詞 in 詞所在文件:
詞所在文件數[詞] = len(詞所在文件[詞])
# 詞頻列表 = sorted(詞頻表.items(), key=lambda d: d[1], reverse=True)
詞所在文件數列表 = sorted(詞所在文件數.items(), key=lambda d: d[1], reverse=True)
print(詞所在文件數列表)
前者的最高頻幾個中文詞(完整的在"所有詞頻輸出.txt"):
('多少', 22), ('一生', 21), ('多麼', 20), ('理想', 19), ('沒有', 19), ('一天', 19), ('Woo', 18), ('今天', 18), ('心中', 16), ('一起', 16), ('OH', 16), ('唏噓', 15), ('彼此', 14)
後者的前幾位(完整的在"所在文件數.txt"):
('多少', 9), ('心中', 8), ('沒有', 8), ('一切', 8), ('理想', 7), ('Woo', 7), ('一生', 7), ('今天', 7), ('唏噓', 6), ('擁有', 6), ('可否', 5), ('多麼', 5), ('風雨', 5), ('感覺', 5), ('天空', 5), ('心裡', 5), ('歲月', 5)
至少這幾首經典里, "理想"比"唏噓"更多.
覺得如果有個IDE插件能把一些常用的Python操作集合起來, 如果組織得好, 會挺有用. 因為寫這個例子里, 包括取目錄下的文件, 讀取文本文件, 字典排序等等, 自己的第一反應還是到處找現成代碼黏貼.