文章目录

  • 一、字典特征抽取
  • 二、文本特征数值的统计
    • 英文文本
    • 中文文本
    • Tf-idf

一、字典特征抽取

使用到的API
DictVectorizer(sparse=True)

from sklearn.feature_extraction import DictVectorizer

sparse默认是True,返回一个稀疏矩阵。
该api作用是对数据生成一个one-hot编码.
下面用一个例子来看下api具体的用法。

from sklearn.feature_extraction import DictVectorizer
data = [{"name":"张三","score":80},{"name":"李四","score":85},{"name":"王五","score":90}
]
model =  DictVectorizer()
res = model.fit_transform(data)
#获取数据的特征名称
print(model.get_feature_names())
print(res)

(0, 3) 80.0为例,是指坐标为(0,3)的对应值是80。这种方式读取效率较高。同时我们也可以让数据以one-hot编码的形式展示出来。

这里有两种方式,一种是在DictVectorizer默认sparse=True的情况下,结果用toarray()函数。
另一种是sparse=False,此时结果没有toarray()函数.

data = [{"name":"张三","score":80},{"name":"李四","score":85},{"name":"王五","score":90}
]
model =  DictVectorizer(sparse=False)
res = model.fit_transform(data)
print(model.get_feature_names())
#使用toarray(),sparse=True的情况
#print(res.toarray())
#sparse=False的情况
print(res)

二、文本特征数值的统计

这里我们分为英文文本和中文文本两块进行讨论。

英文文本

使用到的API
CountVectorizer

from sklearn.feature_extraction.text import CountVectorizer

CountVectorizer里面含有的参数较多,感兴趣的可以详细了解一下

CountVectorizer(input='content', encoding='utf-8',  decode_error='strict', strip_accents=None, lowercase=True, preprocessor=None, tokenizer=None, stop_words=None,
token_pattern='(?u)\b\w\w+\b', ngram_range=(1, 1), analyzer='word', max_df=1.0, min_df=1, max_features=None, vocabulary=None, binary=False, dtype=<class 'numpy.int64'>)

这里介绍一下stop_words停词器的作用:
输入一个参数列表,在文本统计时,列表中的文字将不参与统计计算。
下面我们来看下具体的示例

from sklearn.feature_extraction.text import CountVectorizer
data = ["I like Python","Python is best language","I am study Python,i love Python very much"]#没有sparse参数
model = CountVectorizer()
res = model.fit_transform(data)
print(model.get_feature_names())
print(res.toarray())

特征信息展示的是所有的信息,放在一个列表里面。而最后的结果,我们可以看到是一个 3 X 11的二维矩阵。其中每一行中的数值就是统计的每一句话中对应单词的个数。
需要注意的是:1、CountVectorizer没有sparse参数 ;2、单个单词不会进入统计例如:a,b,c,d。

中文文本

之所以要把中文文本单独拿出来讨论,是因为中文的特殊性,在进行特征统计之前,需要先对文本进行分词。这里我们可以用jieba分词器来实现分词。可以通过 pip install jieba进行下载。
我们先演示下分词器的使用:

import jieba
text = "我爱你中国"
#此时输出的是一个地址值
jieba.cut(text)
结果:
<generator object Tokenizer.cut at 0x0000024D3D42F468>

我们可以把结果转为为一个list,此时就可以以列表的形式输出。

list(jieba.cut(text))
#结果:['我爱你', '中国']

实现示例:

导入的库: from sklearn.feature_extraction.text import CountVectorizer

from sklearn.feature_extraction.text import CountVectorizer
data = ["我正在学习机器学习中文本特征提取","我爱中国","你的梦想是什么"
]
words = []
for word in data:words.append(list(jieba.cut(word)))#对值进行转换
model = CountVectorizer()
res = model.fit_transform(words)
res.toarray()

分词后的结果为一个二维数组,如果对这个二维数组使用CountVectorizer会报错:AttributeError: ‘list’ object has no attribute ‘lower’

之所以会报这个错误,是因为CountVectorizer需要的是一个可迭代的string类型的数值。我们在前面对英文文本使用该api的时候,需注意到,因为英文文本单词之间默认是使用空格分开的,而中文中没有这种要求。所以此时我们需要对分词后的中文词语,彼此之间也用空格进行分隔,同时转换为成一维。

首先定义一个分词方法,便于我们后续的使用。

import jieba
def cut_word(text):return " ".join(list(jieba.cut(text)))
from sklearn.feature_extraction.text import CountVectorizer
data = ["我正在学习机器学习中文本特征提取","我爱中国","你的梦想是什么"
]
words = []
for word in data:words.append(cut_word(word))
#值的转换
model = CountVectorizer()
res = model.fit_transform(words)
res.toarray()


Tf-idf

