前文说到,特征工程是为了预测结果数据的处理步骤,也简单用了一两个实例说明了文本特征的提取,其中字典特征提取和文本特征主要是将特征数据化,也就是one-hot编码。为了不让一篇博文显得长篇大论,后面两个部分的视频,就另开了一篇来记录,前面三篇主要讲的是,这一片主要讲的是文本特征抽取以及中文问题。

目录

1.文本特征抽取以及中文问题

1.文本特征抽取

2.tf-df分析问题


1.文本特征抽取以及中文问题

1.文本特征抽取

对于文本数据的特征抽取是怎样一个步骤呢?和字典类似,接下来看看其作用及语法:

文本特征抽取的作用,就是对文本数据进行特征值化,值化就是把文本转为数字,常用的包有feature_extraction里面的text下的countVectorizer。对应的语法流程参看上图。

接下来来跟一个实例练习:

使用的样例语句是:

["Life is short,I like python", "life is too long,i dislike python"]

老师的运行结果,

进行分析一下,第一个工作是:统计了所有文章当中所有的词,重复的只出现一次,词表;第二个工作是,对每篇文章进行在词列表中进行统计每个词出现的次数。

注意:单个字母(例如:I)没有统计

修改第一篇,佐证确实是统计单词“is”的次数。

对于文本特征抽取的用途,还是比较多的,比如上面这个实例,Count(计数)可应用于文本分类。

举个中文的案例,修改处理的语句为中文:

发现分割词语并没有英文支持的那么好,其实分词使用的就是空格来做的分词。那么中文如果想要做较好的词表,可以使用结巴工具,之前了解过的,这里直接应用。

这部分其实就是一个衍生代码的扩展,继续贴我的练习及结果:

from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer
import jiebadef dictvec():'''字典数据抽取:return: None'''# 实例化dict = DictVectorizer(sparse=False)# 调用fit_transformdata = dict.fit_transform([{'city': '北京', 'temperature': 100}, {'city': '天津', 'temperature': 65}, {'city': '上海', 'temperature': 60},{'city': '深圳', 'temperature': 30}, {'city': '杭州', 'temperature': 40}])print(dict.get_feature_names())print(dict.inverse_transform(data))print(data)return Nonedef countvec():"""对文本进行特征值化:return: None"""c1, c2, c3 = cutword()print("c1, c2, c3:",c1, c2, c3)cv = CountVectorizer()# data = cv.fit_transform(["Life is short is is ,I like python", "life is too long,i dislike python"])data = cv.fit_transform([c1, c2, c3])print(cv.get_feature_names())print(data.toarray())return Nonedef cutword():con1 = jieba.cut("6、生活的残酷会让人不知所措,于是有人终日沉浸在彷徨迷茫之中,不愿睁大双眼去看清形势,不愿去想是哪些细小的因素累积在一起造成了这种局面。 ")con2 = jieba.cut("7、请不要闭眼,机会就在下一秒出现。残酷的现实面前你应勇往直前。")con3 = jieba.cut("8、因为我的父母迫使我向深处里观察,我有幸看到所有的微小事务是如何最终聚集在一起最终形成产物的,所以我从来不问为什么这样,为什么那样,我知道为什么,这样并不能让我高兴,很多时候倒让我觉得很难过,但是我总是勇于接受,我总是勇于接受事实,我知道我总想离开我的环境。")# 转换成列表sonten1 = list(con1)sonten2 = list(con2)sonten3 = list(con3)# 把列表转换成字符串 记住是空格连接 分词依据c1 = ' '.join(sonten1)c2 = ' '.join(sonten2)c3 = ' '.join(sonten3)return c1, c2, c3def hanzivec():"""中文特征值化:return: None"""return Noneif __name__ == "__main__":countvec()

运行结果为:使用空格去间隔中文,使其变成英文单词句段的形式,再导入特征化,使用词表+出现频次统计这种方式展示,就是一种特征值化的操作。

至于另一种方法,留待明天来学习,因为晚上要去上课了~


2.tf-df分析问题

11/17 补

无闹钟的7::59醒来,却又闭上眼睛不愿起从而晚来两个小时,而周三四五的早上六点半七点起来却总能很好的做到,还是没有一个明确的目标啊。目的地驱动我们前进,那么,没有规律的作息,应该用什么来修复呢?大概是一直向前的惯性吧!话不多说,开始今天的学习,昨天学习了分词及文本特征值化,其实毕业论文里的手动标注,就是做的这个工作,只是根据领域知识先处理生成了一张关联词表,然后根据命中率选取部分的特征。后面就是一些统计分析的工作了。

那么今天的练习又是在讲什么内容呢?第二种提取,先来看一下案例导入:

通过左侧图来分辨两篇词语占比的分析来确定文章类型;

对于一些中性词:比如“所以,我们,明天”这些,就没有办法去判别出文章类型,那么如何解决呢?

引入咱们的tf idf,一般用朴素贝叶斯来解决:

TF所代表的就是词频,就是代表出现的次数,IDF则是逆文档频率(inverse document frequency),那么分析一下这个公式,log后跟的输入的数值越小,结果越小

th*idf 所代表的就是我们词的重要性程度,每篇文章又有不同的词,所对应的不同的重要性,就有一个重要性排序。

第二种特征抽取的方式就是TF-IDF:

