文本数据分析(一):基本框架
在文本数据分析基本框架中,我们涉及到了六个步骤:
数据收集
数据预处理
数据挖掘和可视化
模型构建
模型评估
虽然框架需要迭代,但是我们先将其看作是一个线性的过程:
![](http://file.elecfans.com/web1/M00/4E/EF/o4YBAFrNy9GAXjgtAAA_grPiSkU044.png)
修正过的文本数据处理框架(依然很简单……)
很显然,文本数据预处理位于框架的第二步,这一步所包含的详细步骤有以下两个:
在原始文本语料上进行预处理,为文本挖掘或NLP任务做准备
数据预处理分为好几步,其中有些步骤可能适用于给定的任务,也可能不适用。但通常都是标记化、归一化和替代的其中一种(tokenization, normalization, substitution)。
通常,我们会选取一段预先准备好的文本,对其进行基本的分析和变换,遗留下更有用的文本数据,方便之后更深入、更有意义的分析任务。接下来将是文本挖掘或自然语言处理工作的核心工作。
所以再次重复以便,文本预处理的三个主要组成部分:
标记化(tokenization)
归一化(normalization)
替换(substitution)
在下面介绍预处理方法的过程中,我们需要时刻牢记这三个概念。
文本预处理框架
接下来,我们将介绍这个框架的概念,而不涉及工具。在下一篇文章中我们会降到这些步骤的安装过程,看看它们是如何在Python中实现的。
![](http://file.elecfans.com/web1/M00/4E/EF/o4YBAFrNy9GADcZ7AAAaOc60Tt4248.png)
文本数据预处理框架
1.标记化(Tokenization)
标记化是将文本中的长字符串分割成小的片段或者tokens的过程。大段文字可以被分割成句子,句子又可以被分割成单词等等。只有经过了tokenization,才能对文本进行进一步的处理。Tokenization同样被称作文本分割或者词法分析。有时,分割(segmentation)用来表示大段文字编程小片段的过程(例如段落或句子)。而tokenization指的是将文本变为只用单词表示的过程。
这一过程听起来很直接,但事实并非如此。在较大的文本中如何识别句子?你的第一反应一定是“用标点符号”。
的确,下面的句子用传统的分割方法很容易理解:
The quick brown fox jumps over the lazy dog.
但是下面这句呢:
Dr. Ford did not ask Col. Mustard the name of Mr. Smith’s dog.
还有这个:
“What is all the fuss about?” Asked Mr. Peters.
上面的都只是简单的句子,那么单词又怎样呢?
This full-time student isn’t living in on-campus housing, and she’s not wanting to visit Hawai’i.
我们应该意识到,许多策略不只是针对句子分割,而是针对分割的边界确定之后应该做什么。例如,我们可能会采用一种分割策略,它能够(正确地)将单词“she’s”的tokens之间特定边界标识识别为撇号(单独用空格标记的策略不足以识别这一点)。但是我们可以从多种策略中选择,例如是将标点符号保留在单词的某一部分中或是一同舍弃。其中一种方法似乎是正确的,并且似乎不会构成实际的问题。但是仔细想想,在英语中我们还需要考虑其他特殊情况。
即,当我们将文本分割成句子时,是否应该保留句末分隔符?我们是否在意句子在哪里结束?
2.归一化(Normalization)
再进一步处理之前,文本需要进行归一化。归一化指的是一系列相关的任务,能够将所有文本放在同一水平区域上:将所有文本转化成同样的实例,删除标点,将数字转换成相应的文字等等。对文本进行归一化可以执行多种任务,但是对于我们的框架,归一化有3个特殊的步骤:
词干提取(stemming)
词形还原(lemmatizatiion)
其他
词干提取
词干提取是删除词缀的过程(包括前缀、后缀、中缀、环缀),从而得到单词的词干。
![](http://file.elecfans.com/web1/M00/4E/EF/o4YBAFrNy9GAHB7rAAAEb_Oq3aU674.png)
词形还原
词形还原与词干提取相关,不同的是,词形还原能够捕捉基于词根的规范单词形式。
例如,对“better”一词进行词干提取,可能无法生成另一个词根的词。然而对其进行词形还原,就得到:
![](http://file.elecfans.com/web1/M00/4E/EF/o4YBAFrNy9KASAZ8AAAGGPLZbdM375.png)
其他
词形还原和词干提取是文本预处理的主要部分,所以这两项一定要认真对待。他们不是简单地文本操作,而要依赖语法规则和对规则细致的理解。
然而,还有许多其他步骤可以帮助处理文本,让它们变成平等的地位,其中有一些只是简单地替换或删除。其他重要的方法包括:
将所有字母变成小写
删除数字(或者将数字换成对应的文字)
删除标点(者通常是tokenization的一部分,但是仍然需要在这一步做)
删除空白格
删除默认停止词
停止词是那些在对文本进一步与处理之前需要过滤掉的单词,因为这些单词并不影响整体意义。例如“the”、“and”、“a”这些词。下面的例子就表明,即使删除停止词,句子的意思也很容易理解。
![](http://file.elecfans.com/web1/M00/4E/EF/o4YBAFrNy9KAUcIdAAAQ7HWeX1w938.png)
删除特定的停止词
删除稀疏的特定词语(尽管不是必须的)
在这里,我们应该清除文本预处理很大程度上依赖于预先建立的词典、数据库和规则。在我们下一篇用Python进行预处理的文章中,你会发现这些支持工具会非常有用。
3.噪声清除
噪声消除延续了框架的替代任务。虽然框架的前两个主要步骤(标记化和归一化)通常适用于几乎任何的文本或项目,噪声去除是预处理框架中一个更加具体的部分。
再次记住,我们的处理过程并不是线性的,其中的过程必须以特定的顺序进行,视具体情况而定。因此,噪声消除可以发生在上述步骤之前或之后,或者是某个时刻。
具体来说,假设我们从网上获取了一个语料库,并且以原始的web格式存储,那么我们可以认为文本很大程度上可能有HTML或XML标签。尽管这种对元数据的思考可以作为文本收集或组装的过程中的一部分,但它取决于数据是如何获取和收集的。在上一篇文章中,我简单讲述了如何从维基百科中获取原始数据并搭建语料库。由于我们控制了数据收集的过程,因此在这时处理噪声也是可行的。
但情况并非总是如此。如果你正在使用的语料库很嘈杂,你必须处理它。数据分析的效果80%都在于数据的准备。
好消息是,此时可以用到模式匹配:
删除文件标题、页脚
删除HTML、XML等标记和元数据
从其他格式(如JSON)或数据库中提取有价值的数据
如果你害怕正则表达式,这可能会成为文本预处理的一部分
噪声消除和数据收集之间的界限很模糊,因此噪声消除必须在其他步骤之前进行。例如,从JSON结构中获取的文本显然要在tokenization之前消除噪音。
原文标题:文本数据分析(二):文本数据预处理的方法
文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。
收藏
人收藏
扫一扫,分享给好友
复制链接分享
评论
发布评论请先 登录
相关推荐
理解python模块的缓存
在一个模块内部重复引用另一个相同模块,实际并不会导入两次,原因是在使用关键字 import 导入模块时,它会先检索 sys.modules 里...
发表于 03-14 16:42 •
523次
阅读
一文理解python模块的缓存
在一个模块内部重复引用另一个相同模块,实际并不会导入两次,原因是在使用关键字 import 导入模块....
python爬虫知识分享 发表于 03-14 16:42 •
62次
阅读
python 包导入的三个冷门知识点
1. 使用 __all__ 控制可被导入的变量使用 from module import * 默认情况下会导入 module 里的所有变量,若你只想从模块中导入其...
发表于 03-14 16:33 •
519次
阅读
关于python包导入的三个冷门知识点
使用 from module import * 默认情况下会导入 module 里的所有变量,若你只....
python爬虫知识分享 发表于 03-14 16:33 •
59次
阅读
pip 的超全使用指南
1. 查询软件包查询当前环境安装的所有软件包
[code]$ pip list[/code]查询 pypi 上含有某名字的包
[code]$ pip search pkg[/co...
发表于 03-11 16:03 •
3665次
阅读
一文了解pip的超全使用指南
由于默认情况下,wheel 包的平台是运行 pip download 命令 的平台,所以可能出现平台....
python爬虫知识分享 发表于 03-11 16:03 •
176次
阅读
python常规包与命名空间包
python常规包与命名空间包1. 常规包在 Python 3.3 之前或者说 Python 2 中,一个包想要被导入使用,那么该包内必须要有 __init...
发表于 03-11 15:46 •
2066次
阅读
详解python常规包与命名空间包
python常规包与命名空间包 1. 常规包 在 Python 3.3 之前或者说 Python 2....
python爬虫知识分享 发表于 03-11 15:46 •
185次
阅读
python花式导包的八种方法
python花式导包的八种方法1. 直接 import人尽皆知的方法,直接导入即可
[code]>>> import os
>>> os.getcwd()
'/home/xxx'[/c...
发表于 03-10 16:51 •
763次
阅读
python花式导包的八种方法
python花式导包的八种方法 1. 直接 import 人尽皆知的方法,直接导入即可 import....
python爬虫知识分享 发表于 03-10 16:48 •
167次
阅读
python安装第三方包的八种方法
python安装第三方包的八种方法1. 使用 easy_installeasy_install 这应该是最古老的包安装方式了,目前基本没有人使用了。下面是 ...
发表于 03-10 16:29 •
1034次
阅读
python安装第三方包的八种方法
python安装第三方包的八种方法 1. 使用 easy_install easy_install ....
python爬虫知识分享 发表于 03-10 16:27 •
140次
阅读
今天咱们用Python整一个超级玛丽游戏 | 附带源码
开发环境Python版本:3.7.8相关模块:requests模块;tqdm模块;pyfreeproxy模块;pyecharts模块;以及一些python自带的模块。...
发表于 03-10 14:26 •
844次
阅读
如何在RK3288上安装Opencv?
如何在RK3288上安装Opencv?
发表于 03-10 06:49 •
276次
阅读
如何才能在RV1109平台上编写基于USB Camera的demo程序?
如何才能在RV1109平台上编写基于USB Camera的demo程序?...
发表于 03-10 06:15 •
83次
阅读
什么是python包、模块和库?
1. 模块以 .py 为后缀的文件,我们称之为 模块,英文名 Module。
模块让你能够有逻辑地组织你的 Python 代码段,把相关的代码...
发表于 03-09 16:48 •
461次
阅读
python包、模块和库是什么
1. 模块 以 .py 为后缀的文件,我们称之为 模块,英文名 Module。 模块让你能够有逻辑地....
python爬虫知识分享 发表于 03-09 16:47 •
201次
阅读
python类的多态和类的property属性
python类的多态 多态,是指在同一类型下的不同形态。 比如下面这段代码 class People....
python爬虫知识分享 发表于 03-09 16:37 •
170次
阅读
用Python学习科学编程
用Python学习科学编程,Python经典教材。
发表于 03-09 15:00 •
26次
阅读
python类的继承详解
python类的继承 类的继承,跟人类繁衍的关系相似。 被继承的类称为基类(也叫做父类),继承而得的....
python爬虫知识分享 发表于 03-08 16:40 •
335次
阅读
python私有变量和私有方法
python私有变量和私有方法 1. 下划线妙用 在 Python 中,下划线可是非常推荐使用的符号....
python爬虫知识分享 发表于 03-08 16:30 •
388次
阅读
python静态方法与类方法
python静态方法与类方法 1. 写法上的差异 类的方法可以分为: 静态方法:有 staticme....
python爬虫知识分享 发表于 03-07 16:56 •
407次
阅读
python类的理解与使用
python类的理解与使用 1. 通俗理解类 类(英文名 class),是具有相同特性(属性)和行为....
python爬虫知识分享 发表于 03-07 16:51 •
390次
阅读
python如何捕获异常和主动抛出异常
python如何主动抛出异常和捕获异常 1. 如何抛出异常? 异常的产生有两种来源: 一种是程序自动....
python爬虫知识分享 发表于 03-04 17:09 •
660次
阅读
Python中有哪些常见的错误和异常
python常见异常类型 在程序运行过程中,总会遇到各种各样的问题和错误。 有些错误是我们编写代码时....
python爬虫知识分享 发表于 03-04 16:58 •
665次
阅读
python变量的作用域
python变量的作用域 1. 作用域 Python的作用域可以分为四种: L (Local) 局部....
python爬虫知识分享 发表于 03-03 16:50 •
400次
阅读
python偏函数和泛型函数详解
python偏函数 假如一个函数定义了多个位置参数,那你每次调用时,都需要把这些个参数一个一个地传递....
python爬虫知识分享 发表于 03-03 16:43 •
417次
阅读
python高阶函数详解
python高阶函数 1. map 函数 map 函数,它接收两个参数,第一个参数是一个函数对象(当....
python爬虫知识分享 发表于 03-02 16:47 •
177次
阅读
python匿名函数的使用
python匿名函数的使用 匿名函数(英语:anonymous function)是指一类无需定义标....
python爬虫知识分享 发表于 03-02 16:42 •
172次
阅读
11个案例讲解python函数参数
函数,在定义的时候,可以有参数的,也可以没有参数。
python爬虫知识分享 发表于 03-01 16:39 •
241次
阅读
详解python普通函数创建与调用
函数是一种仅在调用时运行的代码块。您可以将数据(称为参数)传递到函数中,然后由函数可以把数据作为结果....
python爬虫知识分享 发表于 03-01 16:32 •
244次
阅读
python推导式是什么
python推导式 推导式(英文名:comprehensions),也叫解析式,是Python的一种....
python爬虫知识分享 发表于 02-28 17:13 •
193次
阅读
python while循环详解
python while循环 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处....
python爬虫知识分享 发表于 02-28 16:39 •
171次
阅读
《深入Python3》中文版pdf
《深入Python3》中文版pdf
发表于 02-28 09:45 •
35次
阅读
《Dive Into Python》中文翻译版.pdf
《Dive Into Python》中文翻译版.pdf
发表于 02-25 17:22 •
29次
阅读
python for循环的案例说明
python for循环 for 循环可以遍历任何序列的项目,如一个列表或者一个字符串。 它的基本语....
python爬虫知识分享 发表于 02-25 16:27 •
215次
阅读
python判断语句的详细说明
python判断语句:if 1. 简单小例子 如果满足条件 A,则执行代码块 a,否则执行代码块 b....
python爬虫知识分享 发表于 02-25 16:22 •
221次
阅读
python生成器是什么
python生成器 1. 什么是生成器? 生成器(英文名 Generator ),是一个可以像迭代器....
python爬虫知识分享 发表于 02-24 15:53 •
235次
阅读
python迭代器详解
python迭代器 1. 可迭代对象 可以利用 for 循环的对象,都叫可迭代对象。 列表、元组、字....
python爬虫知识分享 发表于 02-24 15:42 •
203次
阅读
初学者学Python必看的几个练手小项目
Python是一种面向对象的解释型编程语言,源代码与解释器CPython遵守GPL协议,Python....
叶枫架构师 发表于 02-23 17:06 •
291次
阅读
4个Python经典项目实战,练手必备!
Python是一种极具可读性和通用性的编程语言。Python这个名字的灵感来自于英国喜剧团体Mont....
叶枫架构师 发表于 02-23 17:06 •
275次
阅读
python集合是什么
python集合 集合(英文名 set),它是一个无序的不重复元素序列。 这里面有两个重点: 无序,....
python爬虫知识分享 发表于 02-23 17:01 •
258次
阅读
python字典是什么
python字典 字典(英文名 dict),它是由一系列的键值(key-value)对组合而成的数据....
python爬虫知识分享 发表于 02-23 16:54 •
237次
阅读
python元组的详细介绍
python元组 元组(英文名 tuple),和列表非常的相似,它也是由一系列元素按顺序进行排列而成....
python爬虫知识分享 发表于 02-22 15:19 •
159次
阅读
python列表的详细介绍
python列表 列表(英文名 list),是由一系列元素按顺序进行排列而成的容器。 这里面有两个重....
python爬虫知识分享 发表于 02-22 15:14 •
159次
阅读
python cookbook(第三版)免费下载
python cookbook(第三版)免费下载。
发表于 02-22 13:57 •
49次
阅读
python运算符是什么
python运算符 0. 什么是运算符? 本章节主要说明Python的运算符。举个简单的例子 4 +....
python爬虫知识分享 发表于 02-21 16:44 •
205次
阅读
python字符串格式化
python字符串格式化 格式化输出,主要有三种方式 使用 % 进行格式化 使用 format 函数....
python爬虫知识分享 发表于 02-21 16:28 •
178次
阅读
python输入与输出详解
python输入与输出 无论是从我们一开始的“hello world”,还是前面章节的里各种例子,基....
python爬虫知识分享 发表于 02-21 16:18 •
226次
阅读
python布尔值是什么
python布尔值 1. 什么是布尔值 但在Python语言中,布尔类型只有两个值 True :表示....
python爬虫知识分享 发表于 02-21 16:10 •
192次
阅读
python整数与浮点数分解
2.3 python整数与浮点数 Python 支持的数字类型有三种:整数、浮点数和复数。 1. 整....
python爬虫知识分享 发表于 02-18 09:09 •
295次
阅读
2.2 python字符串类型
2.2 python字符串类型 1. 如何定义字符串? 字符串是Python中最常用的数据类型之一。....
python爬虫知识分享 发表于 02-17 17:08 •
183次
阅读
深入了解python常量与变量
Python 的变量和常量不需要事先声明类型,这是根据Python的动态语言特性而来。
python爬虫知识分享 发表于 02-16 18:22 •
340次
阅读
解析两种运行Python程序方法
首先打开你的终端,直接输入 python3 回车,然后输入 print("Hello, World"....
python爬虫知识分享 发表于 02-16 18:17 •
463次
阅读
1.2 Python 开发环境的搭建
1.2 Python 开发环境的搭建 理论上只需要你安装了 CPython 解释器后,就可以开始写 ....
python爬虫知识分享 发表于 02-15 17:16 •
316次
阅读
快速安装 Python 解释器
1.1【环境】快速安装 Python 解释器 Python 是一门解释性脚本语言,因此要想让你编写的....
python爬虫知识分享 发表于 02-15 16:57 •
547次
阅读
《Python编程入门》.pdf
《Python编程入门》.pdf
发表于 02-11 16:03 •
124次
阅读
python获取历届春晚数据
不知道今年的春晚大家看了吗?小编表示没有看,而且是已经很多年没有完整的看过春晚了,关于看春晚的热情都....
yiniuyun 发表于 02-07 17:52 •
314次
阅读
PikaScript入选2021年度Gitee最有价值开源项目
PikaScript是一个完全重写的超轻量级python引擎,具有完整的解释器,字节码和虚拟机架构,....
RTThread物联网操作系统 发表于 01-26 15:59 •
591次
阅读
入坑ESP32,首次MicroPython项目移植
原先一直在ARM架构下编写Cpython,先来说说ARM架构优缺点:1、系统资源足够,虽然pytho....
发表于 01-18 11:24 •
68次
阅读
|