天天看点

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

1 安装scikit-learn包

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

sudo pip install scikit-learn  

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

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

sudo pip install jieba  

)

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

import jieba.posseg as pseg  

words=pseg.cut("对这句话进行分词")  

for key in words:  

     print key.word,key.flag  

输出结果:

对 p

这 r

句 q

话 n

进行 v

分词 n

  一个简单的代码如下:

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

# coding:utf-8  

__author__ = "liuxuejiang"  

import jieba  

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权重

python scikit-learn计算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.525472749264  

来到 0.414288751166  

杭研 0.525472749264  

清华大学 0.0  

网易 0.525472749264  

-------这里输出第 2 类文本的词语tf-idf权重------           #该类对应的原文本是: "小明硕士毕业于中国科学院“  

中国 0.4472135955  

小明 0.4472135955  

来到 0.0  

毕业 0.4472135955  

硕士 0.4472135955  

科学院 0.4472135955  

-------这里输出第 3 类文本的词语tf-idf权重------            #该类对应的原文本是: "我爱北京天安门"  

北京 0.61913029649  

天安门 0.78528827571  

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

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