当前位置:   article > 正文

文本数据清洗_文本清洗

文本清洗

      新闻文本数据中不仅包括了中文字符,还包括了数字、英文字符、标点等非常规字符,这些都是无意义,并且需要处理的数据,清洗的方法使用的是正则表达式

方法一:借助Unicode编码,16进制筛出中文字符

匹配规则为:[\u4e00-\u9fa5],\un匹配n,其中n是一个用四个十六进制数字表示的Unicode字符,而4e00-9fa5之间的Unicode编码表示的是20000多个中文字符。具体编码如下:

  1. #匹配[^\u4e00-\9fa5]
  2. def find_chinese(text):
  3. pattern=re.compile(r'[^\u4e00=\u9fa5]')
  4. chinese_txt=re.sub(pattern,'',text)
  5. return chinese_txt

解释:[\u4e00-\u9fa5]表示匹配汉字,[^\u4e00-\u9fa5]表示匹配除汉字以外的所有字符。

方法二:

去除标点符号

为方便之后分词工作,此处没有直接删掉特殊符号,而是以特殊符号用空格替换

  1. #创建用于匹配特殊字符的正则表达式对象
  2. pattern2=re.compile(r'[^\w]')
  3. #将特殊符号用空格替换
  4. text=re.split(pattern2,text)
  5. print(text)

 (背诵)文本中的英文,将其去除,防止后续中文词嵌入的过程中,英文、数字被误认为英文嵌入(有这种可能吗?)

  1. import re
  2. #生成正则表达式对象,用于匹配以'('开始并以')'结束的内容
  3. pattern=re.compile(r'\(.*?\)')
  4. #去除符合上述正则表达式的内容
  5. text=re.sub(pattern,'',text)
  6. text

方法三:基于简单化正则表达式

去除空格,并将省略号更换为句号 

  1. print('处理前文本:'+text)
  2. def process(our_data):
  3. contents=our_data.replace(' ','')
  4. print('处理后文本'+contents)
  5. process(text)

去除标点和数字

  1. print('xxx:'+text)
  2. def process(data):
  3. content1=data.replace(' ','')
  4. content2=content1.replace('...',',')
  5. print('xxx'+context2)
  6. process(text)

或者

只保留数字、汉字、英文、标点,而去除其他的东西(比如表情)

  1. def is_chinese(uchar):
  2. if uchar>=u'\u4e00\ and uchar<='\u9fa5': #判断一个uchar是不是汉字
  3. return True
  4. else:
  5. return False
  6. def allcontents(contents):
  7. content=''
  8. for i in content:
  9. if is_chinese(i):
  10. content=content+i
  11. print('\nxxxxx\n'+content)
  12. centents='xxxx'
  13. print('原句子为:\n'+centents)
  14. allcontents(centens)

Q1:.compile()函数

Q2:里边的正则r是如何处理的

Q3:xx.sub()是如何处理的

 Q2.1:xx.findall()的用处,.compile()是用于匹配的

 Q3:读懂内部正则表达式的方式

 Q4:做好区分,split(),compile(),findall(),replace()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/356713
推荐阅读
相关标签
  

闽ICP备14008679号