python scikit-learn计算tf-idf词语权重
发布日期:2021-06-30 20:07:28 浏览次数:2 分类:技术文章

本文共 2390 字,大约阅读时间需要 7 分钟。

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

 

1 安装scikit-learn包

 

[python]   
 
 
CODE_ico.pnguploading.4e448015.gif转存失败
CODE_ico.png
uploading.4e448015.gif转存失败
CODE_ico.pnguploading.4e448015.gif转存失败
ico_fork.svguploading.4e448015.gif转存失败
ico_fork.svg
uploading.4e448015.gif转存失败
ico_fork.svguploading.4e448015.gif转存失败
  1. sudo pip install scikit-learn  

 

 

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

 

[python]   
 
 
CODE_ico.pnguploading.4e448015.gif转存失败
CODE_ico.png
uploading.4e448015.gif转存失败
CODE_ico.pnguploading.4e448015.gif转存失败
ico_fork.svguploading.4e448015.gif转存失败
ico_fork.svg
uploading.4e448015.gif转存失败
ico_fork.svguploading.4e448015.gif转存失败
  1. sudo pip install jieba  

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

[python]   
 
 
CODE_ico.pnguploading.4e448015.gif转存失败
CODE_ico.png
uploading.4e448015.gif转存失败
CODE_ico.pnguploading.4e448015.gif转存失败
ico_fork.svguploading.4e448015.gif转存失败
ico_fork.svg
uploading.4e448015.gif转存失败
ico_fork.svguploading.4e448015.gif转存失败
  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]   
 
 
CODE_ico.pnguploading.4e448015.gif转存失败
CODE_ico.png
uploading.4e448015.gif转存失败
CODE_ico.pnguploading.4e448015.gif转存失败
ico_fork.svguploading.4e448015.gif转存失败
ico_fork.svg
uploading.4e448015.gif转存失败
ico_fork.svguploading.4e448015.gif转存失败
  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]   
 
 
CODE_ico.pnguploading.4e448015.gif转存失败
CODE_ico.png
uploading.4e448015.gif转存失败
CODE_ico.pnguploading.4e448015.gif转存失败
ico_fork.svguploading.4e448015.gif转存失败
ico_fork.svg
uploading.4e448015.gif转存失败
ico_fork.svguploading.4e448015.gif转存失败
  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  
save_snippets.pnguploading.4e448015.gif转存失败
save_snippets.png
uploading.4e448015.gif转存失败
save_snippets.pnguploading.4e448015.gif转存失败

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

转载地址:https://liuhuiyao.blog.csdn.net/article/details/52692576 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:python 分词工具 jieba
下一篇:java 调用 python(使用jpython)

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月11日 20时16分38秒