对于我们来说,和上一种抽取方式类似,作用适用于评估一个字词对于文件集或语料库其中一份文件的重要程度,而使用的则是sklearn特征抽取中text工具里的TfidfVectorizer。

它的语法和上一种类似,实例来说明,

增加一个方法处理

def tfidvec():"""中文特征值化:return: None"""c1,c2,c3 = cutword()print(c1,c2,c3)tf = TfidfVectorizer()data = tf.fit_transform([c1,c2,c3])print(tf.get_feature_names())print(data.toarray())return None

老师的结果如下,我的结果在右图,和老师有区别的地方在于,我选择了一个《风雨哈佛路》影片的台词,老师选的是马云演讲的节选。

为什么会需要TF-IDF呢?是因为机器学习中有分类需要,而在日常学习中,一般第二种方法也用的多一些,因为值化的效果较好。

以上就是特征工程与文本特征提取的学习。

刻意练习,每日精进~冲啊

踩实底子|每日学习|02-特征工程和文本特征提取【下】相关推荐

  1. 推荐系统学习笔记——特征工程

    特征工程 一. 概述 二. 特征工程构建原则 三. 常用的特征有哪些 四. 常用的特征的处理方法 五. 特征选择 六. 总结 推荐系统学习笔记系列链接: 推荐系统学习笔记--特征工程 推荐系统学习笔记 ...

  2. 特征工程(二) :文本数据的展开、过滤和分块

    如果让你来设计一个算法来分析以下段落,你会怎么做? Emma knocked on the door. No answer. She knocked again and waited. There w ...

  3. 特征工程之非线性特征提取和模型堆叠

    当在数据一个线性子空间像扁平饼时 PCA 是非常有用的.但是如果数据形成更复杂的形状呢?一个平面(线性子空间)可以推广到一个 流形 (非线性子空间),它可以被认为是一个被各种拉伸和滚动的表面. 如果线 ...

  4. 中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

    向AI转型的程序员都关注了这个号

  5. 数据透视表——pivot_table学习(特征工程)

    1:构建数据 """ pivot_table() 的特点就是默认显示指定索引列和所有数值列. 索引显示的是唯一值,所以会把对应的数值处理成均值. 其他str类型的列都会自 ...

  6. 【Datawhale|天池】心跳信号分类预测 (3) - 特征工程 ☞ tsfresh 时序特征提取

    目录 导入包 读取数据 数据预处理 使用 tsfresh 提取特征 References 导入包 import pandas as pd import numpy as np import tsfre ...

  7. 特征工程(六): 非线性特征提取和模型堆叠

    向AI转型的程序员都关注了这个号

  8. 【特征工程】与【表示学习】

    目录 1. 表示学习 2. 特征工程与表示学习:人工 vs. 自动 3. 模型选择 4. 总结 1. 表示学习 又叫特征学习 当我们学习一个复杂概念时,总想有一条捷径可以化繁为简.机器学习模型也不例外 ...

  9. 面向机器学习的特征工程 八、自动化特征提取器:图像特征提取和深度学习

    来源:ApacheCN<面向机器学习的特征工程>翻译项目 译者:friedhelm739 校对:(虚位以待) 视觉和声音是人类固有的感觉输入.我们的大脑是可以迅速进化我们的能力来处理视觉和 ...

最新文章

  1. Ubuntu18.04安装g2o,及问题解决_HyperZhu的博客-CSDN博客_ubuntu18.04安装g2o
  2. spark数据查询语句select_sparksql语句
  3. asp.net下载的三种方式
  4. 在64位Ubuntu上编译32位程序常见错误
  5. js根据数组中对象的多个属性值进行排序
  6. 阿里云、腾讯云、华为云哪个好?迄今最全面的云服务评测报告出炉(转)
  7. 15.深入分布式缓存:从原理到实践 --- 同程凤凰缓存系统基于Redis的设计与实践
  8. 思源黑体官方下载地址
  9. 帝友系统:中国P2P网络借贷可否复制Lending Club模式?
  10. 不下心删了线上环境mysql数据库数据,辛亏有惊无险
  11. HTML放大镜 (商品放大镜)
  12. Ubuntu系统如何搜索要安装的软件包
  13. 计算广告-商业化体系
  14. 服装进销存2022年排行榜,新手小白必看!
  15. led台灯哪个牌子效果最好?2022最新国产led灯品牌排行
  16. 纯css打造超能陆战队--大白
  17. 中国象棋对弈系统java的程序包谁有?
  18. [bzoj-4808]马 题解
  19. Python地理数据处理 十七:植被物候提取和分析(Savitzky-Golay)
  20. Pandas中常见的数据运算 | 图解Pandas-图文第5篇

热门文章

  1. 高性能服务器编程-信号
  2. mysql 网络,MySQL :: MySQL 网络研讨会
  3. 计算机网络笔记---互联网的组成及三种交换方式
  4. 购买服务器虚拟主机,购买服务器与虚拟主机
  5. 通过U盘的HDD启动安装原版Win7系统教程-Win7安装版
  6. 天基实业做好投资理财规划
  7. java程序员标准指法_作为一个程序员,标准指法盲打都不会的该反省一下自己了...
  8. 正确思维,和非理性自我斗争
  9. ESXI 虚拟交换机配置 Trunk 端口组
  10. LaTeX定制个人简历