python scikit-learn计算tf-idf词语权重

  Python的scikit-learn包下有计算tf-idf的api,研究了下做个笔记

1 安装scikit-learn包

[python] view
plain
 copy

 

  1. sudo pip install scikit-learn  

2 中文分词采用的jieba分词,安装jieba分词包

[python] view
plain
 copy

 

  1. sudo pip install jieba  

3  关于jieba分词的使用非常简单,参考这里,关键的语句就是(这里简单试水,不追求效果4
)

[python] view
plain
 copy

 

  1. import jieba.posseg as pseg  
  2. words=pseg.cut("对这句话进行分词")  
  3. for key in words:  
  4.      print key.word,key.flag  

输出结果:

对 p
这 r
句 q
话 n
进行 v
分词 n

 

4 采用scikit-learn包进行tf-idf分词权重计算关键用到了两个类:CountVectorizer和TfidfTransformer,具体参见这里

  一个简单的代码如下:

[python] view
plain
 copy

 

  1. # coding:utf-8  
  2. __author__ = "liuxuejiang"  
  3. import jieba  
  4. import jieba.posseg as pseg  
  5. import os  
  6. import sys  
  7. from sklearn import feature_extraction  
  8. from sklearn.feature_extraction.text import TfidfTransformer  
  9. from sklearn.feature_extraction.text import CountVectorizer  
  10.   
  11. if __name__ == "__main__":  
  12.     corpus=["我 来到 北京 清华大学",#第一类文本切词后的结果,词之间以空格隔开  
  13.         "他 来到 了 网易 杭研 大厦",#第二类文本的切词结果  
  14.         "小明 硕士 毕业 与 中国 科学院",#第三类文本的切词结果  
  15.         "我 爱 北京 天安门"]#第四类文本的切词结果  
  16.     vectorizer=CountVectorizer()#该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频  
  17.     transformer=TfidfTransformer()#该类会统计每个词语的tf-idf权值  
  18.     tfidf=transformer.fit_transform(vectorizer.fit_transform(corpus))#第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵  
  19.     word=vectorizer.get_feature_names()#获取词袋模型中的所有词语  
  20.     weight=tfidf.toarray()#将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重  
  21.     for i in range(len(weight)):#打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重  
  22.         print u"-------这里输出第",i,u"类文本的词语tf-idf权重------"  
  23.         for j in range(len(word)):  
  24.             print word[j],weight[i][j]  

程序输出:每行格式为:词语  tf-idf权重

[plain] view
plain
 copy

 

  1. -------这里输出第 0 类文本的词语tf-idf权重------           #该类对应的原文本是:"我来到北京清华大学"  
  2. 中国 0.0  
  3. 北京 0.52640543361  
  4. 大厦 0.0  
  5. 天安门 0.0  
  6. 小明 0.0  
  7. 来到 0.52640543361  
  8. 杭研 0.0  
  9. 毕业 0.0  
  10. 清华大学 0.66767854461  
  11. 硕士 0.0  
  12. 科学院 0.0  
  13. 网易 0.0  
  14. -------这里输出第 1 类文本的词语tf-idf权重------           #该类对应的原文本是: "他来到了网易杭研大厦"  
  15. 中国 0.0  
  16. 北京 0.0  
  17. 大厦 0.525472749264  
  18. 天安门 0.0  
  19. 小明 0.0  
  20. 来到 0.414288751166  
  21. 杭研 0.525472749264  
  22. 毕业 0.0  
  23. 清华大学 0.0  
  24. 硕士 0.0  
  25. 科学院 0.0  
  26. 网易 0.525472749264  
  27. -------这里输出第 2 类文本的词语tf-idf权重------           #该类对应的原文本是: "小明硕士毕业于中国科学院“  
  28. 中国 0.4472135955  
  29. 北京 0.0  
  30. 大厦 0.0  
  31. 天安门 0.0  
  32. 小明 0.4472135955  
  33. 来到 0.0  
  34. 杭研 0.0  
  35. 毕业 0.4472135955  
  36. 清华大学 0.0  
  37. 硕士 0.4472135955  
  38. 科学院 0.4472135955  
  39. 网易 0.0  
  40. -------这里输出第 3 类文本的词语tf-idf权重------            #该类对应的原文本是: "我爱北京天安门"  
  41. 中国 0.0  
  42. 北京 0.61913029649  
  43. 大厦 0.0  
  44. 天安门 0.78528827571  
  45. 小明 0.0  
  46. 来到 0.0  
  47. 杭研 0.0  
  48. 毕业 0.0  
  49. 清华大学 0.0  
  50. 硕士 0.0  
  51. 科学院 0.0  
  52. 网易 0.0  

  注:这里随便举了几个文本,所以tf-idf也没什么实际价值,旨在说明scikit-learn包关于tf-idf计算API的调用

时间: 2016-09-28
Tags: python, view

python scikit-learn计算tf-idf词语权重的相关文章

《深入理解Elasticsearch(原书第2版)》一2.1.2 TF/IDF评分公式

