函数说明:

1 CountVectorizer(ngram_range=(2, 2)) 进行字符串的前后组合,构造出新的词袋标签

参数说明:ngram_range=(2, 2) 表示选用2个词进行前后的组合,构成新的标签值

Ngram模型表示的是,对于词频而言,只考虑一个词,这里我们在CountVectorizer统计词频时,传入ngram_range=(2, 2)来构造新的词向量的组合

好比一句话'I like you'

如果ngram_range = (2, 2)表示只选取前后的两个词构造词组合 :词向量组合为:’I like‘ 和 ’like you‘

如果ngram_range = (1, 3) 表示选取1到3个词做为组合方式: 词向量组合为: 'I', 'like', 'you', 'I like', 'like you', 'I like you' 构成词频标签

代码:

第一步:构造Dataframe格式,并数组化数据

第二步:构造函数进行分词和去除停用词,并使用空格进行串接,为了分词做准备

第三步:np.vectorize 向量化函数,并调用函数进行分词和去除停用词

第四步:使用CountVectorizer(ngram_range(2, 2)) 进行文本的词向量拼接

  1. import pandas as pd
  2. import numpy as np
  3. import re
  4. import nltk #pip install nltk
  5.  
  6. corpus = ['The sky is blue and beautiful.',
  7. 'Love this blue and beautiful sky!',
  8. 'The quick brown fox jumps over the lazy dog.',
  9. 'The brown fox is quick and the blue dog is lazy!',
  10. 'The sky is very blue and the sky is very beautiful today',
  11. 'The dog is lazy but the brown fox is quick!'
  12. ]
  13.  
  14. labels = ['weather', 'weather', 'animals', 'animals', 'weather', 'animals']
  15.  
  16. # 第一步:构建DataFrame格式数据
  17. corpus = np.array(corpus)
  18. corpus_df = pd.DataFrame({'Document': corpus, 'categoray': labels})
  19.  
  20. # 第二步:构建函数进行分词和停用词的去除
  21. # 载入英文的停用词表
  22. stopwords = nltk.corpus.stopwords.words('english')
  23. # 建立词分割模型
  24. cut_model = nltk.WordPunctTokenizer()
  25. # 定义分词和停用词去除的函数
  26. def Normalize_corpus(doc):
  27. # 去除字符串中结尾的标点符号
  28. doc = re.sub(r'[^a-zA-Z0-9\s]', '', string=doc)
  29. # 是字符串变小写格式
  30. doc = doc.lower()
  31. # 去除字符串两边的空格
  32. doc = doc.strip()
  33. # 进行分词操作
  34. tokens = cut_model.tokenize(doc)
  35. # 使用停止用词表去除停用词
  36. doc = [token for token in tokens if token not in stopwords]
  37. # 将去除停用词后的字符串使用' '连接,为了接下来的词袋模型做准备
  38. doc = ' '.join(doc)
  39.  
  40. return doc
  41.  
  42. # 第三步:向量化函数和调用函数
  43. # 向量化函数,当输入一个列表时,列表里的数将被一个一个输入,最后返回也是一个个列表的输出
  44. Normalize_corpus = np.vectorize(Normalize_corpus)
  45. # 调用函数进行分词和去除停用词
  46. corpus_norm = Normalize_corpus(corpus)
    print(corpus_norm)

  1. # 第四步:使用ngram_range构造组合的词袋标签
  2. from sklearn.feature_extraction.text import CountVectorizer
  3. CV = CountVectorizer(ngram_range=(2, 2))
  4. CV.fit(corpus_norm)
  5. vocs = CV.get_feature_names()
  6. print(vocs)
  7. corpus_array = CV.transform(corpus_norm).toarray()
  8. corpus_norm_df = pd.DataFrame(corpus_array, columns=vocs)
  9. print(corpus_norm_df.head())

部分的组合结果

