连结Jasonnor/tf-idf-python​github.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算法实现:以《笑傲江湖》为例相关推荐

  1. python 读取qq群消息_基於Python自動發送QQ群消息

    1.准備工作 此次測試基於python3,需要安裝qqbot.bs4.requests庫. qqbot項目地址:https://github.com/pandolia/qqbot.git pip qq ...

  2. python代码计算字数_如何用python计算文件的字数

    展开全部 #这边的TXT需要改动 flies = open('My Father.txt','r') lines = flies.readlines() lens = len(lines) dicts ...

  3. 随笔_从《芳华》影评到TF/IDF算法

     前两天看好多<芳华>的影评说:为什么好人没好报?于是感叹一堆世态炎凉,人性丑陋什么的.我觉得这问题是:为什么中央空调(对谁都温暖)往往不被看好.  先说说TF/IDF算法,这是一种信息处 ...

  4. python中怎么计数_浅谈python中统计计数的几种方法和Counter详解

    1) 使用字典dict() 循环遍历出一个可迭代对象中的元素,如果字典没有该元素,那么就让该元素作为字典的键,并将该键赋值为1,如果存在就将该元素对应的值加1. lists = ['a','a','b ...

  5. python 廖雪峰数据分析统计服_廖雪峰python教程阅读量统计

    统计了下廖老师的python教程各个小节的阅读量(毫无卵用),廖老师网站反爬做的比我们教务系统可是好多了,一定时间内访问次数多会禁止,反正数据量也不多,就慢慢来,基本上也不会对网站造成什么影响. 刚学 ...

  6. python分组统计数据_数据分组统计

    统计分析数据的时候,经常需要进行分组统计.分组操作在python里的实现方式就是groupby语句. 惯例,咱们先造一个DataFrame表. import pandas as pd dic={ 'c ...

  7. python描述性统计命令_描述性统计_Python数据分析实战应用_数据挖掘与分析视频-51CTO学院...

    为什么学Python: 重要:数据分析是职业技能必备,Python是大数据分析** 趋势:Python是目前非常火的编程语言,使用人多 好学:学习简单,容易上手,使用灵活,可扩展强 **:会Pytho ...

  8. python分组统计标准化_分组计算和汇总_Python数据分析实战应用_数据挖掘与分析视频-51CTO学院...

    为什么学Python: 重要:数据分析是职业技能必备,Python是大数据分析** 趋势:Python是目前非常火的编程语言,使用人多 好学:学习简单,容易上手,使用灵活,可扩展强 **:会Pytho ...

  9. python单词词频字典_怎么用python进行词频统计

    python是一款受欢迎的程序语言,具有很多强大的功能.下面一起来看看python怎么进行词频统计吧. 工具/原料 python idle 方法/步骤 1 选择你要统计词频的文本 2 打开文本并读取文 ...

最新文章

  1. python的datetime模块
  2. oracle数据库的基本错误,Oracle新手最常碰到错误及解决方案
  3. lamp不解析php,lamp环境无法解析php环境
  4. 《高性能MySQL(第3版)》摘要——索引篇
  5. 读书笔记5-处理器的微架构
  6. 第一百三十期:14种常见编程语言的优缺点及应用范围
  7. 被薅秃了!元气森林:损失近千万元 将为14.05万下单用户每人寄一箱白桃气泡水...
  8. AI学习笔记(十三)CNN之人脸检测
  9. 树莓派+PHP+Mairadb数据库读取DHT11
  10. java的初始化和赋值的区别_Java的赋值与初始化
  11. 不同手机型号图文预览_使用Adobe Preview 在手机上实时预览设计图
  12. LaTeX使用CJK支持中文排版
  13. 使用 gzip 压缩数据
  14. networkx画中文节点 networkx画中文节点
  15. linux自动刷新桌面,Ubuntu下实现用Python开机自动更新壁纸为bing壁纸
  16. 电影网站《小张电影》结构分析
  17. 医嘱计算机录入管理制度,医院病房医嘱计算机录入管理制度.doc
  18. 中国石油大学《客户关系管理》第三次在线作业
  19. Java程序员成神之路
  20. Activiti(工作流)如何关联业务表

热门文章

  1. shell脚本 猜数字游戏并计数比较次数
  2. JAVA如何选中一行上移,怎么把表格一行整体上移
  3. 史上最详 Thymeleaf 使用教程
  4. 华为客户端优化建议(应用保活相关)
  5. python中if elif else流程图_Python中的if、else、elif语句用法简明讲解
  6. Order by 按照自定义顺序排序
  7. 用SQL中的isnull函数注意了
  8. Python稳基修炼的经典案例15(计算机二级、初学者必会字符格式处理)
  9. fmin在Matlab中,MATLAB-fminsearch函数的使用
  10. Python小屋刷题软件2425道题目分类速查表