文本数据清洗技术详解

数据科学领域,文本数据的清洗和预处理是构建模型前的重要步骤。文本数据的清洗依赖于数据的类型,尤其是当数据为文本形式时,清洗工作显得尤为关键。本文将探讨文本数据清洗的不同技术,并提供相应的Python代码示例。

文本数据清洗的重要性

文本清洗是一个任务驱动的过程,需要明确最终目标,并在清洗前对数据进行审查,以确定可以达到的效果。初步探索数据时,可能会注意到文本中存在许多拼写错误、数字和标点符号、表情符号、用户名、链接,以及非英语文本和连字符或缩写词。这些问题都需要在文本清洗过程中得到妥善处理。

文本数据清洗的常见方法

本文将介绍几种常见的文本数据清洗方法,并展示如何使用Python代码来实现这些方法。这些方法包括将文本转换为小写、去除标点符号、移除数字、消除多余空格、替换重复的标点符号、去除表情符号、去除表情图标以及展开缩写词。

在某些情况下,如分词和向量化处理前,将文本转换为小写是必要的。但需注意,如果进行情感分析,将文本转换为小写可能会丢失单词的实际含义,例如大写可能表示愤怒等。

text = "I had such high hopes for this dress 15 size or (my usual size) to work for me." ans = text.lower() print(ans)

去除标点符号有助于平等对待每段文本。例如,去除标点后,“data”和“data!”将被视为相同。需要注意的是,去除标点可能会使某些缩写词失去意义,如“don’t”变为“dont”。

import string text = "I had such high hopes! for this dress size or (my usual size) to work for me." PUNCT_TO_REMOVE = string.punctuation ans = text.translate(str.maketrans('', '', PUNCT_TO_REMOVE)) print(ans)

在某些情况下,数字可能并不包含重要信息,因此移除数字可能是更好的选择。例如,在情感分析中,数字没有特定含义,但在命名实体识别或词性标注任务中,需要谨慎使用移除数字的技术。

ans = ''.join([i for i in text if not i.isdigit()]) print(ans)

消除多余空格不仅可以节省存储空间,还可以使数据更加清晰。

ans = " ".join(text.split()) print(ans)

使用正则表达式可以更快、更容易地编写代码。去除重复的标点符号非常有用,因为如果一个词中包含多个标点符号,它们并不包含重要信息。

import re text1 = "I had such... high hopes for this dress!!!!" ans = re.sub(r'(!)\1+', '', text1) print(ans) def remove_emoji(string): emoji_pattern = re.compile("[" u"U0001F600-U0001F64F" # emoticons u"U0001F300-U0001F5FF" # symbols & pictographs u"U0001F680-U0001F6FF" # transport & map symbols u"U0001F1E0-U0001F1FF" # flags (iOS) u"U00002702-U000027B0" u"U000024C2-U0001F251" "]+", flags=re.UNICODE) return emoji_pattern.sub(r'', string) print(remove_emoji("game is on 🔥🔥")) EMOTICONS = { u":‑)":"Happy face or smiley", u":)":"Happy face or smiley", # ... 其他表情图标 } text = 'I had such high hopes for this dress 15 size really wanted it to work for me :-)' ans = re.compile(u'(' + u'|'.join(k for k in EMOTICONS) + u')') ans = ans.sub(r'',text) print(ans) import contractions text = "She'd like to know how I'd do that!" print(contractions.fix(text))
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485