在做文本分类的实验时,找到一个微博的情感分析语料,但是其中保留了很多微博中的特殊符号,对于算法的训练来说不太有利。

从上面的图中可以看到,微博里主要有几种特殊格式:

  1. 网页
  2. @用户名(包括转发路径上的其他用户名)
  3. 表情符号(用[]包围)
  4. 话题(用#包围)

作为机器学习的预处理步骤,我希望能够处理掉前3个格式,原因是:

  • 1、2不包含有意义的内容(不过我去除转发用户名的时候保留了其内容)
  • 3 实际上泄露了很多标签的信息(比如看的[哈哈]表情符就知道是正向了)。我初步尝试时保留了这些表情符,模型的准确率可达到超过97%,但模型只是看表情符,却没有对文本的理解。去除表情符后相同模型重新训练的准确率掉到了74.5%
  • 而保留4,是因为它们常常是构成句子完整性不可或缺的成分,比如上图中的最后一句话

下面是代码:

import re
def clean(text):text = re.sub(r"(回复)?(//)?\s*@\S*?\s*(:| |$)", " ", text)  # 去除正文中的@和回复/转发中的用户名text = re.sub(r"\[\S+\]", "", text)      # 去除表情符号# text = re.sub(r"#\S+#", "", text)      # 保留话题内容URL_REGEX = re.compile(r'(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))',re.IGNORECASE)text = re.sub(URL_REGEX, "", text)       # 去除网址text = text.replace("转发微博", "")       # 去除无意义的词语text = re.sub(r"\s+", " ", text) # 合并正文中过多的空格return text.strip()

使用效果:

In[3]: clean("太过分了@Rexzhenghao //@Janie_Zhang:招行最近负面新闻越来越多呀...")
Out[3]: '太过分了 招行最近负面新闻越来越多呀...'
In[4]: clean("希望你?得好?我本"?肥血?史"[晕][哈哈]@Pete三姑父")
Out[4]: '希望你?得好?我本"?肥血?史"'
In[5]: clean("回复@钱旭明QXM:[嘻嘻][嘻嘻] //@钱旭明QXM:杨大哥[good][good]")
Out[5]: '杨大哥'
In[6]: clean("【#赵薇#:正筹备下一部电影 但不是青春片....http://t.cn/8FLopdQ")
Out[6]: '【#赵薇#:正筹备下一部电影 但不是青春片....'
In[7]: clean("[酷]//@芊如_GZ:[哈哈]// @布丁clout : 哈哈 // @audrey-panda :试了我家那位,说我属于"放心的没法看的"[晕] // @芊如_GZ :[晕]")
Out[7]: '哈哈 试了我家那位,说我属于"放心的没法看的"'

需要清洗数据的场景,除了微博以外,还有HTML代码,URL,Email等,所以我将一批常用的数据清洗操作整合进了我开发的HarvestText库(https://github.com/blmoistawinde/HarvestText)中,还有精细分句,指定实体分词等功能,简化大家的数据分析流程,欢迎试用~

Python正则表达式清洗微博文本特殊符号(网址, @, 表情符等)相关推荐

  1. Python正则表达式常用的15个符号整理

    http://blog.itpub.net/31403259/viewspace-2157778/ Python正则表达式常用的15个符号整理: 1. ? 匹配0次或一次前面的分组(问号在正则表达式中 ...

  2. 【python正则表达式匹配获取文本中的11位手机号码】

    [python正则表达式匹配获取文本中的11位手机号码] 文前白话 代码实现 效果 正则知识补充 文前白话 根据需要,匹配一段没有固定格式的文本,识别其中的11位数字作为手机号,如果11位数字后还有数 ...

  3. python正则表达式处理txt_Python文本处理服务(re正则表达式例子)

    正则表达式例子 检查对子 在此示例中,我们将使用以下帮助函数来更优雅地显示匹配对象: def displaymatch(match):    if match is None:        retu ...

  4. python爬取微博文本_Python爬虫爬取新浪微博内容示例【基于代理IP】

    本文实例讲述了Python爬虫爬取新浪微博内容.分享给大家供大家参考,具体如下: 用Python编写爬虫,爬取微博大V的微博内容,本文以女神的微博为例(爬新浪m站:https://m.weibo.cn ...

  5. python 正则表达式 查找 替换 文本

    对于简单的文本模式,使用str.replace()即可. 例如: text='mark ,帅哥,18,183 帅,mark' print(text.replace('18','19')) print( ...

  6. python | 正则表达式匹配字符串中的符号

    有的时候需要匹配字符串里的一些特定符号,比如匹配字符串中有没有感叹号.问好来评价原文的情感倾向 整理了以下各个标点符号的表达式: 符号 表达式 . \u3002 : \uff1b , \uff0c : ...

  7. python把中文转英文_Python 3.0_文本清洗之中文特殊符号转英文特殊符号及全角字符转半角字符...

    在文本清洗的过程,特殊符号的不规范是比较麻烦的事情,所以需要把文本中的特殊符号按照统一的标准处理.以下代码的作用就是将中文的特殊符号统一转成英文的,以及将全角符号转换成半角符号.参考代码# -*- c ...

  8. 基于Python文本内容/情感的对微博文本自动二元分类

    资源下载地址:https://download.csdn.net/download/sheziqiong/85836603 资源下载地址:https://download.csdn.net/downl ...

  9. python替换UTF-8编码文本中任意特殊字符,包括中文符号问题:大量文本,将其中的特殊字符用空

    python替换UTF-8编码文本中任意特殊字符,包括中文符号问题:大量文本,将其中的特殊字符用空 python替换UTF-8编码文本中任意特殊字符,包括中文符号 问题: 大量文本,将其中的特殊字符用 ...

最新文章

  1. 综述|基于深度学习方式的场景分类算法
  2. 性能不打折,内存占用减少90%,Facebook提出极致模型压缩方法Quant-Noise
  3. 第三方登录过程—OAuth2.0协议
  4. 编码 data:text/html;c,iOS 用TFHpple抓取GB-2312编码的html页面,页面返回编码错误
  5. 用cookie实现localstorage功能
  6. RabbitMQ配置环境变量后启动不了的解决方法
  7. windows共享内存
  8. 面试: 14 个实用的数据库设计技巧,一次性教给你!
  9. 第五周软件工程作业-每周例行报告
  10. springcloud gateway 使用nacos 动态过滤器 记一次线上网关升级cpu升高的问题
  11. 寻找第k大的元素Java,java – 支持快速第k个最大元素查找的队列数据结构
  12. 极度烧脑+惊人发现:4个颠覆你世界观的量子理论实验
  13. Redis数据结构——字典-hashtable
  14. 内联函数inline的使用
  15. 求1--100的和 Python3实现
  16. 《Python 学习手册4th》 第十六章 函数基础
  17. 我妈劝我找份稳定的工作
  18. android百度经纬度转gps坐标,GPS经纬度怎么转百度经纬度
  19. 爬虫实战1:爬取哔哩哔哩主播的头像以昵称命名保存到本地文件
  20. Sql server 双机热备份数据库

热门文章

  1. 亿图图示----科学与软件展示
  2. ORA-01426数字溢出问题
  3. 【Deepstream-gst-metadata-test例子解析】
  4. 计算机房灭火器单具基准,厂房、车间灭火器配置计算范例
  5. person reid demo郑哲东 Deep ReID
  6. java 简易计算器
  7. 【c语言】高级篇学习笔记
  8. 海康监控虚拟服务器设置,海康监控如何连接网络设置教程
  9. 分部积分出现积回去的情况
  10. 医学影像:静息态fmri数据的预处理