sklearn中,计数向量化用CountVectorizer,tfidf向量化用TfidfVectorizer

import pickle
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer def test(vectorizer, word_bag, test_data):
test_matrix = vectorizer.transform(test_data)
print(test_matrix.shape)
array = test_matrix.toarray()
for rid in range(len(array)):
print(test_data[rid], "\t", "".join(["(%s, %.5f)" % (word_bag[cid], array[rid][cid]) for cid in range(len(word_bag))])) def vectorize():
train_data = ["我 来到 北京 清华大学", "他 来到 了 网易 杭研 大厦", "小明 硕士 毕业 与 中国 科学院", "我 爱 北京 天安门"]
# vectorizer = CountVectorizer()
vectorizer = TfidfVectorizer(norm="l1")
vectorizer.fit(train_data)
# train_matrix = vectorizer.fit_transform(train_data)
word_bag = vectorizer.get_feature_names()
print("[word_bag] %s" % " ".join(word_bag))
print("[vocabulary] %s" % json.dumps(vectorizer.vocabulary_, ensure_ascii=False)) test(vectorizer, word_bag, test_data=train_data)
test(vectorizer, word_bag, test_data=["小明 来到 北京 天安门"]) file_name = "data/vectorizer.pkl"
pickle.dump(vectorizer, open(file_name, "w"), protocol=1) tfidf_vectorizer = pickle.load(open(file_name, "r"))
test(tfidf_vectorizer, word_bag, test_data=["小明 来到 北京 天安门"])
  • TfidfVectorizer初始化对象时可以指定归一化参数norm : 'l1', 'l2' or None, optional
  • Countvectorizer和TfidfVectorizer在分token的时候,默认把长度<2的字符丢弃,如果要保留,可以指定token_pattern参数
  • 默认由输入的文档决定词表,也可以指定vocabulary参数
vectorizer = CountVectorizer(token_pattern=r"\w+", vocabulary=all_features)  # 保留长度小于2的token

样例运行结果:

[word_bag] 中国 北京 大厦 天安门 小明 来到 杭研 毕业 清华大学 硕士 科学院 网易
[vocabulary] {"小明": 4, "网易": 11, "杭研": 6, "毕业": 7, "北京": 1, "清华大学": 8, "来到": 5, "大厦": 2, "硕士": 9, "中国": 0, "天安门": 3, "科学院": 10}
(4, 12)
我 来到 北京 清华大学 (中国, 0.00000)(北京, 0.30596)(大厦, 0.00000)(天安门, 0.00000)(小明, 0.00000)(来到, 0.30596)(杭研, 0.00000)(毕业, 0.00000)(清华大学, 0.38807)(硕士, 0.00000)(科学院, 0.00000)(网易, 0.00000)
他 来到 了 网易 杭研 大厦 (中国, 0.00000)(北京, 0.00000)(大厦, 0.26396)(天安门, 0.00000)(小明, 0.00000)(来到, 0.20811)(杭研, 0.26396)(毕业, 0.00000)(清华大学, 0.00000)(硕士, 0.00000)(科学院, 0.00000)(网易, 0.26396)
小明 硕士 毕业 与 中国 科学院 (中国, 0.20000)(北京, 0.00000)(大厦, 0.00000)(天安门, 0.00000)(小明, 0.20000)(来到, 0.00000)(杭研, 0.00000)(毕业, 0.20000)(清华大学, 0.00000)(硕士, 0.20000)(科学院, 0.20000)(网易, 0.00000)
我 爱 北京 天安门 (中国, 0.00000)(北京, 0.44084)(大厦, 0.00000)(天安门, 0.55916)(小明, 0.00000)(来到, 0.00000)(杭研, 0.00000)(毕业, 0.00000)(清华大学, 0.00000)(硕士, 0.00000)(科学院, 0.00000)(网易, 0.00000)
(1, 12)
小明 来到 北京 天安门 (中国, 0.00000)(北京, 0.22042)(大厦, 0.00000)(天安门, 0.27958)(小明, 0.27958)(来到, 0.22042)(杭研, 0.00000)(毕业, 0.00000)(清华大学, 0.00000)(硕士, 0.00000)(科学院, 0.00000)(网易, 0.00000)
save finished.
(1, 12)
小明 来到 北京 天安门 (中国, 0.00000)(北京, 0.22042)(大厦, 0.00000)(天安门, 0.27958)(小明, 0.27958)(来到, 0.22042)(杭研, 0.00000)(毕业, 0.00000)(清华大学, 0.00000)(硕士, 0.00000)(科学院, 0.00000)(网易, 0.00000)

参考:

sklearn.feature_extraction.text.TfidfVectorizer

利用Python进行文章特征提取(一)

https://blog.csdn.net/macanv/article/details/78523961

