利用Python进行文本预处理的过程(英文)

文本清理的主要目标是什么?

数据质量改进:文本数据通常包含错误、不一致和不相关的内容。清理有助于确保数据准确、可靠和一致。

降噪:文本数据中的噪声可能包括特殊字符、HTML 标签、标点符号和其他对分析或建模目标无益的元素。清洁可以消除或减少这种噪音。

标准化:文本清理通常包括标准化文本,例如将所有文本转换为小写,以确保一致性并防止与案例相关的问题影响分析或建模。

标记化:标记化是文本清理的关键部分。它涉及将文本分解为单独的单词或标记,从而使分析或处理文本数据变得更加容易。

停用词删除:停用词是诸如“the”、“and”或“in”之类的常见单词,在文本清理过程中经常被删除,因为它们对许多任务来说没有重要意义。

词干提取和词形还原:这些技术将单词简化为其词根形式,有助于对相似的单词进行分组。词干提取和词形还原对于文本分析任务特别有用,其中单词变体应被视为同一个单词。

处理缺失数据:文本数据可能包含缺失值或不完整的句子。文本清理可能涉及填充缺失数据或解决不完整文本的策略。

重复数据删除:删除重复或接近重复的文本条目对于确保数据完整性并防止分析或建模中的偏差至关重要。

处理嘈杂的文本:嘈杂的文本数据可能包括拼写错误、缩写或非标准语言用法。文本清理策略有助于减轻此类噪音的影响。

文本清理是任何文本分析或 NLP 项目中的关键步骤。清洗后的文本数据的质量直接影响后续分析或建模任务的准确性和有效性。因此,理解和应用适当的文本清理技术对于从文本数据中获取有意义的见解至关重要。

1、删除HTML标签和特殊字符

HTML 标签和特殊字符在基于 Web 的文本数据中很常见。删除这些元素对于确保文本的可读性和可分析性至关重要。正则表达式可用于识别和消除 HTML 标签,而标点符号、符号或表情符号等特殊字符可被删除或替换为空格。

import re
def remove_heml_tags(text):clean_text = re.sub(r'[^a-zA-Z0-9\s]','',text)return clean_text
def remove_special_characters(text):clean_text = re.sub(r'[^a-zA-Z0-9\s]','',text)return clean_text

2. 标记化

标记化是将文本分割成单个单词或标记的过程。这是大多数文本分析任务的基本步骤。标记化将文本分解为其组成部分,并促进单词的计数和分析。

3、大小写转换

def str_lower(text):return text.lower()

4、删除停用词(可以使用停用词表,然后遍历删除)

from nltk.tokenize import word_tokenize
def tokenize_text(text):tokens = word_tokenize(text)return tokens

5、词干提取和词形还原

词干提取和词形还原是将单词还原为词根形式的技术,有助于对相似的单词进行分组。词干提取更具侵略性,可能会产生非字典单词,而词形还原则产生有效单词。

import nltk.stem.porter as pt
import nltk.stem.lancaster as lc
import nltk.stem.snowball as sbdef stem_text(tokens):# 波特词干提取器  (偏宽松)stemmer = pt.PorterStemmer()# 朗卡斯特词干提取器   (偏严格)stemmer = lc.LancasterStemmer()# 思诺博词干提取器   (偏中庸)stemmer = sb.SnowballStemmer(language='english')r = stemmer.stem(tokens) # 词干提取return rwords = ['table', 'probably', 'wolves', 'playing', 'is', 'the', 'beaches', 'grouded', 'dreamt', 'envision']
for word in words:print(stem_text(word))
import nltk.stem as ns
# 词性还原器
def lemmatizer_text(tokens):lemmatizer = ns.WordNetLemmatizer()n_lemm=lemmatizer.lemmatize(tokens, pos='n')v_lemm=lemmatizer.lemmatize(tokens, pos='v')return n_lemm,v_lemmwords = ['table', 'probably', 'wolves', 'playing', 'is', 'the', 'beaches', 'grouded', 'dreamt', 'envision']
for word in words:print(lemmatizer_text(word))

6、处理缺失数据

文本数据可能包含缺失值或不完整的句子。使用占位符填充缺失值或优雅地处理缺失数据等策略对于完整的管道至关重要。
这些基本的文本清理技术是更高级预处理步骤的构建块,并且是为分析、建模和其他自然语言处理任务准备文本数据的基础。选择应用哪种技术取决于文本数据的具体要求和特征以及分析或建模项目的目标。

7、删除重复文本

def remove_duplicates(texts):unique_texts = list(set(texts))return unique_texts

8、处理文本中的噪声

