How to Clean Text for Machine Learning with Python

news2025/2/4 22:37:51

NLP

在本教程中,您将了解如何清理和准备文本,以便使用机器学习进行建模。

完成本教程后,您将了解:

如何通过开发自己的非常简单的文本清理工具开始。
如何更上一层楼并使用 NLTK 库中更复杂的方法。
在使用现代文本表示方法(如单词嵌入)时如何准备文本。
使用我的新书《自然语言处理的深度学习》开始您的项目,其中包括分步教程和所有示例的 Python 源代码文件。

教程概述

本教程分为 6 个部分;他们是:

  • 弗朗茨·卡夫卡的《变形记》
  • 文本清理是特定于任务的 手动令牌化
  • 使用 NLTK 进行标记化和清理
  • 其他文本清理注意事项
  • 清理单词嵌入文本的提示

准备数据 弗朗茨·卡夫卡的《变形记》

https://www.gutenberg.org/cache/epub/5200/pg5200.txt
在本教程中,我们将使用弗朗茨·卡夫卡 (Franz Kafka) 的《变形记》一书中的文本。没有具体的原因,除了它很短,我喜欢它,你可能也喜欢它。我希望这是大多数学生在学校必须阅读的经典作品之一。

《变形记》的全文可从古腾堡计划免费获得。

弗朗茨·卡夫卡(Franz Kafka)在古腾堡计划中的变形记
您可以在此处下载文本的 ASCII 文本版本:

弗朗茨·卡夫卡(Franz Kafka)的变形记纯文本UTF-8(可能需要加载页面两次)。

该文件包含我们不感兴趣的页眉和页脚信息,特别是版权和许可信息。打开文件并删除页眉和页脚信息,并将文件另存为“metamorphosis_clean.txt”。

The start of the clean file should look like:

"One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into a horrible vermin.

The file should end with:

And, as if in confirmation of their new dreams and good intentions, as soon as they reached their destination Grete was the first to get up and stretch out her young body."

文本清理是基于特定任务的

在实际掌握了文本数据后,清理文本数据的第一步是对你要实现的目标有一个强烈的想法,并在该上下文中查看你的文本,看看到底有什么帮助。

花点时间看一下课文。你注意到了什么?

