python笑傲江湖统计字数_基於Python的tf-idf算法实现:以《笑傲江湖》为例
连结Jasonnor/tf-idf-pythongithub.com
简介
tf-idf(term frequency-inverse document frequency)是一种用於信息检索与文字探勘的常用加权技术,为一种统计方法,评估字词对於「文件集合」或「语料库中的一份文件」的重要程度。详细方法和公式可参见Wikipedia,不再赘述。Figure 1: 输入「笑傲江湖」文件集合,每份文件为小说中的一个章回,输出每章前 K 高的字词和其权重
本项目为实作 tf-idf ,输入给定「一组有特定集合关系的文件」(例如某本小说),输出为每份文件的 tf-idf 权重值结果,具体为显示前 k 高的「字词」和其权重值,如 Figure 1 所示。另外也可以输入某个字词,输出该字词在所有文件中的权重值。
因为中文无法像英文可以藉由空白来区隔字词,我们采用了 jieba 结巴中文分词,将文件集合先进行分词获得语料库,之後使用 tf-idf 演算法取得字词加权值。
预设测试资料位於 data 资料夹底下,每组文件以 01 ~ 99.txt 格式命名,并放置到各别所属集合的资料夹,例如 data/笑傲江湖/01.txt 。测试资料包含笑傲江湖丶创世纪丶出埃及记。
jieba 其实也内建了「基於 TF-IDF 算法的关键词抽取」,不过根据它的文件和 Source Code 所述, jieba 其实只读取一个文件来计算TF,而IDF部分则是读取他们自定的语料库,因此结果不准确(不是基於相关文件集合来计算逆频率)。具体可以试试目录下的src/tf-idf-jieba.py,我写了简单的 jieba 版本 Demo。
预览简易GUI「笑傲江湖」资料集的各章字词权重列表,可以看到各章节的重要关键字排名字词「任我行」在各章节的权重排名,可以看到他在第28章出场最多,而数值为0的部分就能得知他没有出现
結論
tf-idf 这个统计方法可以应用在许多场合,处理小说只是其中一种。不过 tf-idf 尽管简单有效,却存在部分重大缺陷。以我个人发现的例子来说,笑傲江湖资料集里每章基本上都一定会出现主角的名字「令狐冲」这个字词,然而对 tf-idf 来说,每章都出现的东西代表它是常用字词,逆频率的存在使「令狐冲」的权重反而变为 0,这真是很讽刺的结果。
可以见得 idf 的简单架构不能有效反映常见字词和重要字词的比重,精确度并不是很高。另外位置资讯也是其缺陷一环,不过在小说中这种缺点并不明显,因此不多做讨论。
python笑傲江湖统计字数_基於Python的tf-idf算法实现:以《笑傲江湖》为例相关推荐
- python 读取qq群消息_基於Python自動發送QQ群消息
1.准備工作 此次測試基於python3,需要安裝qqbot.bs4.requests庫. qqbot項目地址:https://github.com/pandolia/qqbot.git pip qq ...
- python代码计算字数_如何用python计算文件的字数
展开全部 #这边的TXT需要改动 flies = open('My Father.txt','r') lines = flies.readlines() lens = len(lines) dicts ...
- 随笔_从《芳华》影评到TF/IDF算法
前两天看好多<芳华>的影评说:为什么好人没好报?于是感叹一堆世态炎凉,人性丑陋什么的.我觉得这问题是:为什么中央空调(对谁都温暖)往往不被看好. 先说说TF/IDF算法,这是一种信息处 ...
- python中怎么计数_浅谈python中统计计数的几种方法和Counter详解
1) 使用字典dict() 循环遍历出一个可迭代对象中的元素,如果字典没有该元素,那么就让该元素作为字典的键,并将该键赋值为1,如果存在就将该元素对应的值加1. lists = ['a','a','b ...
- python 廖雪峰数据分析统计服_廖雪峰python教程阅读量统计
统计了下廖老师的python教程各个小节的阅读量(毫无卵用),廖老师网站反爬做的比我们教务系统可是好多了,一定时间内访问次数多会禁止,反正数据量也不多,就慢慢来,基本上也不会对网站造成什么影响. 刚学 ...
- python分组统计数据_数据分组统计
统计分析数据的时候,经常需要进行分组统计.分组操作在python里的实现方式就是groupby语句. 惯例,咱们先造一个DataFrame表. import pandas as pd dic={ 'c ...
- python描述性统计命令_描述性统计_Python数据分析实战应用_数据挖掘与分析视频-51CTO学院...
为什么学Python: 重要:数据分析是职业技能必备,Python是大数据分析** 趋势:Python是目前非常火的编程语言,使用人多 好学:学习简单,容易上手,使用灵活,可扩展强 **:会Pytho ...
- python分组统计标准化_分组计算和汇总_Python数据分析实战应用_数据挖掘与分析视频-51CTO学院...
为什么学Python: 重要:数据分析是职业技能必备,Python是大数据分析** 趋势:Python是目前非常火的编程语言,使用人多 好学:学习简单,容易上手,使用灵活,可扩展强 **:会Pytho ...
- python单词词频字典_怎么用python进行词频统计
python是一款受欢迎的程序语言,具有很多强大的功能.下面一起来看看python怎么进行词频统计吧. 工具/原料 python idle 方法/步骤 1 选择你要统计词频的文本 2 打开文本并读取文 ...
最新文章
- python的datetime模块
- oracle数据库的基本错误,Oracle新手最常碰到错误及解决方案
- lamp不解析php,lamp环境无法解析php环境
- 《高性能MySQL(第3版)》摘要——索引篇
- 读书笔记5-处理器的微架构
- 第一百三十期:14种常见编程语言的优缺点及应用范围
- 被薅秃了!元气森林:损失近千万元 将为14.05万下单用户每人寄一箱白桃气泡水...
- AI学习笔记(十三)CNN之人脸检测
- 树莓派+PHP+Mairadb数据库读取DHT11
- java的初始化和赋值的区别_Java的赋值与初始化
- 不同手机型号图文预览_使用Adobe Preview 在手机上实时预览设计图
- LaTeX使用CJK支持中文排版
- 使用 gzip 压缩数据
- networkx画中文节点 networkx画中文节点
- linux自动刷新桌面,Ubuntu下实现用Python开机自动更新壁纸为bing壁纸
- 电影网站《小张电影》结构分析
- 医嘱计算机录入管理制度,医院病房医嘱计算机录入管理制度.doc
- 中国石油大学《客户关系管理》第三次在线作业
- Java程序员成神之路
- Activiti(工作流)如何关联业务表