机器学习入门-文本数据-构造Tf-idf词袋模型(词频和逆文档频率) 1.TfidfVectorizer(构造tf-idf词袋模型)

TF-idf模型:TF表示的是词频:即这个词在一篇文档中出现的频率

idf表示的是逆文档频率, 即log(文档的个数/1+出现该词的文档个数)  可以看出出现该词的文档个数越小,表示这个词越稀有,在这篇文档中也是越重要的

TF-idf: 表示TF*idf, 即词频*逆文档频率

词袋模型不仅考虑了一个词的词频,同时考虑了这个词在整个语料库中的重要性

代码:

第一步:使用DataFrame格式处理数据,同时数组化数据

第二步:定义函数,进行分词和停用词的去除,并使用‘ ’连接去除停用词后的列表

第三步:使用np.vectorizer向量化函数,同时调用函数进行分词和停用词的去除

第四步:使用TfidfVectorizer函数,构造TF-idf的词袋模型

import pandas as pd
import numpy as np
import re
import nltk #pip install nltk

corpus = [‘The sky is blue and beautiful.‘,
          ‘Love this blue and beautiful sky!‘,
          ‘The quick brown fox jumps over the lazy dog.‘,
          ‘The brown fox is quick and the blue dog is lazy!‘,
          ‘The sky is very blue and the sky is very beautiful today‘,
          ‘The dog is lazy but the brown fox is quick!‘
]

labels = [‘weather‘, ‘weather‘, ‘animals‘, ‘animals‘, ‘weather‘, ‘animals‘]

# 第一步:构建DataFrame格式数据
corpus = np.array(corpus)
corpus_df = pd.DataFrame({‘Document‘: corpus, ‘categoray‘: labels})

# 第二步:构建函数进行分词和停用词的去除
# 载入英文的停用词表
stopwords = nltk.corpus.stopwords.words(‘english‘)
# 建立词分割模型
cut_model = nltk.WordPunctTokenizer()
# 定义分词和停用词去除的函数
def Normalize_corpus(doc):
    # 去除字符串中结尾的标点符号
    doc = re.sub(r‘[^a-zA-Z0-9\s]‘, ‘‘, string=doc)
    # 是字符串变小写格式
    doc = doc.lower()
    # 去除字符串两边的空格
    doc = doc.strip()
    # 进行分词操作
    tokens = cut_model.tokenize(doc)
    # 使用停止用词表去除停用词
    doc = [token for token in tokens if token not in stopwords]
    # 将去除停用词后的字符串使用‘ ‘连接,为了接下来的词袋模型做准备
    doc = ‘ ‘.join(doc)

    return doc

# 第三步:向量化函数和调用函数
# 向量化函数,当输入一个列表时,列表里的数将被一个一个输入,最后返回也是一个个列表的输出
Normalize_corpus = np.vectorize(Normalize_corpus)
# 调用函数进行分词和去除停用词
corpus_norm = Normalize_corpus(corpus)

# 第四步:使用TfidVectorizer进行TF-idf词袋模型的构建
from sklearn.feature_extraction.text import TfidfVectorizer

Tf = TfidfVectorizer(use_idf=True)
Tf.fit(corpus_norm)
vocs = Tf.get_feature_names()
corpus_array = Tf.transform(corpus_norm).toarray()
corpus_norm_df = pd.DataFrame(corpus_array, columns=vocs)
print(corpus_norm_df.head())

原文地址:https://www.cnblogs.com/my-love-is-python/p/10324751.html

时间: 2024-11-05 22:05:49

机器学习入门-文本数据-构造Tf-idf词袋模型(词频和逆文档频率) 1.TfidfVectorizer(构造tf-idf词袋模型)的相关文章

机器学习入门-文本数据-构造词频词袋模型 1.re.sub(进行字符串的替换) 2.nltk.corpus.stopwords.words(获得停用词表) 3.nltk.WordPunctTokenizer(对字符串进行分词操作) 4.np.vectorize(对函数进行向量化) 5. CountVectorizer(构建词频的词袋模型)

函数说明: 1. re.sub(r'[^a-zA-Z0-9\s]', repl='', sting=string)  用于进行字符串的替换,这里我们用来去除标点符号 参数说明:r'[^a-zA-Z0-9\s]' 配对的模式,^表示起始位置,\s表示终止位置,[]表示取中间部分,这个的意思是找出除字符串大小写或者数字组成以外的东西,repl表示使用什么进行替换,这里使用'',即直接替换,string表示输入的字符串 2. stopwords = nltk.corpus.stopwords.word

