TFIDF,ngrame的scikitlearn接口

原创 2018年04月17日 21:53:44

(1)TFIDF计算的scikitlearn接口

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权值
    #fit_transform是将文本转为词频矩阵,其输出格式如(0, 8)  1,表示第0篇文章中的第八个词(是在整个bag中的排序)的频率是1
    word_frequency = vectorizer.fit_transform(corpus)
    print(word_frequency)
    tfidf=transformer.fit_transform(word_frequency)#第一个fit_transform是计算tf-idf
    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])
注意点:
1用其接口“我,他,了”这些词是过滤了的
2词频的输出格式如(0, 8) 1,表示第0篇文章中的第八个词(是在整个bag中的排序)的频率是1
3 如果是中文的话需要先分词,分词工具可以使用如下jieba分词工具
  1. import jieba.posseg as pseg  
  2. words=pseg.cut("对这句话进行分词")  
  3. for key in words:  
  4.      print key.word,key.flag 

具体的分类中使用:https://www.cnblogs.com/generalz/p/5161765.html

https://blog.csdn.net/lrita/article/details/48179783


(2)ngram

vectorizer = sklearn.feature_extraction.text.TfidfVectorizer(analyzer="word", stop_words="english", binary=False, ngram_range=(1,2))
train_data = vectorizer.fit_transform(train_corpus)
test_data = vectorizer.transform(test_corpus)
#其中train_corpus和test_corpus是list存储的自然语言语句


书友会主持人,CSDN内容主编:韩磊

  • foxfly
  • foxfly
  • 2004-04-17 10:38:00
  • 699

应用scikit-learn做文本分类

文本挖掘的paper没找到统一的benchmark,只好自己跑程序,走过路过的前辈如果知道20newsgroups或者其它好用的公共数据集的分类(最好要所有类分类结果,全部或取部分特征无所谓)麻烦留言...
  • abcjennifer
  • abcjennifer
  • 2014-04-13 20:53:15
  • 82103

如何用scikit-learn求TF-IDF

如何结合利用jieba库和scikit-learn库处理中文的TFIDF权重值
  • alanlistens
  • alanlistens
  • 2016-10-29 21:32:45
  • 923

[python] 使用scikit-learn工具计算文本TF-IDF值

在文本聚类、文本分类或者比较两个文档相似程度过程中,可能会涉及到TF-IDF值的计算。这里主要讲述基于Python的机器学习模块和开源工具:scikit-learn。文章包括:一.Scikit-lea...
  • Eastmount
  • Eastmount
  • 2016-08-08 16:46:08
  • 28517

一篇介绍TFIDF的ppt

  • 2011年03月25日 10:59
  • 859KB
  • 下载

scikit-learn:从文本文件中提取特征(tf、idf)

http://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html 昨晚写了两篇文章,明明保存了,今早...
  • mmc2015
  • mmc2015
  • 2015-07-13 07:48:40
  • 2917

使用sklearn实现tfidf特征计算

sklearn实现tfidf特征计算
  • daizongxue
  • daizongxue
  • 2017-08-22 15:40:24
  • 1276

Sklearn TFIDF中文计算问题以及解决方法

我在使用sklearn中的ITIDF工具,想来这是在文本处理中常用的有个现成的工具一定是极好的。但是网上查了下代码试了下并没有得到跟他们一样的结果。现象是这样的,凡是输入的是中文就直接被忽略掉了,如果...
  • Tiffany_Li2015
  • Tiffany_Li2015
  • 2015-12-09 15:20:12
  • 4486

Hands On MachineLearning with ScikitLearn and TensorFlow

  • 2018年01月12日 10:26
  • 26.31MB
  • 下载

scikit-learn:0.3. 从文本文件中提取特征(tf、tf-idf)、训练一个分类器

上一篇讲了如何加载数据。 本篇参考:http://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html...
  • mmc2015
  • mmc2015
  • 2015-07-12 20:52:56
  • 2847
收藏助手
不良信息举报
您举报文章:TFIDF,ngrame的scikitlearn接口
举报原因:
原因补充:

(最多只允许输入30个字)