数据的存在形式是多样的,除了我们平时常见的数值型数据之外,还有文本类型的数据,本篇讨论的是文本类型数据的处理方法,即对文本类型数据特征值化。

本文仍是借助机器学习语言工具中的sklearn模块来完成。

假设现有一段语言(文章):You will never know unless you try。我们要完成对这段文字进行特征抽取,我们先来看特征抽取的单词列表

# -*- coding:utf-8 -*-# @Author: 数据与编程之美
# @File: text_deal.py
# @Time: 2020/12/29 22:34from sklearn.feature_extraction.text import CountVectorizerdef text_deal():"""文本特征抽取:return: """count_v = CountVectorizer()count_v.fit_transform(["You will never know unless you try"])# 输出词条列表print(count_v.get_feature_names())if __name__ == '__main__':text_deal()

词条列表结果如下

用图简单法分析一下就是

get_feature_names()该方法返回的是文章中去重后的所有单词(单个的如:i 之类词的单个字母不会统计在内,因为没意义)

接下来再来看看这段文字统计词条列表对应的特征值化数据

# -*- coding:utf-8 -*-# @Author: 数据与编程之美
# @File: text_deal.py
# @Time: 2020/12/29 22:34from sklearn.feature_extraction.text import CountVectorizerdef text_deal():"""文本特征抽取:return:"""count_v = CountVectorizer()data = count_v.fit_transform(["You will never know unless you try"])# 输出词条列表print(count_v.get_feature_names())# 输出词条列表对应的值化数据print(data)if __name__ == '__main__':text_deal()

结果如下:

结果解释:

上述的坐标值数据结构其实是一个稀疏矩阵(Sparse matrix),意思是元素大部分为零的矩阵,上述结果为零的值很少是因为其适用于文章单词数远大于本案例所用的那一句话的单词个数,一般正常情况下稀疏矩阵是很明显的。

稀疏矩阵还有一个明显的特征就是只存储非零数据,这样做的目的是使运算速度更快和压缩存储达到节省空间,如

第0行,第5列存储的值是2

第0行,第4列存储的值是1

第0行,第1列存储的值是1

第0行,第0列存储的值是1

第0行,第3列存储的值是1

第0行,第2列存储的值是1


实际情况下会有多行的内容,后面会看到。为了更直观的观察文本特征值化后的结果数据,一般不会输出坐标形式的稀疏矩阵,而是将稀疏矩阵转化为数组的形式输出

转化方法便是 data.toarray()

这样可以很直观看到每个词条对应的统计次数

know  never  try  unless  will  you 
1次 1次 1次 1次 1次 2次

下面以长文章示例

# -*- coding:utf-8 -*-# @Author: 数据与编程之美
# @File: text_deal.py
# @Time: 2020/12/29 22:34from sklearn.feature_extraction.text import CountVectorizerdef text_deal():"""文本特征抽取:return:"""count_v = CountVectorizer()data = count_v.fit_transform(["There are moments in life when you miss someone so much that you just want to pick them from your dreams","Dream what you want to dream;go where you want to go","be what you want to be","because you have only one life and one chance to do all the things you want to do"])# 输出词条列表print(count_v.get_feature_names())# 输出词条列表对应的值化数据print(data.toarray())if __name__ == '__main__':text_deal()

词条结果列表:

[‘all’, ‘and’, ‘are’, ‘be’, ‘because’, ‘chance’, ‘do’, ‘dream’, ‘dreams’, ‘from’, ‘go’, ‘have’, ‘in’, ‘just’, ‘life’, ‘miss’, ‘moments’, ‘much’, ‘one’, ‘only’, ‘pick’, ‘so’, ‘someone’, ‘that’, ‘the’, ‘them’, ‘there’, ‘things’, ‘to’, ‘want’, ‘what’, ‘when’, ‘where’, ‘you’, ‘your’]

显示0的‘稀疏矩阵’

[[0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 1 0 1 1 0 1 1 0 1 0 2 1][0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 1 0 1 2 0][0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0][1 1 0 0 1 1 2 0 0 0 0 1 0 0 1 0 0 0 2 1 0 0 0 0 1 0 0 1 2 1 0 0 0 2 0]]

结果说明:

词条列表中的

’all‘在红框内容出现了0次,所有第0行第0列为0;

’and‘在红框内容出现了0次,所有第0行第1列为0;

’are‘在红框年内容出现了1次,所有第0行第2列为1…以此类推。


汉字类型的文本型数据

对于中文默认是不支持特征抽取的,如果要对汉字进行特征值化需要做分词处理,如(用空格分开)

# -*- coding:utf-8 -*-# @Author: 数据与编程之美
# @File: text_deal.py
# @Time: 2020/12/29 22:34from sklearn.feature_extraction.text import CountVectorizerdef text_deal():"""文本特征抽取:return:"""count_v = CountVectorizer()data = count_v.fit_transform(["You will never know unless you try","除非 你 努力","否则 你 永远 不会 知道"])# 输出词条列表print(count_v.get_feature_names())# 输出词条列表对应的值化数据print(data.toarray())if __name__ == '__main__':text_deal()

特征抽取结果(形式和英文文章一样):

对于含有大量中文的文本进行特征抽取时,认为分词就很耗时耗力,这里给大家介绍一个分词工具:jieba(结巴,我猜的)


