当前位置: 首页 > 科技观察

Python文本数据预处理实践

时间:2023-03-16 18:46:49 科技观察

在进行数据分析和可视化之前,首先要对数据进行处理,而大多数时候需要处理的是文本数据。本文总结了一些文本预处理方法。将文中出现的字母转为小写:deleteorextract文中的图如果与文中的分析无关则删除。importreinput_str='HelloPython123666Hijupyternotebook1111'result=re.sub(r'\d+','',input_str)print(result)结果如下:在某些情况下,比如获取的数据中,job信息中的salary是15K,产品购买信息中购买该产品的人数为8500+人购买了该产品,我们需要从中提取数量。input_str='工资:15K8500+人付30000+人付'result=re.findall("-?\d+\.?\d*e?-?\d*?",input_str)print(result)结果为如下:过滤掉文本importreinput_str="""This&is[an]example?\YeTingyun<<1""!中的标点符号。;11???【】>>1*夜听云/p:?|{of}string.with.?punctuation!!!!"""s=re.sub(r'[^\w\s]','',input_str)print(s)结果如下:可以看到文本中所有乱七八糟的符号都被过滤掉了,使用正则表达式过滤文本中的标点符号,如果是空白字符也需要过滤掉,可以用r'[^\w]',原理很简单:正则表达式中,\w匹配字母或数字或下划线或汉字(具体与字符集有关),^\w表示相反匹配。删除两端无用空格input_str="\tyetingyun\t"input_str=input_str.strip()input_str结果如下:中文分词,过滤掉停用词和单词#从Github下载停用词数据https:///github.com/zhousishuo/stopwordsimportjiebaimportre#读取用于测试文本数据用户评论withopen('comments.txt')asf:data=f.read()#文本预处理去掉一些无用字符只提取中文new_data=re.findall('[\u4e00-\u9fa5]+',data,re.S)new_data="/".join(new_data)#文本切分的精确模式seg_list_exact=jieba.cut(new_data,cut_all=False)#加载停止worddatawithopen('stop_words.txt',encoding='utf-8')asf:#获取每一行的停用词并添加到集合中con=f.read().split('\n')stop_words=set()foriincon:stop_words.add(i)#列表分析方法去除停用词和个别词result_list=[wordforwordinseg_list_exactifwordnotinstop_wordsandlen(word)>1]result_list结果如下:首先读取测试用的文本数据,即爬取商品评论,这类数据通常有很多无意义的词和符号,用正则表达式过滤掉无用的符号,只提取中文。使用jieba库进行文本分词,将停用词数据加载到集合中,然后在一行列表分析中过滤掉停用词和单个词,非常高效。可以下载一些公共的停用词数据,然后根据实际文本处理需要加入词数据,使过滤效果更好。从Github下载stopwords数据:https://github.com/zhousishuo/stopwordsSnowNLP是一个用Python编写的类库,可以轻松处理中文文本内容。是受TextBlob启发写的,因为大部分自然语言处理库基本都是针对英文的,所以自己写了一个方便处理中文的类库,而且和TextBlob不同的是,这里没有用到NLTK,所有算法都是自己实现的,并且它带有一些训练有素的字典。注意本程序处理的是unicode编码,使用时请自行解码成unicode编码。使用SnowNLP处理中文文本数据非常方便。以词性标注和关键词提取为例:fromsnowlpimportSnowNLPword=u'今天天气不错,这妹子好漂亮's=SnowNLP(word)print(s.words)#Segmentationprint(list(s.tags))#词性标注fromsnownlpimportSnowNLPtext=u'''自然语言处理是计算机科学和人工智能领域的一个重要方向。它研究各种可以利用自然语言实现人与计算机之间有效交流的理论和方法。自然语言处理是一门结合了语言学、计算机科学和数学的科学。因此,该领域的研究将涉及自然语言,即人们每天使用的语言,因此它与语言学的研究密切相关,但又有重要区别。自然语言处理不是对自然语言的一般研究,而是开发能够有效实现自然语言交流的计算机系统,特别是软件系统。因此它是计算机科学的一部分。'''s=SnowNLP(text)print(s.keywords(limit=6))#关键词提取本文转载自微信公众号“练习Python”,可通过以下二维码关注。转载本文请联系实践Python公众号。