Python 文本特征提取
文章目录
- 一、字典特征抽取
- 二、文本特征数值的统计
- 英文文本
- 中文文本
- 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 文本特征提取相关推荐
- Python文本特征提取 DictVectorizer CountVectorizer TfidfVectorizer 附代码详解
文章目录 DictVectorizer 对使用字典储存的数据进行特征提取与向量化 CountVectorizer / TfidfVectorizer 处理无特殊数据结构存储的数据 词袋模型(Bag o ...
- python文本特征提取实例_Python文本特征抽取与向量化算法学习
本文为大家分享了Python文本特征抽取与向量化的具体代码,供大家参考,具体内容如下 假设我们刚看完诺兰的大片<星际穿越>,设想如何让机器来自动分析各位观众对电影的评价到底是"赞 ...
- python 文本向量化_Python文本特征抽取与向量化算法学习
本文为大家共享了Python文本特征抽取与向量化的详细代码,供大家参考,详细内容如下 假设我们刚看完诺兰的大片<星际穿越>,设想怎么让机器来自动分析各位观众对电影的评价到底是"赞 ...
- 字典特征提取,文本特征提取。
文章目录 1 定义 2. 字典特征提取API 3. 字典特征提取案例: 1.实现效果: 2.实现代码 4. 文本特征提取 1. 方法 2. 英文案例 1. 实现效果 2.流程 3. 中文案例 使用到的 ...
- Python文本情感分析实战【源码】
Python文本情感分析 引言: 情感分析:又称为倾向性分析和意见挖掘,它是对带有情感色彩的主观性文本进行分析.处理.归纳和推理的过程,其中情感分析还可以细分为情感极性(倾向)分析,情感程度分析,主客 ...
- python语音特征提取_使用Python从视频中提取语音
python语音特征提取 In this post, I will show you how to extract speeches from a video recording file. Afte ...
- 机器学习 笔记05——特征工程之特征处理:字典特征提取、文本特征提取
目录 1.类别型特征的处理-特征编码 1.1 处理少量特征 1.2 处理大量的类别特征 1.3 字典特征提取(特征离散化) ⭐ 1.4 文本特征提取(英文+中文)⭐ 1.4.1 英文数据演示 1. ...
- 踩实底子|每日学习|02-特征工程和文本特征提取【下】
前文说到,特征工程是为了预测结果数据的处理步骤,也简单用了一两个实例说明了文本特征的提取,其中字典特征提取和文本特征主要是将特征数据化,也就是one-hot编码.为了不让一篇博文显得长篇大论,后面两个 ...
- python中文编辑器推荐-python文本编辑器是什么
Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. pytho ...
最新文章
- graphviz画图
- 老李分享:shell 监控cpu,memory,load average 1
- python: 判断字符串是否为合法的json格式
- Qt使用invokeMethod反射机制实现进程间的通信
- php中mysql_connect与mysql_pconnect的区别
- 20 Tips to Simplify Your Digital and Online Life
- 计算重叠最长子串问题
- 【汇编语言】多模块程序结构
- PAT1030.——完美数列
- Java——异常和断言
- 2018/5/7~2018/5/11 周记
- python类的构造函数self_初学python class 注意构造函数__init__(self) | 学步园
- 前端实现序列帧_canvas实现序列帧动画的案例
- 如何将pdf拆分为单页?推荐这些方法
- 笔记本电脑计算机里面怎么管理,笔记本电脑如何分区,详细教您笔记本电脑怎么分区...
- 手机布局rem的使用(rem)
- 《王道操作系统》学习笔记总目录+思维导图
- 超酷的框架JS图片处理效果
- Ceph学习笔记1-Mimic版本多节点部署
- css input 如何去掉点击后出现的边框