嘈杂的文本数据可能包括拼写错误、缩写、非标准语言用法和其他不规则行为。解决此类噪音对于确保文本分析的准确性至关重要。可以应用拼写检查、更正和针对特定噪声模式的自定义规则等技术。

from spellchecker import SpellChecker
from nltk.tokenize import word_tokenizedef correct_spelling(text):spell = SpellChecker()tokens = word_tokenize(text)corrected_tolens = [spell.correction(word) for word in tokens]corrected_text = ''.join(corrected_tolens)return corrected_text
correct_spelling('Heloo world, I love China!')

除了拼写检查和更正之外,还有其他几种处理嘈杂文本的策略:
正则表达式模式:制作正则表达式(regex)来识别、替换或删除嘈杂文本的特定模式。例如,您可以使用正则表达式来查找和更正标准日期格式、电子邮件地址或 URL。
自定义规则:定义自定义规则或字典来解决特定于域的噪音。例如,如果您正在处理医学文本,您可能会制定法规来规范医学缩写。
异常值检测:识别并标记明显偏离预期分布的文本数据,这可能表明异常值或错误。然后可以根据需要审查和纠正异常值。

import re
def clean_custom_patterns(text):'清理Email网址'clean_text = re.sub(r'\S+@\S+','[email]',text)return clean_text
clean_custom_patterns('XXXXX@qq.com')

9、处理编码问题

编码问题可能会导致文本处理过程中出现不可读的字符或错误。确保文本正确编码(例如,UTF-8)对于防止与字符编码相关的问题至关重要。

def fix_encoding(text):try:decoded_text = text.encode('utf-8').decode('utf-8')except UnicodeDecodeError:decoded_text = 'Encoding Error'return decoded_text

10、删除空白

def remove_whitespace(text):cleaned_text = ' '.join(text.split())return cleaned_text
remove_whitespace('   Hello world, I love China!   ')

11、处理数字数据

根据您的分析目标,您可能需要处理文本数据中的数字。选项包括将数字转换为单词(例如,“5”到“five”)或用占位符替换数字以专注于文本内容。

import inflect
def to_digit(digit):i = inflect.engine()if digit.isdigit():output = i.number_to_words(digit)else:output = digitreturn outputinput_text = ["1","two","3"]
for word in input_text:print(to_digit(word))

12、处理文本语言识别

from langdetect import detect
def detec_language(text):try:language = detect(text)except:language = 'unknown'return languages1 = "本篇博客主要介绍两款语言探测工具,用于区分文本到底是什么语言,"
s2 = 'We are pleased to introduce today a new technology – Record Matching –that automatically finds relevant historical records for every family tree on MyHerit'
s3 = "Javigator:Java代码导读及分析管理工具的设计"s = [s1,s2,s3]
for language in s:print(detec_language(language))

13、处理不平衡数据

使用smote来平衡数据

from imblearn.over_sampling import SMOTE
def balance_text_data(X,y):smote = SMOTE(sampling_strategy='auto')X_resampled, y_resampled = smote.fit_resample(X,y)return X_resampled,y_resampled

14、处理文本长度变化

文本数据的长度通常会有所不同,极端的变化会影响文本分析算法的性能。根据您的分析目标,您可能需要规范文本长度。技术包括:
Padding:向较短的文本样本添加标记,使它们的长度与较长的样本相等。这通常用于文本分类等需要固定输入长度的任务。
文本摘要:通过生成简洁的摘要来减少较长文本的长度对于信息检索或摘要任务非常有用。

15、处理偏见和公平

在文本数据中,可能存在与性别、种族或其他敏感属性相关的偏见。解决这些偏见对于确保NLP应用的公平性至关重要。技术包括消除词嵌入偏差和使用重新加权损失函数来解决偏差。

def debias_word_embeddings(embeddings, gender_specific_words):# Implement a debiasing technique to reduce gender bias in word embeddingpass

16、处理大文本语料库

数据流、批处理和并行化可用于高效地清理和处理大量文本数据。

from multiprocessing import Pool
def parallel_process_text(data, cleaning_function, num_workers):with Pool(num_workers) as pool:cleaned_data = pool.map(cleaning_function, data)return cleaned_data

17、处理多语言文本数据

文本数据可以是多语言的。处理多语言文本数据时,应用特定于语言的清理和预处理技术非常重要。spacy和NLTK等库支持多种语言,可用于对各种语言的文本进行分词、词形还原和清理。

18、使用特定领域的术语处理文本数据

