0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

文本数据预处理的方法

zhKF_jqr_AI 来源:未知 作者:李倩 2018-04-11 16:44 次阅读

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

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

数据收集

数据预处理

数据挖掘和可视化

模型构建

模型评估

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

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

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

在原始文本语料上进行预处理,为文本挖掘或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之前消除噪音。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据收集
    +关注

    关注

    0

    文章

    66

    浏览量

    11062
  • 噪声消除
    +关注

    关注

    0

    文章

    8

    浏览量

    8081
  • python
    +关注

    关注

    51

    文章

    4671

    浏览量

    83457

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

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

收藏 人收藏

    评论

    相关推荐

    请教大家一下关于数据预处理

    一般将获得的加速度数据得进行数据预处理,常见的预处理方法有去掉趋势相、还得将离散的数值积分获得振幅。请问有做过的没,请教一下。
    发表于 06-07 11:16

    我的labview程序带有生成文本数据,如何才能生成setup。

    我的labview程序带有生成文本数据,如何才能生成setup。
    发表于 08-16 13:28

    如何读取TXT文本数据并生成波形

    文本数据如图片所示,求大神帮忙!
    发表于 05-14 23:06

    从一个文本数据的文件夹中,怎样实现数据的连续提取

    比如 文本数据中有很多关于物体的信息,比如位置(经度和纬度),移动速度,时间信息,而我只需要(进度和纬度)的数据,这些经度和纬度信息怎样从文本文件夹中实现连续采集,重要的是连续采集,该怎么做呢
    发表于 11-03 19:00

    Python数据预处理方法

    机器学习-Python实践Day3(特征工程--数据预处理2)
    发表于 06-03 15:55

    数据探索与数据预处理

    目录1数据探索与数据预处理21.1 赛题回顾21.2 数据探索性分析与异常值处理21.3 相关性分析52特征工程82.1 光伏发电领域特征8
    发表于 07-12 08:37

    C预处理与C语言基本数据类型

    嵌入式系统设计师学习笔记二十九:嵌入式程序设计④——C预处理预处理指令表:(编码规范:GB/T 28169-2011)关于宏定义 #denfine 详解可点击连接查看博主的另一篇文章 预定义宏预处理
    发表于 12-21 08:29

    LabVIEW操作Excel报表时会丢失所有的非文本数据

    LabVIEW操作Excel报表时会丢失所有的非文本数据在Report Generation Toolkit中打开我的*.xls文件,进行操作并保存。当我再次使用Excel打开时,所有的非文本数据
    发表于 05-09 21:24

    文本数据集的间接谱聚类

    总体的聚类。将该思想应用于大文本数据集的聚类问题后,过分簇中心之间的相似性度度量方法可以采用常用的余弦距离法。在20-Newgroups大本数据上的实验结果表明:间接谱聚类算法在聚类准确性上比K-Means算法平均高出14. 7
    发表于 02-24 14:43 0次下载

    文本数据分析:文本挖掘还是自然语言处理

    自然语言处理(NLP)关注的是人类的自然语言与计算机设备之间的相互关系。NLP是计算机语言学的重要方面之一,它同样也属于计算机科学和人工智能领域。而文本挖掘和NLP的存在领域类似,它关注的是识别文本数据中有趣并且重要的模式。
    的头像 发表于 04-10 14:58 1.8w次阅读
    <b class='flag-5'>文本数据</b>分析:<b class='flag-5'>文本</b>挖掘还是自然语言<b class='flag-5'>处理</b>?

    机器学习的特征预处理问题讨论

    本文我们来讨论特征预处理的相关问题。主要包括特征的归一化和标准化,异常特征样本清洗与样本数据不平衡问题的处理
    的头像 发表于 03-15 17:14 723次阅读

    异构文本数据转换过程中解析XML文本方法对比

    对异构文本数据转换过程中解析XML文本的DOM、SAX、JOM4J方法进行对比研究,以解析时间、内存堆占用空间、CPU占用率为评价指标来判定4种解析方法的优劣。该评价
    发表于 03-25 11:12 9次下载
    异构<b class='flag-5'>文本数据</b>转换过程中解析XML<b class='flag-5'>文本</b>的<b class='flag-5'>方法</b>对比

    PyTorch文本分类任务的基本流程

    文本分类是NLP领域的较为容易的入门问题,本文记录文本分类任务的基本流程,大部分操作使用了**torch**和**torchtext**两个库。 ## 1. 文本数据预处理
    的头像 发表于 02-22 14:23 770次阅读

    问答对话文本数据:解锁智能问答的未来

    在日常生活中,我们经常面临各种问题和需求,而智能问答系统作为一种人机交互工具,为我们提供了便捷的问题解答和信息获取方式。而问答对话文本数据作为推动智能问答系统发展的关键资源,扮演着重要角色。 问答
    的头像 发表于 07-13 14:19 308次阅读

    C语言有哪些预处理操作?

    C语言的预处理是在编译之前对源代码进行处理的阶段,它主要由预处理器完成。预处理器是一个独立的程序,它负责对源代码进行一些文本替换和
    的头像 发表于 12-08 15:40 283次阅读
    C语言有哪些<b class='flag-5'>预处理</b>操作?