机器学习入门-文本数据-使用聚类增加文本的标签属性

通过对特征做一个kmeans聚类,将聚类的结果做为文本的标签值,可以使得样本的特征更多 我们从sklearn.cluster中导入Kmeans建立模型进行聚类 代码: 第一步:使用Dataframe格式化数据和使用数据格式化数据 第二步:对字符串进行分词和去除停用词,并使用' '.join完成连接 第三步:使用np.vectorizer向量化函数,调用函数进行分词和去除停用词 第四步:使用Tfidfvectorizer构造词袋模型 第五步:使用cosine_similarity构造相关性矩阵 第

机器学习入门-文本特征-word2vec词向量模型 1.word2vec(进行word2vec映射编码)2.model.wv['sky']输出这个词的向量映射 3.model.wv.index2vec(输出经过映射的词名称)

函数说明: 1. from gensim.model import word2vec  构建模型 word2vec(corpus_token, size=feature_size, min_count=min_count, window=window, sample=sample) 参数说明:corpus_token已经进行切分的列表数据,数据格式是list of list , size表示的是特征向量的维度,即映射的维度, min_count表示最小的计数词,如果小于这个数的词,将不进行统计,

(大数据工程师学习路径)第二步 Vim编辑器----Vim文档编辑

一.vim重复命令 1.重复执行上次命令 在普通模式下.(小数点)表示重复上一次的命令操作 拷贝测试文件到本地目录 $ cp /etc/protocols . 打开文件进行编辑 $ vim protocols 普通模式下输入x,删除第一个字符,输入.(小数点)会再次删除一个字符,除此之外也可以重复dd的删除操作 2.执行指定次数相同的命令 进入普通模式输入N<command>,N表示重复后面的次数,下面来练习以下: 打开文件文件进行编辑 $ vim protocols 下面你可以依次进行如下操

Tensorflow机器学习入门——读取数据

TensorFlow 中可以通过三种方式读取数据: 一.通过feed_dict传递数据: input1 = tf.placeholder(tf.float32) input2 = tf.placeholder(tf.float32) output = tf.multiply(input1, input2) with tf.Session() as sess: feed_dict={input1: [[7.,2.]], input2: [[2.],[3.]]} print(sess.run(out

如何用机器学习对文本分类

需求 使用监督学习对历史数据训练生成模型,用于预测文本的类别. 样本清洗 主要将重复的数据删除掉,将错误无效的数据纠正或删除,并检查数据的一致性等.比如我认为长度小于少于13的数据是无效的遂将之删掉. def writeFile(text): file_object = open('result.txt','w') file_object.write(text) file_object.close() def clear(): text = "" file_obj = open(&qu

文本数据的机器学习自动分类方法(转)

http://blog.csdn.net/jdbc/article/details/50586042 本文为第一部分,着重介绍文本预处理以及特征抽取的方法. 随着互联网技术的迅速发展与普及,如何对浩如烟海的数据进行分类.组织和管理,已经成为一个具有重要用途的研究课题.而在这些数据中,文本数据又是数量最大的一类."文本分类是指在给定分类体系下,根据文本内容自动确定文本类别的过程"(达观数据科技联合创始人,张健).文本分类有着广泛的应用场景,例如: 新闻网站包含大量报道文章,基于文章内容,

关于机器学习中文本处理的一些常用方法

前言 文本挖掘也是机器学习或者说是人工智能最需要处理的一类信息(其它的诸如语音.图像及视频处理等):随着数字信息化和网络化进程不断深入,用户的在线交流.发布.共享等都被以文字形式记录下来,它们成为分析语言和理解社会的重要素材来源,对于文本的挖掘主要包括文档分类.信息提取.文档聚类.主题建模等. 早期的文本处理主要偏向于依赖规则(依据语法规则生成相关语法树),但这类方法偏向静态,无法实时处理浩如烟海的互联网及其它来源的文字素材,更为重要的是它无法体现各种语言之间的相关性,而在上世纪80年代开始,机

大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作

一 概述1.1 什么是搜索?1.2 如果用数据库做搜索会怎么样?1.3 什么是全文检索和 Lucene?1.4 什么是 Elasticsearch?1.5 Elasticsearch 的适用场景1.6 Elasticsearch 的特点1.7 Elasticsearch 的核心概念1.7.1 近实时1.7.2 Cluster(集群)1.7.3 Node(节点)1.7.4 Index(索引 --> 数据库)1.7.5 Type(类型 --> 表)1.7.6 Document(文档 -->