文本数据通常包含医学、法律或者金融等专业领域的特定领域术语,考虑到领域知识来预处理此类文本数据至关重要,创建用于处理特定领域术语的自定义词典和规则可以提高文本数据的质量。

19、处理长文档的文本数据

长文档(例如研究论文或法律文档)由于其长度可能会给文本分析带来了挑战,文本摘要或文档分块等技术可以提取关键信息或将长文档分解为可管理的部分以进行分析:

from gensim.summarization import summarize
# 需要 pip install gensim==3.8.1,注意版本!!
def summarize_long_document(text, ratio=0.2):summary = summarize(text, ratio=ratio)return summary

20、处理带有时间参考的文本数据

包含时间引用(例如日期或者时间戳)的文本数据可能需要进行特殊处理。我们可以提取和标准化与时间相关的信息,将其转换为标准格式,或使用它创建时间序列数据以进行时间序列分析。

总结

这些先进的文本清理技术解决了不同文本数据场景中的特定挑战。技术的选择应由文本数据的特征和项目的目标决定。请记住,有效的文本清理是一个迭代过程,持续评估和调整清理管道对于保持数据质量并在文本分析和 NLP 工作中取得有意义的结果至关重要。
可用于文本清理的库有:

  • NLTK:NLTK是Python中用于自然语言处理的综合库。它提供了用于文本清理、标记化、词干提取、词形还原等的各种模块。
  • spacy:是一个强大的NLP库,提供高效的表计划、词形还原、词性标注和命名实体识别,以其速度和准确性而闻名。
  • TextBlob:是一个用于处理文本数据的简单库,它提供易于使用的文本清理、词性标注和情感分析功能。
  • re:正则表达式对于删除特殊字符、提取特定模式和清理文本数据非常有用。
  • DataWrangler:是斯坦福大学的一款工具,提供基于 Web 的界面,用于清理和转换杂乱的数据(包括文本)。它通过可视化方法提供交互式数据清理。
  • OpenNLP:Apache OpenNLP 是一个用于自然语言处理的开源库。它包括用于标记化、句子分割和词性标记的预训练模型和工具。

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

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

相关文章

linux运行ant 报错 Unable to locate tools.jar【已解决】

linux安装 ant 运行时报错 Unable to locate tools.jar. Expected to find it in /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-1.el7_9.x86_64/lib/tools.jar 原因 已安装的jdk只有运行环境,没有tool.jar,而ant运行需要java开发环境,因…

蓝桥杯算法题:小数第n位

问题描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。   如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式。 本题的任务是:在上面的约定下,求整数除法小数点后的第n位开…

第47篇:简易处理器<一>

Q:本期我们开始介绍一种数字系统----简易处理器,可以执行由指令指定的各种操作。 A:简易处理器包含多个9位寄存器、一个数据选择器、一个加/减法器单元和一个控制单元(有限状态机)。 数据选择器:可以将输入数据加载到各种寄存器&…

计算机网络-IS-IS基础概念二

前面已经学习了IS-IS的定义、组成、NET地址标识以及路由器级别分类等,今天继续学习IS-IS基础概念知识。 参考链接:IS-IS路由协议基础概念 一、IS-IS支持的网络类型 IS-IS会自动根据接口的数据链路层封装决定该接口的缺省网络类型, IS-IS支持两…

锋从东方来——张小泉厨刀的文化印记

在众多厨房用品中,刀具占据着无可替代的地位。作为中国历史悠久的刀具品牌,张小泉以其精湛的制刀技术和独到的设计理念,成为了国内外烹饪领域的宠儿。自明朝以来,这一品牌不断演变,今天我们探索的不仅是一把厨刀的故事…

了解 PostCSS:一个强大的 CSS 处理工具

在前端开发领域,CSS 是设计和构建网页样式的基础。然而,随着项目复杂性的增加,常规的 CSS 开发工作可能变得繁琐且难以维护。PostCSS 是一个强大的工具,旨在解决这些挑战,并提供了一种灵活的方式来处理 CSS。在本文中&…

Linux下SPI驱动:SPI设备驱动简介

一. 简介 Linux下的SPI 驱动框架和 I2C 很类似,都分为主机控制器驱动和设备驱动,主机控制器也就是 SOC的 SPI 控制器接口,SPI设备驱动也就是所操作的SPI设备的驱动。 本文来学习一下Linux下SPI设备驱动。 二. Linux下SPI驱动:SP…

桐乡——PS中的三个功能键 你知道吗

PS中的三个功能键(2) CTRL功能键位于键盘的左下角,其使用频率在PS中最高。 CTRL按钮具有强制和控制功能。我们经常在一些常规操作中使用它。例如,当您需要选择一个图层时,请按住CTRL键,然后单击要选择的图层…

