前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python正则表达式清洗微博文本特殊符号(网址, @, 表情符等)

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

作者头像
blmoistawinde
发布2019-12-24 16:34:41
4.6K1
发布2019-12-24 16:34:41
举报

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

在这里插入图片描述
在这里插入图片描述

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

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

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

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

下面是代码:

代码语言:javascript
复制
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()

使用效果:

代码语言:javascript
复制
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)中,还有精细分句,指定实体分词等功能,简化大家的数据分析流程,欢迎试用~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档