文本分类特征工程概述

文本分类特征工程概述,第1张

首先,如何构建一个完整的机器学习项目呢?

主要有以下几个步骤:

个人认为这里最重要的是第5步,特征工程。

何为特征工程呢?顾名思义,就是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。

本质上讲,特征工程是一个表示和展现数据的过程;实际工作中,特征工程的目的是去除原始数据中的杂质和冗余,设计更高效的特征以刻画求解的问题与预测模型之间的关系。

好的特征工程可以 ①降低模型复杂度,减小过拟合;②提升模型泛化性能;③加快模型训练和预测速度。

为什么必须要进行特征工程呢?在实际任务中,我们接收到的数据往往是高维,非线性,高噪声的,比如一张256256像素3(RGB通道数)的,如果我们不特征提取,那么就需要把这196608个特征都使用上,对于分类器来讲,这是必然会造成过拟合的。事实上对于一张来说,它关键的信息也就那么几个部位,同时你完全可以采用一种压缩的方法把它们用更小的图像展示出来,输入到训练网络中。本质上来讲,图像压缩也就是一种特征工程。

对于文本这样的非结构化数据来讲呢(、音频、文本、视频都是非结构化数据)?

文本分类的核心都是如何从文本中抽取出能够体现文本特点的关键特征,抓取特征到类别之间的映射。所以特征工程很重要,可以由四部分组成:

文本表示是自然语言处理中的基础工作,文本表示的好坏直接影响到整个自然语言处理系统的性能。文本向量化是文本表示的一种重要方式。文本向量化就是讲文本表示成一系列能够表达文本语义的向量。

词袋模型是最早的以词语为基本处理单元的文本向量化方法。

词袋法(Bag Of Words,BOW) 基于这样一个朴素的思想:对训练集词库中的每一个词构建唯一的 独热向量(One-hot) 表示,每个单词用 00000010000000 表示,向量的长度为词库的长度,对于每个词表示出的one-hot向量,只有一个特定位置是1,其余都是0。

对于一篇文本而言,同样用一个1dim(dim表示词数量)向量来表示,其中每个元素表示词典中相关元素在文档中出现的次数。(也有的词袋模型中只要出现该词就置1,否则置0,除了0和1没有其他数字)

例如有如下两个文档:

①引入词频: 顾名思义,这是文本的词袋表示向量不再是普通的 00102100了,相应位置上的词权重不再是该文本中某个词的数量,而是该词语在整个 语料库 上的词频。改进后的文本词袋表示如 0 0 67 0 187 43 0 0

②引入tf-idf: 这是较常见的做法: Tf-Idf ,即 词频-逆文档频率。

TF-IDF有两层意思,一层是"词频"(Term Frequency,缩写为TF),另一层是"逆文档频率"(Inverse Document Frequency,缩写为IDF)。 是一种用于信息检索(information retrieval)与文本挖掘(text mining)的常用加权技术。

TF-IDF基于这样一个朴素的思想: 某个词的重要性与它在文件中出现的次数呈正比,与它在语料库中出现的次数呈反比。

IDF的常用计算公式如下图

这里D为语料库中总文档数,D(i)为语料库中出现词i的文档数量,注意这里 分母+1 ,这是采用了 拉普拉斯平滑 ,避免有部分新的词没有在语料库中出现过从而导致分母为0的情况出现。 此外,注意这里用到了log函数 ,即对idf的值取了对数。

至于为什么tf和idf是相乘而不是相加,idf为什么要取对数,拉普拉斯平滑方法的选择,这些都是经过大量理论推导和实验研究的,具体细节此处不表。

最后,需要注意的是,同一个词,在同一语料库下的不同文档中,它的tf-idf值是不同的:准确的来讲,是idf值相同,但tf值不同,因为词频的计算是依据特定文档的。

③引入N-gram

针对词袋模型无法表达语序这样的缺陷,有人提出了N-gram模型。本质上来讲,N-gram是一种语言模型,我们这里只是借用了它的思想,即为了解决词袋模型不考虑语序关系的问题,我们构建了一个大小为N的词滑动窗口进行新的表征。其实词袋模型就是一个 1-Gram模型 举例来说,对于一句话

其对应的词袋模型为:

对应的2-gram模型为:

其他的话本质上还是和词袋模型相同:N-gram模型的缺点是会造成更高的时空开销,维度也更加稀疏了。

关于N-gram在语言模型上的知识以后再表。

其他方法亦可另见《python自然语言处理实战:核心技术与算法》P85:tf-idf算法、TextRank算法、LSA/LSI/LDA算法

文本表示是自然语言处理中的基础工作,文本表示的好坏直接影响到整个自然语言处理系统的性能。文本向量化是文本表示的一种重要方式。文本向量化就是讲文本表示成一系列能够表达文本语义的向量。

