文本数据预处理的方法

您所在的位置:网站首页 数据预处理的原理是什么 文本数据预处理的方法

文本数据预处理的方法

2022-03-27 04:56| 来源: 网络整理| 查看: 265

文本数据分析(一):基本框架

在文本数据分析基本框架中,我们涉及到了六个步骤:

数据收集

数据预处理

数据挖掘和可视化

模型构建

模型评估

虽然框架需要迭代,但是我们先将其看作是一个线性的过程:

修正过的文本数据处理框架(依然很简单……)

很显然,文本数据预处理位于框架的第二步,这一步所包含的详细步骤有以下两个:

在原始文本语料上进行预处理,为文本挖掘或NLP任务做准备

数据预处理分为好几步,其中有些步骤可能适用于给定的任务,也可能不适用。但通常都是标记化、归一化和替代的其中一种(tokenization, normalization, substitution)。

通常,我们会选取一段预先准备好的文本,对其进行基本的分析和变换,遗留下更有用的文本数据,方便之后更深入、更有意义的分析任务。接下来将是文本挖掘或自然语言处理工作的核心工作。

所以再次重复以便,文本预处理的三个主要组成部分:

标记化(tokenization)

归一化(normalization)

替换(substitution)

在下面介绍预处理方法的过程中,我们需要时刻牢记这三个概念。

文本预处理框架

接下来,我们将介绍这个框架的概念,而不涉及工具。在下一篇文章中我们会降到这些步骤的安装过程,看看它们是如何在Python中实现的。

文本数据预处理框架

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)

其他

词干提取

词干提取是删除词缀的过程(包括前缀、后缀、中缀、环缀),从而得到单词的词干。

词形还原

词形还原与词干提取相关,不同的是,词形还原能够捕捉基于词根的规范单词形式。

例如,对“better”一词进行词干提取,可能无法生成另一个词根的词。然而对其进行词形还原,就得到:

其他

词形还原和词干提取是文本预处理的主要部分,所以这两项一定要认真对待。他们不是简单地文本操作,而要依赖语法规则和对规则细致的理解。

然而,还有许多其他步骤可以帮助处理文本,让它们变成平等的地位,其中有一些只是简单地替换或删除。其他重要的方法包括:

将所有字母变成小写

删除数字(或者将数字换成对应的文字)

删除标点(者通常是tokenization的一部分,但是仍然需要在这一步做)

删除空白格

删除默认停止词

停止词是那些在对文本进一步与处理之前需要过滤掉的单词,因为这些单词并不影响整体意义。例如“the”、“and”、“a”这些词。下面的例子就表明,即使删除停止词,句子的意思也很容易理解。

删除特定的停止词

删除稀疏的特定词语(尽管不是必须的)

在这里,我们应该清除文本预处理很大程度上依赖于预先建立的词典、数据库和规则。在我们下一篇用Python进行预处理的文章中,你会发现这些支持工具会非常有用。

3.噪声清除

噪声消除延续了框架的替代任务。虽然框架的前两个主要步骤(标记化和归一化)通常适用于几乎任何的文本或项目,噪声去除是预处理框架中一个更加具体的部分。

再次记住,我们的处理过程并不是线性的,其中的过程必须以特定的顺序进行,视具体情况而定。因此,噪声消除可以发生在上述步骤之前或之后,或者是某个时刻。

具体来说,假设我们从网上获取了一个语料库,并且以原始的web格式存储,那么我们可以认为文本很大程度上可能有HTML或XML标签。尽管这种对元数据的思考可以作为文本收集或组装的过程中的一部分,但它取决于数据是如何获取和收集的。在上一篇文章中,我简单讲述了如何从维基百科中获取原始数据并搭建语料库。由于我们控制了数据收集的过程,因此在这时处理噪声也是可行的。

但情况并非总是如此。如果你正在使用的语料库很嘈杂,你必须处理它。数据分析的效果80%都在于数据的准备。

好消息是,此时可以用到模式匹配:

删除文件标题、页脚

删除HTML、XML等标记和元数据

从其他格式(如JSON)或数据库中提取有价值的数据

如果你害怕正则表达式,这可能会成为文本预处理的一部分

噪声消除和数据收集之间的界限很模糊,因此噪声消除必须在其他步骤之前进行。例如,从JSON结构中获取的文本显然要在tokenization之前消除噪音。

原文标题:文本数据分析(二):文本数据预处理的方法

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

扫一扫,分享给好友

复制链接分享 评论

发布评论请先 登录

相关推荐

