How to Clean Text for Machine Learning with Python

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.mfbz.cn/a/272715.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python3遇到Can‘t connect to HTTPS URL because the SSL module is not available.

远程服务器centos7系统上有minicoda3,觉得太占空间,就把整个文件夹删了,原先的Python3也没了,都要重装。 我自己的步骤:进入管理员模式 1.下载Python3的源码: wget https://www.python.org/ftp/python/3.1…

熟悉DHCP面临的安全威胁与防护机制

一个网络如果要正常地运行,则网络中的主机(Host)必需要知道某些重要的网络参数,如IP地址、网络掩码、网关地址、DNS服务器地址、网络打印机地址等等。显然,在每台主机上都采用手工方式来配置这些参数是非常困难的、或是…

c语言结构体(初阶)

1. 结构体的声明 1.1 结构体的基础知识 结构是一些值的集合,这些值被称为成员变量。结构的每个成员可以是不同类型的变量。 1.2 结构的声明 struct tag {member - list; }variable-list; 例:描述一个人的信息:名字电话性别身高 //声明的…

使用python netmiko模块批量配置Cisco、华为、H3C路由器交换机(支持 telnet 和 ssh 方式)

0. 当前环境 外网电脑Python版本:3.8.5(安装后不要删除安装包,以后卸载的时候用这个)外网电脑安装netmiko第三方库:cmd中输入pip install netmiko内网电脑环境:无法搭建python环境,需外网电脑完…

怎么实现Servlet的自动加载

在实际开发时,有时候会希望某些Servlet程序可以在Tomcat启动时随即启动。但在默认情况下,第一次访问servlet的时候,才创建servlet对象。 如果servlet构造函数里面的代码或者init方法里面的代码比较多,就会导致用户第一次访问serv…

Chrome插件精选 — 前端工具

Chrome实现同一功能的插件往往有多款产品,逐一去安装试用耗时又费力,在此为某一类型插件挑选出比较好用的一款或几款,尽量满足界面精致、功能齐全、设置选项丰富的使用要求,便于节省一个个去尝试的时间和精力。 1. FeHelper(前端助…

分布式下如何实现统一日志系统?

在业务系统开发中,日志的收集和分析很重要,特别是在进行故障分析时,日志记录得好,可以帮我们快速定位问题原因。在互联网分布式系统下,日志变得越来越分散,数据规模也越来越大,如何更好地收集和…

现代 NLP:详细概述,第 1 部分:transformer

阿比吉特罗伊 一、说明 近五年来,随着 BERT 和 GPT 等思想的引入,我们在自然语言处理领域取得了巨大的成就。在本文中,我们的目标是逐步深入研究改进的细节,并了解它们带来的演变。 二、关注就是你所需要的 2017 年,来…

环保行业的物联网升级:采用钡铼技术R10

随着环境保护意识的增强和可持续发展的迫切需求,物联网技术在环保行业中扮演着越来越重要的角色。为了满足环保监测和数据采集的需求,钡铼技术R10在物联网应用中具有独特的优势。本文将探讨R10的参数和功能,并阐述其在环保行业中的应用前景。…

主流级显卡的新选择,Sparkle(撼与科技)Intel Arc A750兽人体验分享

▼前言 对于玩家而言,英特尔独显的出现不仅打破了NVIDIA与AMD双雄天下的局面,而且旗下的Arc A系列显卡还拥有不俗的做工性能以及颇具优势的价格,无论是升级或者是装新机都非常合适。如果要在Arc A系列当中选一个性能不俗,能够满足…

anaconda prompt进入虚拟环境 打开spyder

目录 1.查看有多少虚拟环境 2.conda create 指令创建新的虚拟环境 3.进入虚拟环境 4.spyder进入虚拟环境 5.退出虚拟环境 6.删除虚拟环境 1.查看有多少虚拟环境 打开anaconda prompt,输入 conda env list 2.conda create 指令创建新的虚拟环境 conda cre…

LinkedList与链表

[本节目标] 1.ArrayList的缺陷 2.链表 3.链表相关oj题 4.LinkedList的模拟实现 5.LinkedList的使用 6.ArratList和LinkedList的区别 1. ArrayList的缺陷 上篇博客已经熟悉了ArrayList的使用,并且进行了简单模拟实现,ArrayList底层使用数组来储存元素: public class Ar…

K8S 中对 Windows 节点的利用

目录 漏洞概述 漏洞详情 ​编辑 漏洞验证 补丁分析 在集群中探索 参考资料 在许多组织中,所运行的很大一部分服务和应用是 Windows 应用。Windows 容器提供了一种封装进程和包依赖项的方式,从而简化了 DevOps 实践,令 Windows 应用程序…

深入探究MongoDB:从基础到实战,一个全面的指南

MongoDB:海量数据库的介绍 定义与命名由来: MongoDB源自词“humongous”,意味着“巨大无比”。因此,MongoDB可译为“海量数据库”。类型: MongoDB是一种非关系型(NoSQL)数据库。与传统的关系型数据库相比,它的显著特点是不使用SQL语句。数据结构更灵活,没有固定的数据类…

装饰模式(单一责任)

Decorator(装饰模式:单一责任模式) 链接:装饰模式实例代码 解析 目的 在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性&#xff…

【C语言】指针详解(四)

目录 1.assert断言 2.指针的使用和传址调用 2.1strlen的模拟使用 2.2传值调用和传址调用 1.assert断言 assert.h头文件定义了宏 assert(),用于在运行时确保程序符合指定条件,如果不符合,就报错终止运行。这个宏常常被称为“断言”。 例如…

【Azure 架构师学习笔记】- Power Platform(1) - 简介

本文属于【Azure 架构师学习笔记】系列。 本文属于【Power Platform】系列。 Power Platform 它是一个SaaS平台,支持和延伸M365, Dynamics 365和Azure甚至其他第三方服务。主要提供低代码,自动化,数据驱动和定制化业务逻辑的服务…

NFC物联网一次性口令认证解决方案

物联网是由无线传感器网络、射频识别(RadioFrequency Identificalion,RFID)网络、互联网等构成的一种复合型网络,具有部分终端设备体积小、存储和计算处理能力弱的特点。顾名思义,物联网就是“物物相连的互联网”,也就是说,物联网…

Spark与Hadoop的关系和区别

在大数据领域,Spark和Hadoop是两个备受欢迎的分布式数据处理框架,它们在处理大规模数据时都具有重要作用。本文将深入探讨Spark与Hadoop之间的关系和区别,以帮助大家的功能和用途。 Spark和Hadoop简介 1 Hadoop Hadoop是一个由Apache基金会…

工具系列:TimeGPT_(1)获取token方式和初步使用

文章目录 介绍获取Token用法数据的重要要求使用DateTime索引推断频率。 介绍 Nixtla的TimeGPT是一种用于时间序列数据的生成式预训练预测模型。TimeGPT可以在没有训练的情况下,仅使用历史值作为输入,为新的时间序列生成准确的预测。TimeGPT可以用于各种…
最新文章