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. Myeclipse中java项目转换为Web项目

    https://blog.csdn.net/u010097777/article/details/51281059 这两天工作安排做一个跳转页面,不过昨天发布自己的Tomact花了不少时间,给的项目添 ...

  2. Hive的两种表

    1.内部表 内部表Load数据有两种方式:① Load data ***:②hdfs dfs -put ****.这是因为在Metastore文件,即mysql的hive数据库的“SDS”表中,保存着 ...

  3. git将本地已经存在的分支和一个指定的远端分支建立映射关系

    Make an existing Git branch track a remote branch? Given a branch foo and a remote upstream: As of G ...

  4. java基础笔试题二(集合关系)

    知识点:java集合继承关系(Collection,Map) 1.集合框架体系图 2.java的集合层次 来自博客(http://blog.csdn.net/stubbornaccepted/arti ...

  5. java入门了解01

    http://www.oracle.com/technetwork/java/javase/downloads/index.html dos命令大全:http://www.zou114.com/dos ...

  6. Ice Cream Tower

    2017-08-18 21:53:38 writer:pprp 题意如下: Problem D. Ice Cream Tower Input file: Standard Input Output f ...

  7. C# winfrom listview 多窗口调用

    Form1 private void button1_Click(object sender, EventArgs e) { Form f = new Form2(ref listView1); f. ...

  8. BZOJ4767 两双手

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  9. invocationCount和invocationTimeOut

    这篇我们来学习下@Test中另外两个属性invocationCount和invocationTimeOut,前面我介绍了timOut这个属性,知道是超时监控的功能.同样,本篇两个属性和这个差不多,只不 ...

  10. FTRL 使用tensorflow的实现

    import tensorflow as tfimport numpy as npfrom sklearn import metricsfrom sklearn.datasets import loa ...