这是我所看到的:

  • 它是纯文本,因此没有要解析的标记(耶!
  • 德语原文的翻译使用英式英语(例如“travelling”)。
  • 这些行被人为地用大约 70 个字符(meh) 的新行包裹起来。
  • 没有明显的错别字或拼写错误。
  • 有逗号、撇号、引号、问号等标点符号。 有连字符的描述,如“盔甲状”。
  • 有很多使用em破折号(“-”)来继续句子(也许用逗号代替? 有名字(例如“萨姆萨先生”) 似乎没有需要处理的数字(例如1999年)
  • 有部分标记(例如“II”和“III”),我们删除了第一个“I”。

手动令牌化

文本清理很困难,但我们选择使用的文本已经很干净了。
我们可以编写一些 Python 代码来手动清理它,这对于您遇到的那些简单问题是一个很好的练习。正则表达式和拆分字符串等工具可以让你走很长的路。
在这里插入图片描述

加载数据

filename = 'metamorphosis_clean.txt'
file = open(filename, 'rt',encoding='utf-8')
text = file.read()
file.close()

以空格为标志分词

filename = 'metamorphosis_clean.txt'
file = open(filename, 'rt')
text = file.read()
file.close()
# split into words by white space
words = text.split()
print(words[:100])

Split by Whitespace and Remove Punctuation (特殊符号)

Another approach might be to use the regex model (re) and split the document into words by selecting for strings of alphanumeric characters (a-z, A-Z, 0-9 and ‘_’).
在这里插入图片描述

# load text
filename = 'metamorphosis_clean.txt'
file = open(filename, 'rt')
text = file.read()
file.close()
# split into words by white space
words = text.split()
# remove punctuation from each word
import string
table = str.maketrans('', '', string.punctuation)
stripped = [w.translate(table) for w in words]
print(stripped[:100])

Normalizing Case 词规范统一

全都变成小写

file = open(filename, 'rt')
text = file.read()
file.close()
# split into words by white space
words = text.split()
# convert to lower case
words = [word.lower() for word in words]
print(words[:100])

Tokenization and Cleaning with NLTK

安装

在这里插入图片描述

split into sentence

在这里插入图片描述

split into words

在这里插入图片描述

filter out punctuation

在这里插入图片描述

filter out stop words

在这里插入图片描述

# load data
filename = 'metamorphosis_clean.txt'
file = open(filename, 'rt')
text = file.read()
file.close()
# split into words
from nltk.tokenize import word_tokenize
tokens = word_tokenize(text)
# convert to lower case
tokens = [w.lower() for w in tokens]
# remove punctuation from each word
import string
table = str.maketrans('', '', string.punctuation)
stripped = [w.translate(table) for w in tokens]
# remove remaining tokens that are not alphabetic
words = [word for word in stripped if word.isalpha()]
# filter out stop words
from nltk.corpus import stopwords
stop_words = set(stopwords.words('english'))
words = [w for w in words if not w in stop_words]
print(words[:100])

Stem Words

如 fish fishing fished 统一为fish
在这里插入图片描述

python文件打开方式详解——a、a+、r+、w+、rb、rt区别

解决NLTK语料库下载出错及nltk_data路径等问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1337239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文润色有用吗 神码ai

大家好,今天来聊聊论文润色有用吗,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 标题:论文润色有用吗?专业软件助你提升论文质量 一、…

sheng的学习笔记-【中】【吴恩达课后测验】Course 4 -卷积神经网络 - 第二周测验

课程4_第2周_测验题 目录 第一题 1.在典型的卷积神经网络中,随着网络的深度增加,你能看到的现象是? A. 【  】 n H n_H nH​和 n W n_W nW​增加,同时 n C n_C nC​减少 B. 【  】 n H n_H nH​和 n W n_W nW​减少&#x…

【NR技术】 EN-DC移动性流程

1 概述 NR支持LTE和NR共同组网,UE同时连接到eNB和gNB,NSA组网时,EN-DC是一种主流连接方式。 2 EN-DC移动性处理流程 2.1 Inter-gNB-DU Mobility using MCG SRB 在EN-DC操作过程中,当只有MCG SRB可用时,UE从一个gNB-D…

【前端技术】Vite vs Webpack

✨专栏介绍 在当今数字化时代,Web应用程序已经成为了人们生活和工作中不可或缺的一部分。而要构建出令人印象深刻且功能强大的Web应用程序,就需要掌握一系列前端技术。前端技术涵盖了HTML、CSS和JavaScript等核心技术,以及各种框架、库和工具…

网络通信-Linux 对网络通信的实现

Linux 网络 IO 模型 同步和异步,阻塞和非阻塞 同步和异步 关注的是调用方是否主动获取结果 同步:同步的意思就是调用方需要主动等待结果的返回 异步:异步的意思就是不需要主动等待结果的返回,而是通过其他手段比如,状态通知&#xff0…

CNVD原创漏洞审核和处理流程

一、CNVD原创漏洞审核归档和发布主流程 (一)审核和归档流程 审核流程分为一级、二级、三级审核,其中一级审核主要对提交的漏洞信息完整性进行审核,漏洞符合可验证(通用型漏洞有验证代码信息或多个互联网实例、事件型…

Java之遍历树状菜单

😇作者介绍:一个有梦想、有理想、有目标的,且渴望能够学有所成的追梦人。 🎆学习格言:不读书的人,思想就会停止。——狄德罗 ⛪️个人主页:进入博主主页 🗼专栏系列:无 &#x1f33c…

Android studio 使用greenDao根据实体类生成dao类

1.遇到的问题 使用android studio根据实体类生成dao其实也很简单,你只要实现 Parcelable Entity public class ConfigDataModel implements Parcelable {Id(autoincrement true)private Long id null; } 2.使用自带的方法生成 使用build-->make Project生成 …

软件体系结构复习

复习参考: 一文搞懂什么是RESTful API 九种常见UML图 企业级软件开发的基本概念 软件架构:在设计和构建软件系统时采用的基本结构和原则。 它涉及到对软件系统进行模块化、组织和分解的方式,以及不同模块之间的交互和通信方式。在软件设计中…

pyomo使用cplex求解,进行冲突校验

文章目录 求解参数设置模型保存模型冲突校验pyomo冲突校验cplex冲突校验docplex冲突校验 CPLEX 安装包下载 pyomo使用 cplex求解,进行冲突校验 求解参数设置 options {"timelimit" : 60*60, # 设置求解时间,超过设置时间,求解停…

短视频矩阵系统的崛起和影响

近年来,短视频矩阵系统已经成为了社交媒体中的一股新势力。这个新兴的社交媒体形式以其独特的魅力和吸引力,迅速吸引了大量的用户。这个系统简单来说就是将海量短视频整合在一个平台上,使用户可以方便地观看和分享好玩有趣的短视频。 短视频…

巨大成就背后,我揭开比亚迪销量第一秘密

可以说比亚迪已经成为我每日注视的焦点所在,无论数据走势还是旗下各品牌新车动向,我都抱着浓厚兴趣细细研究。 今天,当我读到比亚迪再次蝉联新能源车销量王座的消息时,我不禁为之振奋。这家在新能源车业风生水起的企业&#xf…

【Dart】P0 Win、Mac 使用与安装

Dart 使用与安装 Dart 下载安装Windows 版本MacOS版本处于境外安装 Dart 开发工具 Dart 下载安装 Windows 版本 安装网址: http://gekorm.com/dart-windows/ 安装后测试: dart --versionMacOS版本 首先安装 Homebrew: 终端输入&#xff…

【EI社科会议征稿】第四届公共管理与智能社会国际学术会议(PMIS 2024)

第四届公共管理与智能社会国际学术会议(PMIS 2024) 2024 4th International Conference on Public Management and Intelligent Society 第四届公共管理与智能社会国际学术会议将在2024年3月15-17日在长沙召开。PMIS 2024由中南大学社会计算研究中心、中南大学公共…

线上夺旗开启!由MoveBit主办,Sui独家赞助的MoveCTF 2024开放注册

*本文从MoveBit公众号转载 去年底,由 MoveBit 推出的首个 MoveCTF 线上安全竞赛 — MoveCTF 2022 备受关注,吸引了大量 Move 生态开发者踊跃参与。为持续推动 Move 生态系统的蓬勃发展,进一步丰富开发者在 Move 安全的专业知识,M…

到底是前端验证还是后端验证

背景 软件应用研发中, 前端验证还是后端验证这是意识与认知问题。鉴于某些入门同学还不清楚,我们再来看下: 一. 从软件行业来自国外 Q: 前端验证和后端验证都是对同一个数据的验证,有什么区别? A: 二者的目的不同&…

Mongodb基础介绍与应用场景

NoSql 解决方案第二种 Mongodb MongoDB 是一款开源 高性能 无模式的文档型数据库 当然 它是NoSql数据库中的一种 是最像关系型数据库的 非关系型数据库 首先 最需要注意的是 无模式的文档型数据库 这个需要后面我们看到它的数据才能明白 其次是 最像关系型数据库的非关系型数据…

(企业 / 公司项目)微服务OpenFeign怎么实现服务间调用?(含面试题)

Feign: 远程调用组件使用步骤,理解上面的图  后台系统中, 微服务和微服务之间的调用可以通过Feign组件来完成.  Feign组件集成了Ribbon负载均衡策略(默认开启的, 使用轮询机制),Hystrix熔断器 (默认关闭的, 需要通过配置文件进行设置开启)  被调用的微服务…

Seem环境安装

创建虚拟环境 conda create -n seem python3.8 conda activate seem 安装相关依赖:(不按照的话会报错) sudo apt-get install openmpi-bin libopenmpi-devconda install gcc_linux-64pip install mpi4py 导入环境 export PYTHONPATH$(pwd…