[日常]Beyond的歌裏最多是"唏噓"嗎? - Python分詞+詞頻

看了一個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操作集合起來, 如果組織得好, 會挺有用. 因爲寫這個例子裏, 包括取目錄下的文件, 讀取文本文件, 字典排序等等, 自己的第一反應還是到處找現成代碼黏貼.

2019-01-28

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章