基于sklearn进行文本向量化的更多相关文章

  1. 自然语言处理--中文文本向量化counterVectorizer()

    1.载入文档 #!/usr/bin/python # -*- coding: utf-8 -*- import pandas as pd import re import jieba from skl ...

  2. 数据挖掘入门系列教程(九)之基于sklearn的SVM使用

    目录 介绍 基于SVM对MINIST数据集进行分类 使用SVM SVM分析垃圾邮件 加载数据集 分词 构建词云 构建数据集 进行训练 交叉验证 炼丹术 总结 参考 介绍 在上一篇博客:数据挖掘入门系列 ...

  3. 利用sklearn计算文本相似性

    利用sklearn计算文本相似性,并将文本之间的相似度矩阵保存到文件当中.这里提取文本TF-IDF特征值进行文本的相似性计算. #!/usr/bin/python # -*- coding: utf- ...

  4. Mahout文本向量化

    在文本聚类之前,首先要做的是文本的向量化.该过程涉及到分词,特征抽取,权重计算等等.Mahout 提供了文本向量化工具.由于Mahout 向量化算法要处理的文件是Hadoop SequenceFile ...

  5. tensorflow实现基于LSTM的文本分类方法

    tensorflow实现基于LSTM的文本分类方法 作者:u010223750 引言 学习一段时间的tensor flow之后,想找个项目试试手,然后想起了之前在看Theano教程中的一个文本分类的实 ...

  6. 一文详解如何用 TensorFlow 实现基于 LSTM 的文本分类(附源码)

    雷锋网按:本文作者陆池,原文载于作者个人博客,雷锋网已获授权. 引言 学习一段时间的tensor flow之后,想找个项目试试手,然后想起了之前在看Theano教程中的一个文本分类的实例,这个星期就用 ...

  7. 基于 Spark 的文本情感分析

    转载自:https://www.ibm.com/developerworks/cn/cognitive/library/cc-1606-spark-seniment-analysis/index.ht ...

  8. (4.2)基于LingPipe的文本基本极性分析【demo】

    酒店评论情感分析系统(四)—— 基于LingPipe的文本基本极性分析[demo] (Positive (favorable) vs. Negative (unfavorable)) 这篇文章为Lin ...

  9. 文本向量化及词袋模型 - NLP学习(3-1)

    分词(Tokenization) - NLP学习(1) N-grams模型.停顿词(stopwords)和标准化处理 - NLP学习(2)   之前我们都了解了如何对文本进行处理:(1)如用NLTK文 ...

随机推荐

  1. Leetcode(93): Restore IP Addresses

    Given a string containing only digits, restore it by returning all possible valid IP address combina ...

  2. 从零开始玩转JMX(一)——简介和Standard MBean

    JMX的全称为Java Management Extensions. 顾名思义,是管理Java的一种扩展.这种机制可以方便的管理.监控正在运行中的Java程序.常用于管理线程,内存,日志Level,服 ...

  3. CentOS(64位)安装apr

    安装apr来提高tomcat 的可伸缩性和性能 cd /usr/local/ 1.  下载apr 和 apr-util最新版 wget http://apache.fayea.com/apache-m ...

  4. 计算java对象的内存占用

    代码引用自:https://blog.csdn.net/antony9118/article/details/54317637  感谢博主分享: import java.util.ArrayList; ...

  5. [ACM]51nod 贪心专题

    目录 A 低买高卖 C 接水问题 D做任务一 E做任务三 51nod一个贪心专题,大多数都是见过的套路,做题找找感觉,有些题解思路懒得写了,直接贴毕姥爷的直播题解了 A 低买高卖 考虑股票市场,一共有 ...

  6. 解题报告:poj1061 青蛙的约会 - 扩展欧几里得算法

    青蛙的约会 writer:pprp Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 119716 Accepted: 25238 ...

  7. 请教下 f = f.replace('\n', '\r')这条没起作用

    !/usr/bin/env python -- coding: utf-8 -- import json import string import sys reload(sys) sys.setdef ...

  8. linux 进程在后台执行

    把任务放到后台用 & 和 Ctrl+z 让后台任务从停止状态转为运行状态用 bg %N 把后台任务调回到前台用 fg %N 查看所有任务用jobs https://www.cnblogs.co ...

  9. Android -- 多线程下载, 断点下载

    1. 原理图 2. 示例代码 需要权限 <uses-permission android:name="android.permission.INTERNET"/> &l ...

  10. 【Python】解决Python脚本 在cmd命令行窗口运行时,中文乱码问题

    问题描述 python2.X,代码中指定了UTF-8,但是在cmd命令行窗口时,打印的中文仍然会乱码 在python3不存在该问题 运行结果: 原因 搜索得知,中文windows默认的输出编码为gbk ...