安装jieba:

pip3 install jieba

使用案例官方教程: https://github.com/fxsjy/jieba


以上就是文本型数据的特征抽取方法之一,希望本文对你有所收获。

【福利资源】 pycharm最新许可 持续更新

数据特征处理之文本型数据特征值化(一)相关推荐

  1. 数据特征处理之数值型数据(标准化)

    本篇内容讨论的是数据特征处理中数据标准化方案,相比于在[数据特征处理之数值型数据(归一化)]中介绍的归一化方案由于自身的不足而导致的应用场景受限(数据量较小的工程.不稳定),数据标准化方案几乎克服了特 ...

  2. Excel VBA 小程序 - 文本型数字转为数值型数字

    实现功能:选中当前工作表中的所有数据内容,将文本型数字转换为数值型数字. 缺点:日期格式的字符串会变成数值 Sub 转数值型数字() With ActiveSheet.UsedRange.Number ...

  3. 《大数据》2015年第3期“网络大数据专题”——基于特征学习的文本大数据内容理解及其发展趋势...

    基于特征学习的文本大数据内容理解及其发展趋势 袁书寒,向 阳,鄂世嘉 (同济大学计算机科学与技术系 上海 201804) 摘要:大数据中蕴含着重要的价值信息,文本大数据作为大数据的重要组成部分,是人类 ...

  4. 基于深度学习的文本数据特征提取方法之Word2Vec

    点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 作者:Dipanjan (DJ) Sarkar 编译:ronghuaiyang ...

  5. 【问题解决】【excel】求平均值、求和 结果为0 ->将excel中文本型数据转化为数值型数据

    问题:求平均值.求和 结果为0 原因:表格中数据是文本型数据,而不是数值型数据,文本型数据平均值求和都为0 解决办法:将excel中文本型数据转化为数值型数据 选中文本型数值区域,发现在选中区域的左上 ...

  6. 2.文本预处理(分词,命名实体识别和词性标注,one-hot,word2vec,word embedding,文本数据分析,文本特征处理,文本数据增强)

    文章目录 1.1 认识文本预处理 文本预处理及其作用 文本预处理中包含的主要环节 文本处理的基本方法 文本张量表示方法 文本语料的数据分析 文本特征处理 数据增强方法 重要说明 1.2 文本处理的基本 ...

  7. NLP-文本处理:基本技术【命名实体识别、分词、拼写纠错、停用词、词性标注】、文本序列化、文本向量化、文本语料的数据分析、文本特征处理(Ngram特征添加、文本长度规范)、数据增强

    分词(tokenization):英文通过空格或者标点符号,就可以将词分开:而中文的分词会涉及很多问题(未登录词问题.分词歧义问题.分词不一致问题),所以会有各种不同分词的算法. 清洗:我们需要对文本 ...

  8. 高维数据特征降维技术学习

    原文地址:高维数据特征降维技术学习 作者:新技术笔记 特征降维(feature dimension reduction)是一个从初始高维特征集合中选出低维特征集合,以便根据一定的评估准则最优化缩小特征 ...

  9. 文本型数据的向量化:TF-IDF

    1.对于文本型数据的分类处理(或者其他的处理),根据ik和jcseg等分词器先对它们进行分词处理之后,大家都知道,计算机是处理不了汉字的,对于文本型的词我们如何才能让计算机处理呢?我们可以通过TF-I ...

最新文章

  1. Python3学习笔记(一):基础语法
  2. 物体抓取位姿估計算法綜述_基于深度学习的物体抓取位置估计
  3. 中国学者变革300多年来的活塞!MIT、哈佛联手,动力3倍以上,可节能40%
  4. 构建之法阅读笔记01
  5. 推荐一个XNA的学习站点
  6. python入门编程软件免费-Python 3.7.0编程软件免费下载
  7. CTFshow 命令执行 web42
  8. ACE中静态实例管理方式
  9. 如何进行MaxCompute 用户认证?
  10. TrueNAS SCALE是什么
  11. 【干货】Python玩转各种多媒体,视频、音频到图片
  12. 桌面虚拟化之用户体验篇
  13. Hive date_format函数入门
  14. Linux内核源代码阅读
  15. 【计算机网络】数据链路层 : ALOHA 协议 ( 纯 ALOHA 协议 | 时隙 ALOHA 协议 )
  16. 什么是TPM设备管理系统?本文来告诉你
  17. 加拿大计算机竞赛答案,加拿大数学和计算机竞赛.doc
  18. 跟我一起云计算(6)——openAPI
  19. 树莓派使用摄像头——fswebcam
  20. Matlab数组中符号“~”的使用

热门文章

  1. 32. 尚融宝散标投资列表
  2. Ubuntu18.04+Anaconda+tensorflow-gpu(极其简单,纯干货,网上教程太坑!!!)
  3. CorelDraw X4 unable to load resource dll
  4. 【笔记】常用影视剪辑手法
  5. mysql去重查询只留一条最新的
  6. 2022长城杯Reverse-baby_reWP
  7. 《数据万象带你玩转视图场景》第三期:图片极智压缩
  8. 【2023最新】腾讯云注册域名及服务器使用宝塔绑定域名教程
  9. MoMoPlayer,纯java音乐播放器
  10. java pdf添加便利贴_电脑win10的便利贴在哪里|win10如何添加便利贴