One-hot

这里的One-hot与数据挖掘任务中的操作是一致的,即将每一个单词使用一个离散的向量表示。具体将每个字/词编码一个索引,然后根据索引进行赋值。

One-hot表示方法的例子如下:

句子1:我 爱 北 京 天 安 门
句子2:我 喜 欢 上 海

首先对所有句子的字进行索引,即将每个字确定一个编号:

{'我': 1, '爱': 2, '北': 3, '京': 4, '天': 5,'安': 6, '门': 7, '喜': 8, '欢': 9, '上': 10, '海': 11
}

在这里共包括11个字,因此每个字可以转换为一个11维度稀疏向量:

我:[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
爱:[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
...
海:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]

Bag of Words

Bag of Words(词袋表示),也称为Count Vectors,每个文档的字/词可以使用其出现次数来进行表示。

句子1:我 爱 北 京 天 安 门
句子2:我 喜 欢 上 海

直接统计每个字出现的次数,并进行赋值:

句子1:我 爱 北 京 天 安 门
转换为 [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0]句子2:我 喜 欢 上 海
转换为 [1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1]

在sklearn中可以直接CountVectorizer来实现这一步骤:

from sklearn.feature_extraction.text import CountVectorizercorpus = ['I had had a dream','I will go to University of Southampton']  # 语料Count_Vectorizer = CountVectorizer(stop_words=None)
print(Count_Vectorizer.fit_transform(corpus).toarray())  # corpus对应的稀疏矩阵,行数为文本数,列数为特征词个数
print(Count_Vectorizer.fit_transform(corpus))  # 特征词坐标分布
print("\nvocabulary list:\n", Count_Vectorizer.vocabulary_)  # 特征词及其索引

输出:

[[0 1 2 0 0 0][1 1 0 1 1 1]]  # 语料Count Vector表示(0, 2)   2    # 特征词频率在语料中的坐标表示(0, 1) 1(1, 1) 1(1, 3) 1(1, 5) 1(1, 0) 1(1, 4) 1vocabulary list:  # 特征词及其索引{'had': 2, 'dream': 1, 'my': 3, 'will': 5, 'come': 0, 'true': 4}

N-gram

N-gram与Count Vectors类似,不过加入了相邻单词组合成为新的单词,并进行计数。

如果N取值为2,则句子1和句子2就变为:

句子1:我爱 爱北 北京 京天 天安 安门
句子2:我喜 喜欢 欢上 上海

CountVectorizer参数

参数 作用
input 一般使用默认即可,可以设置为"filename’或’file’
encoding 使用默认的utf-8即可,分析器将会以utf-8解码raw document
decode_error 默认为strict,遇到不能解码的字符将报UnicodeDecodeError错误,设为ignore将会忽略解码错误,还可以设为replace,作用尚不明确
strip_accents 默认为None,可设为ascii或unicode,将使用ascii或unicode编码在预处理步骤去除raw document中的重音符号
analyzer 一般使用默认,可设置为string类型,如’word’, ‘char’, ‘char_wb’,还可设置为callable类型,比如函数是一个callable类型
preprocessor 设为None或callable类型
tokenizer 设为None或callable类型
ngram_range 词组切分的长度范围,待详解
stop_words 设置停用词,设为english将使用内置的英语停用词,设为一个list可自定义停用词,设为None不使用停用词,设为None且max_df∈[0.7, 1.0)将自动根据当前的语料库建立停用词表
lowercase 将所有字符变成小写
token_pattern 过滤规则,表示token的正则表达式,需要设置analyzer == ‘word’,默认的正则表达式选择2个及以上的字母或数字作为token,标点符号默认当作token分隔符,而不会被当作token
max_df 可以设置为范围在[0.0 1.0]的float,也可以设置为没有范围限制的int,默认为1.0。这个参数的作用是作为一个阈值,当构造语料库的关键词集的时候,如果某个词的document frequence大于max_df,这个词不会被当作关键词。如果这个参数是float,则表示词出现的次数与语料库文档数的百分比,如果是int,则表示词出现的次数。如果参数中已经给定了vocabulary,则这个参数无效
min_df 类似于max_df,不同之处在于如果某个词的document frequence小于min_df,则这个词不会被当作关键词
max_features 默认为None,可设为int,对所有关键词的term frequency进行降序排序,只取前max_features个作为关键词集
vocabulary 默认为None,自动从输入文档中构建关键词集,也可以是一个字典或可迭代对象?
binary 默认为False,一个关键词在一篇文档中可能出现n次,如果binary=True,非零的n将全部置为1,这对需要布尔值输入的离散概率模型的有用的
dtype 使用CountVectorizer类的fit_transform()或transform()将得到一个文档词频矩阵,dtype可以设置这个矩阵的数值类型

CountVectorizer属性

属性 作用
vocabulary_ 词汇表;字典型
get_feature_names() 所有文本的词汇;列表型
stop_words_ 返回停用词表

注:

stop_words_:

集合类型,官网的解释十分到位,如下:
Terms that were ignored because they either:
occurred in too many documents (max_df)
occurred in too few documents (min_df)
were cut off by feature selection (max_features).
This is only available if no vocabulary was given.
这个属性一般用来程序员自我检查停用词是否正确,在pickling的时候可以设置stop_words_为None是安全的。

CountVectorizer方法

方法 作用
fit_transform(X) 拟合模型,并返回文本矩阵
fit(raw_documents[, y]) 学习原始文档中所有标记的词汇字典。
fit_transform(raw_documents[, y]) 学习词汇表字典并返回term-document矩阵。

总结

  1. 数据输入形式为list,list元素为代表文章的字符串,一个字符串代表一篇文章,字符串是已经分割好的。CountVectorizer同样适用于中文;
  2. CountVectorizer是通过fit_transform函数将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在第i个文本下的词频。即各个词语出现的次数,通过get_feature_names()可看到所有文本的关键字,通过toarray()可看到词频矩阵的结果。

详解sklearn——CountVectorizer相关推荐

  1. 详解| Sklearn—GridSearch 调参函数

    Abstract:GridSearch是Sklearn里的一个调参函数.本文是对此函数的详细解释. 1.参数搜索 参数并非从estimators中直接学到的,可以通过设置一个参数搜索空间来找到最佳的c ...

  2. 详解sklearn中的make_moons函数

    make_moons是函数用来生成数据集,在sklearn.datasets里,具体用法如下: Parameters: n_samples : int, optional (default=100)T ...

  3. 详解sklearn中的merics

    sklearn.metrics 不仅包括了评估功能,还有性能度量,距离度量等 . 分类矩阵  metrics.accuracy_score(y_true, y_pred[, -]) 精确度 metri ...

  4. Sklearn参数详解--决策树

    总第106篇 前言 先来简短的回顾一下决策树原理: 决策树学习的算法通常是一个递归地(根据某一准则,信息增益或基尼系数)选择最优切分点/特征,并根据该特征对训练数据集进行分割,使得对各个子数据集有一个 ...

  5. 支持向量机之SVR 用法与参数详解 python

    1. 概念: 针对二分类问题,寻求最优超平面 SVM: 使到超平面最近的样本点的"距离"最大 SVR: 使到超平面最远的样本点的"距离"最小. SVR回归的优势 ...

  6. Python文本特征提取 DictVectorizer CountVectorizer TfidfVectorizer 附代码详解

    文章目录 DictVectorizer 对使用字典储存的数据进行特征提取与向量化 CountVectorizer / TfidfVectorizer 处理无特殊数据结构存储的数据 词袋模型(Bag o ...

  7. 编码字典类特征、使用sklearn的DictVectorizer方法将字典组成的列表转换成向量、详解及实战

    编码字典类特征.使用sklearn的DictVectorizer方法将字典组成的列表转换成向量.详解及实战 sklearn.feature_extraction.DictVectorizer() 把字 ...

  8. sklearn 随机分割数据_sklearn.ensemble.RandomForestClassifier 随机深林参数详解

    随机森林是一种元估计量,它适合数据集各个子样本上的许多决策树分类器,并使用平均数来提高预测准确性和控制过度拟合.子样本大小由max_samples参数bootstrap=True (default)控 ...

  9. Lesson 8.3Lesson 8.4 ID3、C4.5决策树的建模流程CART回归树的建模流程与sklearn参数详解

    Lesson 8.3 ID3.C4.5决策树的建模流程 ID3和C4.5作为的经典决策树算法,尽管无法通过sklearn来进行建模,但其基本原理仍然值得讨论与学习.接下来我们详细介绍关于ID3和C4. ...

最新文章

  1. 开发转测试没人要_入行或转行软件测试(测试开发)要怎么学
  2. 推荐一个.NET下转Json的利器,FastJson
  3. Kubernetes 容器网络模型和典型实现
  4. 狼人杀服务器维护时间,狼人杀官 方将于11月30日进行停机维护
  5. 自定义Log4j 2.0
  6. 爬虫-06-通用爬虫与聚焦爬虫
  7. Selenium UI自动化测试(二)IDE—使用
  8. vertical-align属性
  9. 反转链表与链表实现两数相加(简单思路)
  10. 在Mac下使用PanDownload完美下载BD云盘资源
  11. Ionic4.x ion-refresher 下拉更新
  12. 个别网站无法访问,能ping通
  13. 我们都是被上帝咬过的苹果
  14. vmware 提示该虚拟机正在使用中
  15. 大专生三面蚂蚁金服,工信部java工程师证书
  16. php 表格模板,怎么制作excel表格模板
  17. 「镁客·请讲」太平洋未来科技李建亿:深耕AR技术,布局垂直领域
  18. 加密硬件货币钱包-市场现状及未来发展趋势
  19. 如何提升运行效率(性能优化)
  20. mysql front的命令_mysql-front远程连接自己linux服务器上的mysql服务器

热门文章

  1. Word中如何快速删除页眉下的横线?教你一招,轻松解决!
  2. oracle 之 Undo Retention
  3. 一键导出ChatGPT聊天记录:让备份更简单
  4. jquery的eval的使用
  5. nginx做小程序外链跳转_微信小程序跳转到其他网页(外部链接)的实现方法
  6. 头条号如何做原创,老家底都翻出来了,又要被人骂了
  7. 不同网络下 一台电脑连接另一台电脑的mysql数据库
  8. 【软件测试】公司招个测试员,我又面试了100多人,结局......
  9. 正则-完美的身份证以及真实姓名
  10. ant design vue日期组件怎么清空(a-range-picker,a-date-picker)