[python] 使用scikit-learn工具计算文本TF-IDF值
2017-12-03 15:25
701 查看
转载自:http://blog.csdn.net/liuxuejiang158blog/article/details/31360765
TF-IDF简要介绍
(来自:http://blog.csdn.net/eastmount/article/details/50323063)
1 安装scikit-learn包(如果安装了Anaconda的话好像已经自带了)
sudo pip install scikit-learn
2 中文分词采用的jieba分词,安装jieba分词包(如果是用的anaconda的话可以下载压缩包然后解压到anaconda/env里,进入文件夹后pip就行了)
sudo pip install jieba
3 关于jieba分词的使用非常简单,参考这里,关键的语句就是(这里简单试水,不追求效果4 )
import jieba.posseg as pseg words=pseg.cut("对这句话进行分词") for key in words: print key.word,key.flag
输出结果:
对 p 这 r 句 q 话 n 进行 v 分词 n
4 采用scikit-learn包进行tf-idf分词权重计算关键用到了两个类:CountVectorizer和TfidfTransformer,具体参见这里
另外有两个写得比较详细的博客:
http://blog.csdn.net/eastmount/article/details/50323063
http://www.ruanyifeng.com/blog/2013/03/tf-idf.html
一个简单的代码如下:
# coding:utf-8 __author__ = "liuxuejiang" import jieba import jieba.posseg as pseg import os import sys from sklearn import feature_extraction from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_extraction.text import CountVectorizer if __name__ == "__main__": corpus=["我 来到 北京 清华大学",#第一类文本切词后的结果,词之间以空格隔开 "他 来到 了 网易 杭研 大厦",#第二类文本的切词结果 "小明 硕士 毕业 与 中国 科学院",#第三类文本的切词结果 "我 爱 北京 天安门"]#第四类文本的切词结果 #该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频 vectorizer=CountVectorizer() #该类会统计每个词语的tf-idf权值 4000 transformer=TfidfTransformer() #第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵 tfidf=transformer.fit_transform(vectorizer.fit_transform(corpus)) #获取词袋模型中的所有词语 word=vectorizer.get_feature_names() #将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重 weight=tfidf.toarray() #打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重 for i in range(len(weight)): print u"-------这里输出第",i,u"类文本的词语tf-idf权重------" for j in range(len(word)): print word[j],weight[i][j]
程序输出:每行格式为:词语 tf-idf权重
-------这里输出第 0 类文本的词语tf-idf权重------ #该类对应的原文本是:"我来到北京清华大学" 中国 0.0 北京 0.52640543361 大厦 0.0 天安门 0.0 小明 0.0 来到 0.52640543361 杭研 0.0 毕业 0.0 清华大学 0.66767854461 硕士 0.0 科学院 0.0 网易 0.0 -------这里输出第 1 类文本的词语tf-idf权重------ #该类对应的原文本是: "他来到了网易杭研大厦" 中国 0.0 北京 0.0 大厦 0.525472749264 天安门 0.0 小明 0.0 来到 0.414288751166 杭研 0.525472749264 毕业 0.0 清华大学 0.0 硕士 0.0 科学院 0.0 网易 0.525472749264 -------这里输出第 2 类文本的词语tf-idf权重------ #该类对应的原文本是: "小明硕士毕业于中国科学院“ 中国 0.4472135955 北京 0.0 大厦 0.0 天安门 0.0 小明 0.4472135955 来到 0.0 杭研 0.0 毕业 0.4472135955 清华大学 0.0 硕士 0.4472135955 科学院 0.4472135955 网易 0.0 -------这里输出第 3 类文本的词语tf-idf权重------ #该类对应的原文本是: "我爱北京天安门" 中国 0.0 北京 0.61913029649 大厦 0.0 天安门 0.78528827571 小明 0.0 来到 0.0 杭研 0.0 毕业 0.0 清华大学 0.0 硕士 0.0 科学院 0.0 网易 0.0
相关文章推荐
- [python] 使用scikit-learn工具计算文本TF-IDF值
- [python] 使用scikit-learn工具计算文本TF-IDF值
- 使用scikit-learn工具计算文本TF-IDF值
- python scikit-learn计算tf-idf词语权重
- 三十三、利用scikit-learn计算tf-idf做文本词频分析
- 使用scikit-learn tfidf计算词语权重
- Python 文本分类:使用scikit-learn 机器学习包进行文本分类
- python scikit-learn计算tf-idf词语权重
- python scikit-learn计算tf-idf词语权重
- Python下的机器学习工具scikit-learn(学习笔记3--数据预处理)
- 转:Python 文本挖掘:使用gensim进行文本相似度计算
- 使用Python scikit-learn 库实现神经网络算法
- scikit-learn包进行tf-idf计算
- Python 文本挖掘:使用gensim进行文本相似度计算
- Scikit-learn-python机器学习工具入门学习
- 使用Gensim建立bow TFIDF LSI模型对文本相似度计算
- 【编程语言】Python 使用包管理工具pip安装模块numpy、scipy、matplotlib以及scikit-learn CentOS 7
- Python 文本挖掘:使用gensim进行文本相似度计算 http://rzcoding.blog.163.com/blog/static/2222810172013101895642665/
- scikit-learn使用joblib.dump()持久化模型过程中的问题详解--python