第一步:语料转化为词袋向量

step 1. 声明一个向量化工具vectorizer;

本文使用的是CountVectorizer,默认情况下,CountVectorizer仅统计长度超过两个字符的词,但是在短文本中任何一个字都可能十分重要,比如“去/到”等,所以要想让CountVectorizer也支持单字符的词,需要加上参数token_pattern='\\b\\w+\\b'

step 2. 根据语料集统计词袋(fit);
step 3. 打印语料集的词袋信息;
step 4. 将语料集转化为词袋向量(transform);
step 5. 还可以查看每个词在词袋中的索引。

代码:

step 1中:  min_df、max_df 表示一个阈值,低于、超过这个阈值的词汇讲被忽略
from sklearn.feature_extraction.text import CountVectorizer
# step 1
vectoerizer = CountVectorizer(min_df=1, max_df=1.0, token_pattern='\\b\\w+\\b')
# step 2
vectoerizer.fit(corpus)
# step 3
bag_of_words = vectoerizer.get_feature_names()
print("Bag of words:")
print(bag_of_words)
print(len(bag_of_words))
# step 4
X = vectoerizer.transform(corpus)
print("Vectorized corpus:")
print(X.toarray())
# step 5
print("index of `的` is : {}".format(vectoerizer.vocabulary_.get('的')))

  

第二步:根据词袋向量统计TF-IDF

step 1. 声明一个TF-IDF转化器(TfidfTransformer);
step 2. 根据语料集的词袋向量计算TF-IDF(fit);
step 3. 打印TF-IDF信息:比如结合词袋信息,可以查看每个词的TF-IDF值;
step 4. 将语料集的词袋向量表示转换为TF-IDF向量表示;

from sklearn.feature_extraction.text import TfidfTransformer
# step 1
tfidf_transformer = TfidfTransformer()
# step 2
tfidf_transformer.fit(X.toarray())
# step 3
for idx, word in enumerate(vectoerizer.get_feature_names()):
print("{}\t{}".format(word, tfidf_transformer.idf_[idx]))
# step 4
tfidf = tfidf_transformer.transform(X)
print(tfidf.toarray())

  输出

上海  1.8109302162163288
东方明珠 2.504077396776274
什么 2.504077396776274
今天 2.504077396776274
到 2.504077396776274
北京 1.587786664902119
去 2.504077396776274
在哪 2.504077396776274
天气 2.09861228866811
好不好 2.504077396776274
好玩的 2.504077396776274
帮我 1.0
怎么样 2.504077396776274
找找 2.504077396776274
搜索 2.504077396776274
新闻 2.09861228866811
明天 2.504077396776274
有 2.504077396776274
有没有 2.504077396776274
查下 2.09861228866811
查看 2.09861228866811
查询 2.504077396776274
火车 2.09861228866811
特朗普 2.504077396776274
的 1.587786664902119
看看 2.504077396776274
[[0. 0. 0. 0. 0. 0.3183848
0. 0. 0.42081614 0. 0. 0.20052115
0.50212047 0. 0. 0. 0.50212047 0.
0. 0.42081614 0. 0. 0. 0.
0. 0. ]
[0. 0. 0. 0.50212047 0. 0.3183848
0. 0. 0.42081614 0.50212047 0. 0.20052115
0. 0. 0. 0. 0. 0.
0. 0.42081614 0. 0. 0. 0.
0. 0. ]
[0. 0. 0. 0. 0. 0.33116919
0.52228256 0. 0. 0. 0. 0.20857285
0. 0. 0. 0. 0. 0.
0. 0. 0. 0.52228256 0.43771355 0.
0.33116919 0. ]
[0.38715525 0. 0. 0. 0.53534183 0.
0. 0. 0. 0. 0. 0.21378805
0. 0. 0. 0. 0. 0.
0. 0. 0.44865824 0. 0.44865824 0.
0.33944982 0. ]
[0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.23187059
0. 0. 0. 0.48660646 0. 0.
0. 0. 0.48660646 0. 0. 0.5806219
0.36816103 0. ]
[0. 0. 0. 0. 0. 0.33116919
0. 0. 0. 0. 0. 0.20857285
0. 0. 0. 0.43771355 0. 0.
0.52228256 0. 0. 0. 0. 0.
0.33116919 0.52228256]
[0.33420711 0. 0.4621274 0. 0. 0.
0. 0. 0. 0. 0.4621274 0.18454996
0. 0. 0.4621274 0. 0. 0.4621274
0. 0. 0. 0. 0. 0.
0. 0. ]
[0.37686288 0.52110999 0. 0. 0. 0.
0. 0.52110999 0. 0. 0. 0.20810458
0. 0.52110999 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. ]]

  出处: http://www.cnblogs.com/CheeseZH/

上面的sklearn 的函数介绍:

CountVectorizer 实例介绍:

