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. C++第二次上机5-5

    建立一个复数类Complex,实数和虚数是其私有数据成员: 建立复数类的无参和参数化构造函数: 建立一个 *(乘号)的运算符重载,以便于对两个复数直接进行乘法运算: 建立输出函数void displa ...

  2. Could not reserve enough space for 1572864KB object heap

    This problem might be caused by incorrect configuration of the daemon.For example, an unrecognized j ...

  3. LeetCode——3Sum Closest

    Question Given an array S of n integers, find three integers in S such that the sum is closest to a ...

  4. jQuery基本筛选选择器

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. windchill系统安装大概步骤

    1.安装VMware Workstation虚拟机 2.win7的64位操作系统(为什么不用32位?因为32位的内存最大只能设置4G) 3.安装Oracle数据库(映射iso文件[上面栏的虚拟机-&g ...

  6. 物料类型AM11没有任务清单类型N定义

    CA01 创建工艺路线时报错信息:“物料类型AM11没有为任务清单类型N定义” (如下图) 处理方法: 配置路径:生产->基本数据->工艺路线->通用数据->定义物料类型分配 ...

  7. [sping]xml配置文件中factory-bean与factory-method(spring使用工厂方法注入bean)

    public class CarFactory { //非静态方法 public Car createCar(){ Car car = new Car(); car.setBrand("BM ...

  8. How to find per-process I/O statistics on Linux

    以下转自http://www.xaprb.com/blog/2009/08/23/how-to-find-per-process-io-statistics-on-linux/ Newer Linux ...

  9. net.paoding.analysis.exception.PaodingAnalysisException: dic home should not be a file, but a directory!

    Caused by: net.paoding.analysis.exception.PaodingAnalysisException: dic home should not be a file, b ...

  10. pip 使用总结

    pip的安装: Windows Python2.7 以上的版本均自带pip,安装的时候记得勾选对应的选项即可. 安装easy_install, 通过easy_install pip 下载[easy_s ...