2019-01-28 [日常]Beyond的歌里最多是"唏嘘"吗? - Python分词+词频
程序员文章站
2022-06-24 14:39:42
看了一个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操作集合起来, 如果组织得好, 会挺有用. 因为写这个例子里, 包括取目录下的文件, 读取文本文件, 字典排序等等, 自己的第一反应还是到处找现成代码黏贴.
上一篇: 内核中对文件的读写操作