2.1.2 TF/IDF评分公式 从Lucene 4.0版本起,Lucene引入了多种不同的打分公式,这一点或许你已经有所了解了.不过,我们还是希望在此探索一下默认的TF/IDF打分公式的一些细节.请记住,为了调节查询相关性,你并不需要深入理解这个公式的来龙去脉,但是了解它的工作原理却非常重要,因为这有助于简化相关度调优过程. 1. Lucene的理论评分公式 TF/IDF公式的理论形式如下: 上面的公式融合了布尔检索模型和向量空间检索模型.我们不打算在此讨论理论评分公式,而是直接跳到实践中使用

tf*idf 用于文本分类中的特征提取

tf*idf tf*idf,term frequency * inverse document frequency,词频 *逆向文档频率. 1.思想 TF-IDF是一种统计方法,用于评估某个词语在文档集合中的重要程度. 如果某个词语term在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为这个词语具有很好的文档分类能力. 2.公式 tfij=termi在docj中的出现频次docj中的总词数,表示词语i在文档j中的频率. idfi=lg(文档总数包含词语i的文档数),含有词语i的文档

python简单实现计算过期时间的方法

  本文实例讲述了python简单实现计算过期时间的方法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 def time_passed(value): now = datetime.now() past = now - value if past.days: return u'%s天前' % past.days mins = past.seconds / 60 if mins < 60: return u'%s分钟前' % mins hours = mins /

Python中用于计算对数的log()方法

 这篇文章主要介绍了Python中用于计算对数的log()方法,是Python入门基础中的必会的方法,需要的朋友可以参考下     log()方法返回x的自然对数,对于x>0. 语法 以下是log()方法的语法: ? 1 2 3 import math   math.log( x ) 注意:此函数是无法直接访问的,所以我们需要导入math模块,然后需要用math的静态对象来调用这个函数. 参数 x -- 这是一个数值表达式. 返回值 此方法返回x的自然对数,对于x>0. 例子 下面的例子显示了

详解Python中用于计算指数的exp()方法

  这篇文章主要介绍了详解Python中用于计算指数的exp()方法,是Python入门中必会的基本方法,需要的朋友可以参考下 exp()方法返回指数x: ex. 语法 以下是exp()方法的语法: ? 1 2 3 import math   math.exp( x ) 注意:此函数是无法直接访问的,所以我们需要导入math模块,然后需要用math的静态对象来调用这个函数. 参数 x -- 这是一个数值表达式 返回值 此方法返回指数x: ex. 例子 下面的例子显示了exp()方法的使用. ?

提升医疗服务效率 移动临床计算亮相IDF

本文讲的是提升医疗服务效率 移动临床计算亮相IDF,4月13日,由英特尔主办的全球IT界高水平的技术论坛活动 --2011英特尔信息技术峰会(Intel Developer Forum, IDF),在北京召开. ▲IT168全程直播本次盛会 点击查看专题报道 记者在IDF峰会现场发现这一次2011IDF峰会与往届不同,医疗行业的服务商占据了很大一部分展示.记者在来到医疗展区了解到,相关的医疗服务商纷纷在IDF大会上亮相了最好的产品,从医疗的设备到管理的解决方案几乎是琳琅满目的.记者在戴尔医疗展示

《趣学Python编程》——第2章 计算与变量 2.1 用Python来做计算

第2章 计算与变量 好了,现在你的Python装好了,也知道如何启动Python Shell程序了,那么你就已经准备好用它来做点什么了.我们将从一些简单的计算开始,然后再使用变量.变量是计算机程序中用来保存东西的一种方式,它们能帮你写出有用的程序来. 2.1 用Python来做计算 一般来讲,当你要得到两个数字的乘积时你会用计算器或者笔和纸,比方说8 × 3.57.那么用PythonShell程序来运行这个计算是怎么样的?让我们来试一试. 双击桌面上的IDLE图标来启动PythonShell程序

利用 Scikit Learn的Python数据预处理实战指南

简介 本文主要关注在Python中进行数据预处理的技术.学习算法的出众表现与特定的数据类型有密切关系.而对于没有经过缩放或非标准化的特征,学习算法则会给出鲁莽的预测.像XGBoost这样的算法明确要求虚拟编码数据,而决策树算法在有些情况下好像完全不关心这些! 简而言之,预处理是指在你将数据"喂给"算法之前进行的一系列转换操作.在Python中,scikit-learn库在sklearn.preprocessing下有预装的功能.有更多的选择来进行预处理,这将是我们要探索的. 读完本文,

利用Scikit Learn的Python数据预处理实战指南

本文主要关注在Python中进行数据预处理的技术.学习算法的出众表现与特定的数据类型有密切关系.而对于没有经过缩放或非标准化的特征,学习算法则会给出鲁莽的预测.像XGBoost这样的算法明确要求虚拟编码数据,而决策树算法在有些情况下好像完全不关心这些! 简而言之,预处理是指在你将数据"喂给"算法之前进行的一系列转换操作.在Python中,scikit-learn库在sklearn.preprocessing下有预装的功能.有更多的选择来进行预处理,这将是我们要探索的. 读完本文,你将具