Python for、while 等循环速度对比 众所周知,Python 不是一种执行效率较高的语言。此外在任何语言中,循环都是一种非常消耗时间的操作。假如任意一种简单的单步操... 发表于 03-25 16:05 • 69次 阅读 详解Python中两种实现循环的关键字 众所周知,Python 不是一种执行效率较高的语言。此外在任何语言中,循环都是一种非常消耗时间的操作.... 的头像 python爬虫知识分享 发表于 03-25 16:04 • 133次 阅读 详解XTS L2 3.0标准系统兼容性测试步骤和问题 L2 3.0 标准系统兼容性测试认证 一、编译安装 先把源代码全量编译一次 ./build.sh --product-name Hi3516DV300 --cca... 发表于 03-25 13:49 • 243次 阅读 Python中的十个安全陷阱(二) 正则表达式(regex)是大多数 Web 程序不可或缺的一部分。我们经常能看到它被自定义的 Web .... 的头像 python爬虫知识分享 发表于 03-24 16:47 • 171次 阅读 Python 中少为人知的 10 个安全陷阱(下) 6. 不完整的正则表达式匹配正则表达式(regex)是大多数 Web 程序不可或缺的一部分。我们经常能看到它被自定义的 Web 应用防火... 发表于 03-24 16:46 • 46次 阅读 Python 中少为人知的 10 个安全陷阱(上) Python 开发者们在使用标准库和通用框架时,都以为自己的程序具有可靠的安全性。然而,在 Python 中,就像在任何其它编程语言中... 发表于 03-24 16:43 • 23次 阅读 Python中的十个安全陷阱(一) Python 开发者们在使用标准库和通用框架时,都以为自己的程序具有可靠的安全性。然而,在 Pyth.... 的头像 python爬虫知识分享 发表于 03-24 16:42 • 154次 阅读 怎样使用micropython去实现mqtt的协议测试呢 1、MQTT协议介绍 MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。它工作在 TCP/IP协议族上。MQTT协议是... 发表于 03-24 14:58 • 213次 阅读 scons指令编译不了虚拟机是为什么?怎么解决? 倒在了玩qemu的第一步 输入scons编译之后就说“No module named building”,如图 并且我打开出错的文件发现SConscript是... 发表于 03-24 14:32 • 333次 阅读 通过分析ajax中信息爬取图片 通过本案例解析ajax请求返回的信息下载图片 爬取url地址:动物 分析:分析url地址:每页25条数据,共计10页 [code]第1页:htt... 发表于 03-23 17:00 • 455次 阅读 通过分析ajax中信息爬取图片 通过本案例解析ajax请求返回的信息 下载图片 爬取url地址: https://pic.sogou.... 的头像 python爬虫知识分享 发表于 03-23 17:00 • 328次 阅读 豆瓣电影Top250信息爬取 通过本案例[豆瓣电影Top250信息爬取]锻炼除正则表达式之外两种信息解析方式:Xpath和PyQu.... 的头像 python爬虫知识分享 发表于 03-23 15:50 • 130次 阅读 豆瓣电影Top250信息爬取 通过本案例[豆瓣电影Top250信息爬取]锻炼除正则表达式之外两种信息解析方式:Xpath和PyQuery。 爬取url地址: 分析:分析u... 发表于 03-23 15:47 • 861次 阅读 如何利用Python去实现一个带有计时功能的装饰器呢 下面的装饰器clock会打印函数的运行时间 # descrbe.py import time import functools def clock(func):   ... 发表于 03-23 11:07 • 269次 阅读 python解析库的使用--PyQuery PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery.... 的头像 python爬虫知识分享 发表于 03-22 16:07 • 620次 阅读 python解析库的使用--XPath XPath(XML Path Language)是一门在XML文档中查找信息的语言。 XPath 可用来在XML文档中对元素和属性进行遍历。 ... 发表于 03-22 15:50 • 98次 阅读 python解析库的使用--XPath XPath(XML Path Language)是一门在XML文档中查找信息的语言。 的头像 python爬虫知识分享 发表于 03-22 15:50 • 302次 阅读 python网络爬虫概述 网络爬虫(Web Spider)又称网络蜘蛛、网络机器人,是一种按照一定的规则,自动地抓取万维网信息.... 的头像 python爬虫知识分享 发表于 03-21 16:50 • 176次 阅读 python中urllib3库和requests库的使用 Python3 默认提供了urllib库,可以爬取网页信息,但其中确实有不方便的地方,如:处理网页验.... 的头像 python爬虫知识分享 发表于 03-21 16:08 • 182次 阅读 python正则表达式中的常用函数 编译正则表达式模式,返回一个正则对象的模式。(可以把那些常用的正则表达式编译成正则表达式对象,这样可.... 的头像 python爬虫知识分享 发表于 03-18 16:12 • 364次 阅读 详解python正则表达式数量词 这部分理解一下数量词,为什么要用数量词,想想都知道,如果你要匹配几十上百的字符时,难道你要一个一个的.... 的头像 python爬虫知识分享 发表于 03-18 16:05 • 361次 阅读 python正则表达式字符集 字符集是由一对方括号 “[]” 括起来的字符集合。使用字符集,可以匹配多个字符中的一个。 举个例子,.... 的头像 python爬虫知识分享 发表于 03-17 16:48 • 383次 阅读 初识 Python 正则表达式 正则表达式是一个特殊的字符序列,用于判断一个字符串是否与我们所设定的字符序列是否匹配,也就是说检查一.... 的头像 python爬虫知识分享 发表于 03-17 16:44 • 362次 阅读 从yield开始入门python协程 本篇文章会先向你介绍一个陌生的 Python 关键词,他和 return 就像一对新兄弟,有相似之处.... 的头像 python爬虫知识分享 发表于 03-16 16:20 • 258次 阅读 python创建线程池的两种方法 在使用多线程处理任务时也不是线程越多越好,由于在切换线程的时候,需要切换上下文环境,依然会造成cpu.... 的头像 python爬虫知识分享 发表于 03-16 16:15 • 268次 阅读 使用Python实现五个自动化场景 相比大家都听过自动化生产线、自动化办公等词汇,在没有人工干预的情况下,机器可以自己完成各项任务,这大.... 的头像 Linux爱好者 发表于 03-16 11:13 • 196次 阅读 使用AioHttp异步抓取火星图片 让我们从一个简单的应用程序开始,只是为了启动和运行aiohttp。首先,创建一个新的virtuale.... 的头像 马哥Linux运维 发表于 03-16 09:58 • 196次 阅读 如何用python爬取抖音app数据 记录一下如何用python爬取app数据,本文以爬取抖音视频app为例。 的头像 马哥Linux运维 发表于 03-16 09:07 • 254次 阅读 python创建多线程的两种方法 1. 用函数创建多线程 在Python3中,Python提供了一个内置模块 threading.Th.... 的头像 python爬虫知识分享 发表于 03-15 16:47 • 373次 阅读 python多线程和多进程的对比 1. 基本概念 在开始讲解理论知识之前,先过一下几个基本概念。虽然咱是进阶教程,但我也希望写得更小白.... 的头像 python爬虫知识分享 发表于 03-15 16:42 • 366次 阅读 python多线程和多进程的对比 基于Python语言的RFM模型讲解 上面步骤可以知道,我们需要有RFM三个维度,根据我们在业务分析方法课程中学到的,业务分析模型离不开指.... 的头像 数据分析与开发 发表于 03-15 15:38 • 226次 阅读 一文理解python模块的缓存 在一个模块内部重复引用另一个相同模块,实际并不会导入两次,原因是在使用关键字 import 导入模块.... 的头像 python爬虫知识分享 发表于 03-14 16:42 • 240次 阅读 关于python包导入的三个冷门知识点 使用 from module import * 默认情况下会导入 module 里的所有变量,若你只.... 的头像 python爬虫知识分享 发表于 03-14 16:33 • 262次 阅读 一文了解pip的超全使用指南 由于默认情况下,wheel 包的平台是运行 pip download 命令 的平台,所以可能出现平台.... 的头像 python爬虫知识分享 发表于 03-11 16:03 • 325次 阅读 详解python常规包与命名空间包 python常规包与命名空间包 1. 常规包 在 Python 3.3 之前或者说 Python 2.... 的头像 python爬虫知识分享 发表于 03-11 15:46 • 313次 阅读 python花式导包的八种方法 python花式导包的八种方法 1. 直接 import 人尽皆知的方法,直接导入即可 import.... 的头像 python爬虫知识分享 发表于 03-10 16:48 • 277次 阅读 python安装第三方包的八种方法 python安装第三方包的八种方法 1. 使用 easy_install easy_install .... 的头像 python爬虫知识分享 发表于 03-10 16:27 • 304次 阅读 python包、模块和库是什么 1. 模块 以 .py 为后缀的文件,我们称之为 模块,英文名 Module。 模块让你能够有逻辑地.... 的头像 python爬虫知识分享 发表于 03-09 16:47 • 292次 阅读 python类的多态和类的property属性 python类的多态 多态,是指在同一类型下的不同形态。 比如下面这段代码 class People.... 的头像 python爬虫知识分享 发表于 03-09 16:37 • 268次 阅读 用Python学习科学编程 用Python学习科学编程,Python经典教材。 发表于 03-09 15:00 • 44次 阅读 python类的继承详解 python类的继承 类的继承,跟人类繁衍的关系相似。 被继承的类称为基类(也叫做父类),继承而得的.... 的头像 python爬虫知识分享 发表于 03-08 16:40 • 419次 阅读 python私有变量和私有方法 python私有变量和私有方法 1. 下划线妙用 在 Python 中,下划线可是非常推荐使用的符号.... 的头像 python爬虫知识分享 发表于 03-08 16:30 • 486次 阅读 python静态方法与类方法 python静态方法与类方法 1. 写法上的差异 类的方法可以分为: 静态方法:有 staticme.... 的头像 python爬虫知识分享 发表于 03-07 16:56 • 471次 阅读 python类的理解与使用 python类的理解与使用 1. 通俗理解类 类(英文名 class),是具有相同特性(属性)和行为.... 的头像 python爬虫知识分享 发表于 03-07 16:51 • 449次 阅读 python如何捕获异常和主动抛出异常 python如何主动抛出异常和捕获异常 1. 如何抛出异常? 异常的产生有两种来源: 一种是程序自动.... 的头像 python爬虫知识分享 发表于 03-04 17:09 • 721次 阅读 Python中有哪些常见的错误和异常 python常见异常类型 在程序运行过程中,总会遇到各种各样的问题和错误。 有些错误是我们编写代码时.... 的头像 python爬虫知识分享 发表于 03-04 16:58 • 742次 阅读 python变量的作用域 python变量的作用域 1. 作用域 Python的作用域可以分为四种: L (Local) 局部.... 的头像 python爬虫知识分享 发表于 03-03 16:50 • 451次 阅读 python偏函数和泛型函数详解 python偏函数 假如一个函数定义了多个位置参数,那你每次调用时,都需要把这些个参数一个一个地传递.... 的头像 python爬虫知识分享 发表于 03-03 16:43 • 486次 阅读 python高阶函数详解 python高阶函数 1. map 函数 map 函数,它接收两个参数,第一个参数是一个函数对象(当.... 的头像 python爬虫知识分享 发表于 03-02 16:47 • 232次 阅读 python高阶函数详解 python匿名函数的使用 python匿名函数的使用 匿名函数(英语:anonymous function)是指一类无需定义标.... 的头像 python爬虫知识分享 发表于 03-02 16:42 • 229次 阅读 11个案例讲解python函数参数 函数,在定义的时候,可以有参数的,也可以没有参数。 的头像 python爬虫知识分享 发表于 03-01 16:39 • 316次 阅读 详解python普通函数创建与调用 函数是一种仅在调用时运行的代码块。您可以将数据(称为参数)传递到函数中,然后由函数可以把数据作为结果.... 的头像 python爬虫知识分享 发表于 03-01 16:32 • 349次 阅读 python推导式是什么 python推导式 推导式(英文名:comprehensions),也叫解析式,是Python的一种.... 的头像 python爬虫知识分享 发表于 02-28 17:13 • 244次 阅读 python while循环详解 python while循环 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处.... 的头像 python爬虫知识分享 发表于 02-28 16:39 • 227次 阅读 python for循环的案例说明 python for循环 for 循环可以遍历任何序列的项目,如一个列表或者一个字符串。 它的基本语.... 的头像 python爬虫知识分享 发表于 02-25 16:27 • 280次 阅读 python判断语句的详细说明 python判断语句:if 1. 简单小例子 如果满足条件 A,则执行代码块 a,否则执行代码块 b.... 的头像 python爬虫知识分享 发表于 02-25 16:22 • 273次 阅读 python生成器是什么 python生成器 1. 什么是生成器? 生成器(英文名 Generator ),是一个可以像迭代器.... 的头像 python爬虫知识分享 发表于 02-24 15:53 • 295次 阅读 python迭代器详解 python迭代器 1. 可迭代对象 可以利用 for 循环的对象,都叫可迭代对象。 列表、元组、字.... 的头像 python爬虫知识分享 发表于 02-24 15:42 • 243次 阅读 初学者学Python必看的几个练手小项目 Python是一种面向对象的解释型编程语言,源代码与解释器CPython遵守GPL协议,Python.... 的头像 叶枫架构师 发表于 02-23 17:06 • 333次 阅读 4个Python经典项目实战,练手必备! Python是一种极具可读性和通用性的编程语言。Python这个名字的灵感来自于英国喜剧团体Mont.... 的头像 叶枫架构师 发表于 02-23 17:06 • 329次 阅读


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3