除了上面介绍的文本特征提取还,还有一个Tfidf文本特征提取方法,它是用来评估一个词语对一个文本的重要程度,即一个词语在文章中出现的概率。
使用到的API:
TfidfVectorizer

from sklearn.feature_extraction.text import TfidfVectorizer

我们还是以上面的文本为例:

from sklearn.feature_extraction.text import TfidfVectorizer
def cut_word(text):return " ".join(list(jieba.cut(text)))
data = ["我正在学习机器学习中文本特征提取","我爱中国","你的梦想是什么"
]
words = []
for word in data:#words.append(list(jieba.cut(word)))words.append(cut_word(word))tfidf = TfidfVectorizer()
res = tfidf.fit_transform(words)
print(tfidf.get_feature_names())
print(res.toarray())

Python 文本特征提取相关推荐

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

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

  2. python文本特征提取实例_Python文本特征抽取与向量化算法学习

    本文为大家分享了Python文本特征抽取与向量化的具体代码,供大家参考,具体内容如下 假设我们刚看完诺兰的大片<星际穿越>,设想如何让机器来自动分析各位观众对电影的评价到底是"赞 ...

  3. python 文本向量化_Python文本特征抽取与向量化算法学习

    本文为大家共享了Python文本特征抽取与向量化的详细代码,供大家参考,详细内容如下 假设我们刚看完诺兰的大片<星际穿越>,设想怎么让机器来自动分析各位观众对电影的评价到底是"赞 ...

  4. 字典特征提取,文本特征提取。

    文章目录 1 定义 2. 字典特征提取API 3. 字典特征提取案例: 1.实现效果: 2.实现代码 4. 文本特征提取 1. 方法 2. 英文案例 1. 实现效果 2.流程 3. 中文案例 使用到的 ...

  5. Python文本情感分析实战【源码】

    Python文本情感分析 引言: 情感分析:又称为倾向性分析和意见挖掘,它是对带有情感色彩的主观性文本进行分析.处理.归纳和推理的过程,其中情感分析还可以细分为情感极性(倾向)分析,情感程度分析,主客 ...

  6. python语音特征提取_使用Python从视频中提取语音

    python语音特征提取 In this post, I will show you how to extract speeches from a video recording file. Afte ...

  7. 机器学习 笔记05——特征工程之特征处理:字典特征提取、文本特征提取

    目录 1.类别型特征的处理-特征编码 1.1 处理少量特征 1.2 处理大量的类别特征 1.3 字典特征提取(特征离散化) ⭐ 1.4   文本特征提取(英文+中文)⭐ 1.4.1 英文数据演示 1. ...

  8. 踩实底子|每日学习|02-特征工程和文本特征提取【下】

    前文说到,特征工程是为了预测结果数据的处理步骤,也简单用了一两个实例说明了文本特征的提取,其中字典特征提取和文本特征主要是将特征数据化,也就是one-hot编码.为了不让一篇博文显得长篇大论,后面两个 ...

  9. python中文编辑器推荐-python文本编辑器是什么

    Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. pytho ...

最新文章

  1. graphviz画图
  2. 老李分享:shell 监控cpu,memory,load average 1
  3. python: 判断字符串是否为合法的json格式
  4. Qt使用invokeMethod反射机制实现进程间的通信
  5. php中mysql_connect与mysql_pconnect的区别
  6. 20 Tips to Simplify Your Digital and Online Life
  7. 计算重叠最长子串问题
  8. 【汇编语言】多模块程序结构
  9. PAT1030.——完美数列
  10. Java——异常和断言
  11. 2018/5/7~2018/5/11 周记
  12. python类的构造函数self_初学python class 注意构造函数__init__(self) | 学步园
  13. 前端实现序列帧_canvas实现序列帧动画的案例
  14. 如何将pdf拆分为单页?推荐这些方法
  15. 笔记本电脑计算机里面怎么管理,笔记本电脑如何分区,详细教您笔记本电脑怎么分区...
  16. 手机布局rem的使用(rem)
  17. 《王道操作系统》学习笔记总目录+思维导图
  18. 超酷的框架JS图片处理效果
  19. Ceph学习笔记1-Mimic版本多节点部署
  20. css input 如何去掉点击后出现的边框

热门文章

  1. linux 查看动态日志tail tailf
  2. html-下拉框多选
  3. #微积分#积分上限函数
  4. 什么是调制(modulation) ?
  5. 娶一位俄罗斯姑娘当老婆是一种什么样的感觉?
  6. 电脑开机后显示服务器没有声音,电脑没有声音了是怎么回事 如何处理电脑没有声音的问题...
  7. spring boot 打包后乱码问题
  8. vue ElementUi Tree效果 展开、收起、查询
  9. mac hdmi 不能调整音量_用快捷键调节 Mac 外接显示器亮度:MonitorControl
  10. python免注册大漠插件