当前阶段,对文本向量化的大部分研究都是通过词向量化来实现的。与此同时,也有相当一部分研究者将文章或者句子作为文本基本处理单元,提出了doc2vec和ste2vec技术。

基于embedding的词表示,其核心思想是: 上下文相似的词,其语义也相似。 这就是著名的 词空间模型(word space model) ,词向量通常使用神经网络模型训练得到,神经网络模型就是根据上下文与目标词之间的关系进行建模。

word2vec glove fasttext

word2vec改进→doc2vec:word2vec丢失了文本的语序信息,而文本的语序包含了重要信息。 doc2vec 主要有两个模型: DM和DBOW 模型,DM和CBOW模型相对应,可以根据上下文词向量和段向量预测目标词的概率分布;DBOW与Skip-gram相对应,只输入段向量,预测从段落中随机抽取的词组概率分布。总体而言,doc2vec是word2vec的升级,不仅提取了文本的语义信息,而且提取了文本的语序信息。

关于word2vec篇幅有点大,我们不在这里讲了,移步 此处

cnn rnn

NN的好处在于能end2end实现模型的训练和测试,利用模型的非线性和众多参数来学习特征,而不需要手工提取特征。CNN善于捕捉文本中关键的局部信息,而RNN则善于捕捉文本的上下文信息(考虑语序信息),并且有一定的记忆能力。

这里整理了一份系统全面的Python开发学习路线,主要涉及以下知识,感兴趣的小伙伴欢迎一起来学习~

第一阶段:专业核心基础

阶段目标:

1熟练掌握Python的开发环境与编程核心知识

2熟练运用Python面向对象知识进行程序开发

3对Python的核心库和组件有深入理解

4熟练应用SQL语句进行数据库常用 *** 作

5熟练运用Linux *** 作系统命令及环境配置

6熟练使用MySQL,掌握数据库高级 *** 作

7能综合运用所学知识完成项目

知识点:

Python编程基础、Python面向对象、Python高级进阶、MySQL数据库、Linux *** 作系统。

1、Python编程基础,语法规则,函数与参数,数据类型,模块与包,文件IO,培养扎实的Python编程基本功,同时对Python核心对象和库的编程有熟练的运用。

2、Python面向对象,核心对象,异常处理,多线程,网络编程,深入理解面向对象编程,异常处理机制,多线程原理,网络协议知识,并熟练运用于项目中。

3、类的原理,MetaClass,下划线的特殊方法,递归,魔术方法,反射,迭代器,装饰器,UnitTest,Mock。深入理解面向对象底层原理,掌握Python开发高级进阶技术,理解单元测试技术。

4、数据库知识,范式,MySQL配置,命令,建库建表,数据的增删改查,约束,视图,存储过程,函数,触发器,事务,游标,PDBC,深入理解数据库管理系统通用知识及MySQL数据库的使用与管理。为Python后台开发打下坚实基础。

5、Linux安装配置,文件目录 *** 作,VI命令,管理,用户与权限,环境配置,Docker,Shell编程Linux作为一个主流的服务器 *** 作系统,是每一个开发工程师必须掌握的重点技术,并且能够熟练运用。

第二阶段:PythonWEB开发

阶段目标:

1熟练掌握Web前端开发技术,HTML,CSS,JavaScript及前端框架

2深入理解Web系统中的前后端交互过程与通信协议

3熟练运用Web前端和Django和Flask等主流框架完成Web系统开发

4深入理解网络协议,分布式,PDBC,AJAX,JSON等知识

5能够运用所学知识开发一个MiniWeb框架,掌握框架实现原理

6使用Web开发框架实现贯穿项目

知识点:

Web前端编程、Web前端高级、Django开发框架、Flask开发框架、Web开发项目实战。

1、Web页面元素,布局,CSS样式,盒模型,JavaScript,JQuery与Bootstrap掌握前端开发技术,掌握JQuery与BootStrap前端开发框架,完成页面布局与美化。

2、前端开发框架Vue,JSON数据,网络通信协议,Web服务器与前端交互熟练使用Vue框架,深入理解>

3、自定义Web开发框架,Django框架的基本使用,Model属性及后端配置,Cookie与Session,模板Templates,ORM数据模型,Redis二级缓存,RESTful,MVC模型掌握Django框架常用API,整合前端技术,开发完整的WEB系统和框架。

4、Flask安装配置,App对象的初始化和配置,视图函数的路由,Request对象,Abort函数,自定义错误,视图函数的返回值,Flask上下文和请求钩子,模板,数据库扩展包Flask-Sqlalchemy,数据库迁移扩展包Flask-Migrate,邮件扩展包Flask-Mail。掌握Flask框架的常用API,与Django框架的异同,并能独立开发完整的WEB系统开发。

