[日常]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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JavaScript实现ZLOGO: 性能改进
主攻前文吴烜:JavaScript实现ZLOGO: 界面改进与速度可调的几个性能问题 在线演示: 圈3 源码仍在: program-in-chinese/quan3 之前是在绘制过程中计算每帧需要绘制的线段, 在尝试改进的过程中很快发现问题太多且不易测试. 接着在某早晨"醒悟"到应该而且可以在绘制前计算好每一帧的步进路径表. 不仅可以避免绘制卡顿问题, 还便于测试(因为是纯JS实现, 不需夹杂DOM操作). 于是通过如下递归代码实现了截取指定位置的路径表: // 返回{截取部分: 路径表, 剩余部分: 路径表} // 如果 开始位置 >= 终止位置, 返回{[], 所有} function 截取路径表(路径表, 开始位置, 终止位置) { if (开始位置 >= 终止位置) { return {截取部分: [], 剩余部分: 路径表}; } if (路径表.length == 0) { return {截取部分: [], 剩余部分: []}; } else if (路径表.length == 1) { return 截取路径(路径表[0], 开始位置, 终止位置); } e...
- 下一篇
VS Code创建自定义Python代码片段
续前文[日常]Beyond的歌里最多是"唏嘘"吗? - Python分词+词频最后的想法, 发现VS Code支持用户自定义代码片段: Creating your own snippets in Visual Studio Code 尝试如下, 片段使用中文命名, 但前缀好像不能用中文(如果前缀设置为"文件", 在源码编辑时输入"文件"后没有自动补全弹窗), 应该与自动补全机制有关. 无法粘贴,详见原文:https://zhuanlan.zhihu.com/p/56035257 片段定义: { "读文件": { "prefix": "file", "body": [ "with open(${1:文件全路径}) as 文件:", "\t内容 = 文件.read()" ], "description": "读取某文件" }, "读所有文件": { "prefix": "file", "body": [ "import os", "路径 = '.'", "for 文件名 in os.listdir(路径):", "\twith open(os.path.join(路径, 文件名)) as ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7