机器学习入门-文本数据-构造Ngram词袋模型 1.CountVectorizer(ngram_range) 构建Ngram词袋模型的更多相关文章

  1. 机器学习入门-文本数据-构造词频词袋模型 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- ...

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

    TF-idf模型:TF表示的是词频:即这个词在一篇文档中出现的频率 idf表示的是逆文档频率, 即log(文档的个数/1+出现该词的文档个数)  可以看出出现该词的文档个数越小,表示这个词越稀有,在这 ...

  3. 机器学习入门-文本特征-使用LDA主题模型构造标签 1.LatentDirichletAllocation(LDA用于构建主题模型) 2.LDA.components(输出各个词向量的权重值)

    函数说明 1.LDA(n_topics, max_iters, random_state)  用于构建LDA主题模型,将文本分成不同的主题 参数说明:n_topics 表示分为多少个主题, max_i ...

  4. 机器学习入门-贝叶斯构造LDA主题模型,构造word2vec 1.gensim.corpora.Dictionary(构造映射字典) 2.dictionary.doc2vec(做映射) 3.gensim.model.ldamodel.LdaModel(构建主题模型)4lda.print_topics(打印主题).

    1.dictionary = gensim.corpora.Dictionary(clean_content)  对输入的列表做一个数字映射字典, 2. corpus = [dictionary,do ...

  5. 机器学习入门-文本特征-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 ...

  6. 【机器学习】机器学习入门02 - 数据拆分与测试&算法评价与调整

    0. 前情回顾 上一周的文章中,我们通过kNN算法了解了机器学习的一些基本概念.我们自己实现了简单的kNN算法,体会了其过程.这一周,让我们继续机器学习的探索. 1. 数据集的拆分 上次的kNN算法介 ...

  7. Jmeter入门16 数据构造之随机数Random Variable & __Random函数

     接口测试有时参数使用随机数构造.jmeter添加随机数两种方式 1  添加配置 > Random Variable  2  __Random函数   ${__Random(1000,9999) ...

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

    TensorFlow 中可以通过三种方式读取数据: 一.通过feed_dict传递数据: input1 = tf.placeholder(tf.float32) input2 = tf.placeho ...

  9. 如何使用 scikit-learn 为机器学习准备文本数据

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 文本数据需要特殊处理,然后才能开始将其用于预测建模. 我们需要解析文本,以删除被称为标记化的单词.然后,这些词还需要被编码为整型或浮点型,以用作 ...

随机推荐

  1. R语言学习——根据信息熵建决策树KD3

    R语言代码 决策树的构建 rm(list=ls()) setwd("C:/Users/Administrator/Desktop/R语言与数据挖掘作业/实验3-决策树分类") #s ...

  2. 廖雪峰Java1-3流程控制-4switch多重选择

    switch语句 根据switch(表达式)跳转到匹配的case结果,继续执行case结果: 的后续语句,遇到break结束执行,没有匹配条件,执行default语句. int i = 3 switc ...

  3. Perl 文件处理范例

    觉得这个范例不错就保存了,原文地址在这里:http://www.cnblogs.com/zhangzhi/archive/2010/10/19/1855302.html Perl 文件处理范例 . 任 ...

  4. TextView-- 测量文字宽度

    https://my.oschina.net/lengwei/blog/637380; http://blog.csdn.net/mare_blue/article/details/51388403; ...

  5. Jmeter(十四)Logic Controller 之 If Controller

    If Controller---如果控制器:属于逻辑判断类型的组件,其实学过代码的都知道if--else,while等都是常用的逻辑判断关键词,Jmeter也提供了逻辑判断--If Controlle ...

  6. [UE4]封装蓝图函数Print String

    World Context Object一定要赋值才会在多人游戏中出现Server和Client,如下图所示:

  7. Maven项目下update maven后Eclipse报错

    Maven项目下update maven后Eclipse报错:java.lang.ClassNotFoundException: ContextLoaderL     严重: Error config ...

  8. CountDownLatch的简单讲解

    正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行.在Java并发中,countdownlatch的概念是一 ...

  9. Mybatis 系列5-结合源码解析TypeHandler

    [Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...

  10. gulp_css2js

    var gulp = require('gulp'); var rename = require('gulp-rename'); var concat = require('gulp-concat') ...