第三阶段:爬虫与数据分析

阶段目标:

1熟练掌握爬虫运行原理及常见网络抓包工具使用,能够对>

2熟练掌握各种常见的网页结构解析库对抓取结果进行解析和提取

3熟练掌握各种常见反爬机制及应对策略,能够针对常见的反爬措施进行处理

4熟练使用商业爬虫框架Scrapy编写大型网络爬虫进行分布式内容爬取

5熟练掌握数据分析相关概念及工作流程

6熟练掌握主流数据分析工具Numpy、Pandas和Matplotlib的使用

7熟练掌握数据清洗、整理、格式转换、数据分析报告编写

8能够综合利用爬虫爬取豆瓣网**评论数据并完成数据分析全流程项目实战

知识点:

网络爬虫开发、数据分析之Numpy、数据分析之Pandas。

1、爬虫页面爬取原理、爬取流程、页面解析工具LXML,正则表达式,代理池编写和架构、常见反爬措施及解决方案、爬虫框架结构、商业爬虫框架Scrapy,基于对爬虫爬取原理、网站数据爬取流程及网络协议的分析和了解,掌握网页解析工具的使用,能够灵活应对大部分网站的反爬策略,具备独立完成爬虫框架的编写能力和熟练应用大型商业爬虫框架编写分布式爬虫的能力。

2、Numpy中的ndarray数据结构特点、numpy所支持的数据类型、自带的数组创建方法、算术运算符、矩阵积、自增和自减、通用函数和聚合函数、切片索引、ndarray的向量化和广播机制,熟悉数据分析三大利器之一Numpy的常见使用,熟悉ndarray数据结构的特点和常见 *** 作,掌握针对不同维度的ndarray数组的分片、索引、矩阵运算等 *** 作。

3、Pandas里面的三大数据结构,包括Dataframe、Series和Index对象的基本概念和使用,索引对象的更换及删除索引、算术和数据对齐方法,数据清洗和数据规整、结构转换,熟悉数据分析三大利器之一Pandas的常见使用,熟悉Pandas中三大数据对象的使用方法,能够使用Pandas完成数据分析中最重要的数据清洗、格式转换和数据规整工作、Pandas对文件的读取和 *** 作方法。

4、matplotlib三层结构体系、各种常见图表类型折线图、柱状图、堆积柱状图、饼图的绘制、图例、文本、标线的添加、可视化文件的保存,熟悉数据分析三大利器之一Matplotlib的常见使用,熟悉Matplotlib的三层结构,能够熟练使用Matplotlib绘制各种常见的数据分析图表。能够综合利用课程中所讲的各种数据分析和可视化工具完成股票市场数据分析和预测、共享单车用户群里数据分析、全球幸福指数数据分析等项目的全程实战。

第四阶段:机器学习与人工智能

阶段目标:

1理解机器学习相关的基本概念及系统处理流程

2能够熟练应用各种常见的机器学习模型解决监督学习和非监督学习训练和测试问题,解决回归、分类问题

3熟练掌握常见的分类算法和回归算法模型,如KNN、决策树、随机森林、K-Means等

4掌握卷积神经网络对图像识别、自然语言识别问题的处理方式,熟悉深度学习框架TF里面的张量、会话、梯度优化模型等

5掌握深度学习卷积神经网络运行机制,能够自定义卷积层、池化层、FC层完成图像识别、手写字体识别、验证码识别等常规深度学习实战项目

知识点:

1、机器学习常见算法、sklearn数据集的使用、字典特征抽取、文本特征抽取、归一化、标准化、数据主成分分析PCA、KNN算法、决策树模型、随机森林、线性回归及逻辑回归模型和算法。熟悉机器学习相关基础概念,熟练掌握机器学习基本工作流程,熟悉特征工程、能够使用各种常见机器学习算法模型解决分类、回归、聚类等问题。

2、Tensorflow相关的基本概念,TF数据流图、会话、张量、tensorboard可视化、张量修改、TF文件读取、tensorflowplayround使用、神经网络结构、卷积计算、激活函数计算、池化层设计,掌握机器学习和深度学习之前的区别和练习,熟练掌握深度学习基本工作流程,熟练掌握神经网络的结构层次及特点,掌握张量、图结构、OP对象等的使用,熟悉输入层、卷积层、池化层和全连接层的设计,完成验证码识别、图像识别、手写输入识别等常见深度学习项目全程实战。

以上就是关于文本分类特征工程概述全部的内容,包括:文本分类特征工程概述、Python语言学什么_python语言能做什么、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10128493.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存