物联网智能互联创新开发平台

物联网智能互联创新开发平台在职业教育方面的发展前景广阔且充满潜力。随着物联网技术的不断发展和应用领域的扩大,对物联网专业人才的需求也在日益增长。因此,物联网智能互联创新开发平台在职业教育领域的应用将具有重要意义。 一、发展前景 1) 为职业…

Biome 1.7 发布,支持从 ESLint 和 Prettier 迁移

近日,Biome v1.7 正式发布!这个新版本提供了从 ESLint 和 Prettier 迁移的简单路径。它还引入了格式化程序和 linter 的实验性机器可读报告、新的 linter 规则和许多修复。 使用以下命令更新 Biome: npm install --save-dev --save-exact b…

Mysql的用户创建、授权(只读)等用户权限体系

MySQL的用户创建、授权以及权限管理体系是其核心功能之一。 1.用户创建 可以使用CREATE USER语句来创建一个新用户。例如,要创建一个名为newuser,密码为password的用户,你可以执行以下命令: CREATE USER newuserlocalhost ID…

larael-admin汉化配置中文

larael-admin汉化配置中文 初始化的laravel-admin框架,界面默认是英文,上干货,配置中文的步骤。 一、执行 composer require "overtrue/laravel-lang:~3.0"; 二、将项目文件 config/app.php中的 Illuminate\Transla…

一篇文章带你快速认识区块链(必看)

引言 区块链技术,这一划时代的分布式账本技术,正在全球范围内掀起一场深度的信任与协作模式变革。区块链如同一部由多方共同维护的公开而又安全的大账本,每一笔交易都被打包成一个区块,通过高级密码学手段确保传输和访问安全&…

Qt——xml文件生成DBus接口

1. 如何根据xml文件生成Dbus接口 要使用 XML 文件生成 D-Bus 接口&#xff0c;你可以按照以下步骤操作&#xff1a; 步骤 1: 准备 XML 文件 确保你的 XML 文件遵循 D-Bus 的接口描述规范。这通常包括定义接口、方法、信号和属性。一个基本的例子如下&#xff1a; <!DOCTYPE…

Axure如何实现限制选择项数量的交互

大家经常会看到这样的功能设计&#xff1a;可以多选&#xff0c;但是限制多选。比如某招聘网站城市的选择只能选择5个。再选择第6个的时候会提示最多只能选择5项。 这个效果是我们经常会遇到的&#xff0c;在工作中也经常会遇到需要制作这样的效果。今天我们一起来看看&#xf…

RabbitMQ-交换机

文章目录 交换机fanoutDirecttopicHeadersRPC 交换机 **交换机 **是消息队列中的一个组件&#xff0c;其作用类似于网络路由器。它负责将我们发送的消息转发到相应的目标&#xff0c;就像快递站将快递发送到对应的站点&#xff0c;或者网络路由器将网络请求转发到相应的服务器…

从二本调剂到上海互联网公司算法工程师:我的成长故事

探讨选择成为一名程序员的原因&#xff0c;是出于兴趣还是职业发展&#xff1f; 在这个科技飞速发展的时代&#xff0c;程序员这一职业无疑成为了许多人眼中的香饽饽。那么&#xff0c;是什么驱使着越来越多的人选择投身于这一行业呢&#xff1f;是出于对编程的热爱&#xff0…

SFusion论文速读

SFusion: Self-attention Based N-to-One Multimodal Fusion Block 摘要 人们用不同的感官感知世界&#xff0c;例如视觉、听觉、嗅觉和触觉。处理和融合来自多种模式的信息使人工智能能够更轻松地理解我们周围的世界。然而&#xff0c;当缺少模态时&#xff0c;可用模态的数…

使用Canal同步MySQL 8到ES中小白配置教程

&#x1f680; 使用Canal同步MySQL 8到ES中小白配置教程 &#x1f680; 文章目录 &#x1f680; 使用Canal同步MySQL 8到ES中小白配置教程 &#x1f680;**摘要****引言****正文**&#x1f4d8; 第1章&#xff1a;初识Canal1.1 Canal概述1.2 工作原理解析 &#x1f4d8; 第2章&…

Python学习之旅中级篇总结:综合应用与展望

在Python中级篇的学习旅程中&#xff0c;我们已经探索了数据结构、网络编程、并发处理、数据库交互等多个关键领域。这些知识为我们构建复杂和高效的Python应用程序奠定了坚实的基础。在本文中&#xff0c;我们将回顾这些主题&#xff0c;并提供一个综合应用的例子。最后&#…