tf-idf sklearn的更多相关文章

  1. tf idf公式及sklearn中TfidfVectorizer

    在文本挖掘预处理之向量化与Hash Trick中我们讲到在文本挖掘的预处理中,向量化之后一般都伴随着TF-IDF的处理,那么什么是TF-IDF,为什么一般我们要加这一步预处理呢?这里就对TF-IDF的 ...

  2. TF/IDF(term frequency/inverse document frequency)

    TF/IDF(term frequency/inverse document frequency) 的概念被公认为信息检索中最重要的发明. 一. TF/IDF描述单个term与特定document的相 ...

  3. 基于TF/IDF的聚类算法原理

        一.TF/IDF描述单个term与特定document的相关性TF(Term Frequency): 表示一个term与某个document的相关性. 公式为这个term在document中出 ...

  4. 使用solr的函数查询,并获取tf*idf值

    1. 使用函数df(field,keyword) 和idf(field,keyword). http://118.85.207.11:11100/solr/mobile/select?q={!func ...

  5. TF/IDF计算方法

    FROM:http://blog.csdn.net/pennyliang/article/details/1231028 我们已经谈过了如何自动下载网页.如何建立索引.如何衡量网页的质量(Page R ...

  6. tf–idf算法解释及其python代码实现(下)

    tf–idf算法python代码实现 这是我写的一个tf-idf的简单实现的代码,我们知道tfidf=tf*idf,所以可以分别计算tf和idf值在相乘,首先我们创建一个简单的语料库,作为例子,只有四 ...

  7. tf–idf算法解释及其python代码实现(上)

    tf–idf算法解释 tf–idf, 是term frequency–inverse document frequency的缩写,它通常用来衡量一个词对在一个语料库中对它所在的文档有多重要,常用在信息 ...

  8. 文本分类学习(三) 特征权重(TF/IDF)和特征提取

    上一篇中,主要说的就是词袋模型.回顾一下,在进行文本分类之前,我们需要把待分类文本先用词袋模型进行文本表示.首先是将训练集中的所有单词经过去停用词之后组合成一个词袋,或者叫做字典,实际上一个维度很大的 ...

  9. 信息检索中的TF/IDF概念与算法的解释

    https://blog.csdn.net/class_brick/article/details/79135909 概念 TF-IDF(term frequency–inverse document ...

  10. Elasticsearch学习之相关度评分TF&IDF

    relevance score算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度 Elasticsearch使用的是 term frequency/inverse doc ...

随机推荐

  1. 从socket开始讲IOS网络编程

    home list tags talk user rss Mac&iOS Socket 大纲 一.Socket简介 二.BSD Socket编程准备 1.地址 2.端口 3.网络字节序 4.半 ...

  2. C6 P5.2

    引用自 http://snippetinfo.net/media/117 下载源:php-5.2-x64.zip wget 源包.zip yum -y install httpd libXpm.so. ...

  3. 使用C#通过Oracle.DataAccess连接Oracle,部署时需要注意版本问题

    平时我们开发使用的是32位的PC机,所以安装的也是Oracle32位的客户端.但是一般服务器都是64位的,安装的也是64位的Oracle客户端,如果要部署使用Oracle.DataAccess连接Or ...

  4. Hibernate核心API

    ------------------------siwuxie095 (一)Configuration 1.一般情况 或: 加载核心配置文件:在 src 下找到名称为 Hibernate.cfg.xm ...

  5. 用 Markdown 写作(一)——添加文章页内导航

    Markdown 可以用更简化的标记来写文章,基本的语法可以参考Markdown 语法说明 (简体中文版). 我平时很少按照论文的写法去写博客,说来忏愧,因为很少写技术性的文章,最近看到百度百科和很多 ...

  6. 15-I hate it (HDU1754:线段树)

    http://acm.hdu.edu.cn/showproblem.php?pid=1754     相似例题:  敌兵布阵  http://www.cnblogs.com/zhumengdexiao ...

  7. 由浅到深理解ROS(5)- launch启动文件的理解与编写

    ROS提供了一个同时启动节点管理器(master)和多个节点的途径,即使用启动文件(launch file).事实上,在ROS功能包中,启动文件的使用是非常普遍的.任何包含两个或两个以上节点的系统都可 ...

  8. 第一话:IE中用DOM方法绑定事件

    工作比较忙,但是也一定要抽时间出来提升一下自己的基本功,只有技术实力到位,才能为公司和个人创造更多的价值.下面进入主题: IE中事件监听比较容易用到,但是由它所引出的一个关于this的问题,不得不着重 ...

  9. [C++] const object

    const  object const 对象只能调用const函数 const函数不能改变一般成员变量的值,但是mutable的变量不受限制

  10. [Schema] I have updated my XML Schema for my service but SoapUI still generates/validates according to the old schema.

    SoapUI caches XML schemas when they are first loaded. If you need to force a reload of an interfaces ...