首页 > 代码库 > python scikit-learn计算tf-idf词语权重
python scikit-learn计算tf-idf词语权重
python的scikit-learn包下有计算tf-idf的api,研究了下做个笔记
1 安装scikit-learn包
sudo pip install scikit-learn
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,具体参见这里
一个简单的代码如下:
# 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=["我 来到 北京 清华大学",#第一类文本切词后的结果,词之间以空格隔开 "他 来到 了 网易 杭研 大厦",#第二类文本的切词结果 "小明 硕士 毕业 与 中国 科学院",#第三类文本的切词结果 "我 爱 北京 天安门"]#第四类文本的切词结果 vectorizer=CountVectorizer()#该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频 transformer=TfidfTransformer()#该类会统计每个词语的tf-idf权值 tfidf=transformer.fit_transform(vectorizer.fit_transform(corpus))#第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵 word=vectorizer.get_feature_names()#获取词袋模型中的所有词语 weight=tfidf.toarray()#将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重 for i in range(len(weight)):#打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重 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注:这里随便举了几个文本,所以tf-idf也没什么实际价值,旨在说明scikit-learn包关于tf-idf计算API的调用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。