中文文本预处理--主题模型

去掉低频词、分词、繁简转化、替换奇异词等是中文文本数据处理中的重要步骤。

低频词

如在主题模型中,数据预处理的要求很简单,只需要去掉低频词,大多数文章设定的门限都是5或者6.

分词

中文文本相比于英文,需要首先进行分词处理。类似地还有日文、韩文等。因而自然预言处理中一个重要的研究问题就是文本分词技术。

国内常用的分词工具有北理工张华平老师的NLPIR分词包和百度工程师开发的jieba分词,名字很有意思。

两者都有Python版本,下面以jieba分词为例:

    import jieba
    seg_list = jieba.cut("我来到北京清华大学", cut_all=True)

需要注意的是,分词模型中比较重要的两个点,是上下文和词典。两者都能极大地影响分词效果,简单来讲,就是需要输入文本内容较长,和词典较全面。上例中的文本输入对于初学者具有较强的误导性,就是对一篇文章,可以分成一句一句来分词,这是错误的。最好的情况是把所有需要被分词的文本都拼接成一个长文本,然后输入。如果有段落分隔需要的,可以用’\n’等特殊字符进行分割,在得到输出的时候直接用str.split(‘\n’)分开就好。词典就不用说了,我整理了一个比较全面的超大词典,共享在github上,欢迎选用。只是词的词频赋权还不够全面,不过影响不大。链接:out link

词干化

英文论文中,常见到会对文本进行词干化处理(stemming), 就是吧把具有相同词干的单词整理成一个单词,也有点去掉低频词的意味,可以明显改善词频较低的问题。主要原因还是因为在自然预言理解的时候,一个词被替换成其词干不会影响理解,而能够改善词频较低的问题。是统计建模前的必要处理过程。如:

tall, taller, tallest
good, better, best

分别具有相同的词干。python中有package可以处理这个问题,如stemming等,实现了若干知名算法。具体的包算法没看,但是最简单的一个方法是利用英文百科词典,如word net这个语法数据库,直接mapping就好了。

提取中文

当然了,中文数据集中包括很多数字、英文单词、表情符号等。因而需要用正则表达式将他们全部提取出来。有很多文章研究了中文字符、中亚字符等的unicode范围,下面是一个自测满足中文字符提取的代码,直接copy用就好了。

    def Chinese_word_extraction(content_raw):
        chinese_pattern = u"([\u4e00-\u9fa5]+)"
        re_data = chi_pattern.findall(content_raw)
        content_clean  = ' '.join(re_data)

混淆映射

我处理的网易新闻数据集中有一个问题,就是网民在提到自认为的敏感词的时候,会采用同音字、典故等方法进行替换。或者在敏感词中加入一些特殊符号进行间隔。这些方法都太naive了,利用同音字映射、联系上下文和正则提取等方法就能解决这些问题。以后有时间了可以研究一下,挺有意思,而且已有的顶会论文好像就专门研究了这个问题。下面是我根据观察发现的若干常用替换:

    replace_dict = {
    u'吻腚':u'稳定',
    u'弓虽':u'强',
    u'女干':u'奸',
    u'示土':u'社',
    u'禾口':u'和',
    u'言皆':u'谐',
    u'释永性':u'释永信',
    u'大菊观':u'大局观',
    u'yl':u'一楼',
    u'cnm':u'草泥马',
    u'CCTV':u'中央电视台',
    u'CCAV':u'中央电视台',
    u'ccav':u'中央电视台',
    u'cctv':u'中央电视台',
    u'qq':u'腾讯聊天账号',
    u'QQ':u'腾讯聊天账号',
    u'cctv':u'中央电视台',
    u'CEO':u'首席执行官',
    u'克宫':u'克里姆林宫',
    u'PM2.5':u'细颗粒物',
    u'pm2.5':u'细颗粒物',
    u'SDR':u'特别提款权',
    u'装13':u'装逼',
    u'213':u'二逼',
    u'13亿':u'十三亿',
    u'巭':u'功夫',
    u'孬':u'不好',
    u'嫑':u'不要',
    u'夯':u'大力',
    u'芘':u'操逼',
    u'烎':u'开火',
    u'菌堆':u'军队',
    u'sb':u'傻逼',
    u'SB':u'傻逼',
    u'Sb':u'傻逼',
    u'sB':u'傻逼',
    u'is':u'伊斯兰国',
    u'isis':u'伊斯兰国',
    u'ISIS':u'伊斯兰国',
    u'ko':u'打晕',
    u'你M':u'你妹',
    u'你m':u'你妹',
    u'震精':u'震惊',
    u'返工分子':u'反共',
    u'黄皮鹅狗':u'黄皮肤俄罗斯狗腿',
    u'苏祸姨':u'苏霍伊',
    u'混球屎报':u'环球时报',
    u'屎报':u'时报',
    u'jb':u'鸡巴',
    u'j巴':u'鸡巴',
    u'j8':u'鸡巴',
    u'J8':u'鸡巴',
    u'JB':u'鸡巴',
    u'瞎BB':u'瞎说',
    u'nb':u'牛逼',
    u'牛b':u'牛逼',
    u'牛B':u'牛逼',
    u'牛bi':u'牛逼',
    u'牛掰':u'牛逼',
    u'苏24':u'苏两四',
    u'苏27':u'苏两七',
    u'痰腐集团':u'贪腐集团',
    u'痰腐':u'贪腐',
    u'反hua':u'反华',
    u'<br>':u' ',
    u'屋猫':u'五毛',
    u'5毛':u'五毛',
    u'傻大姆':u'萨达姆',
    u'霉狗':u'美狗',
    u'TMD':u'他妈的',
    u'tmd':u'他妈的',
    u'japan':u'日本',
    u'P民':u'屁民',
    u'八离开烩':u'巴黎开会',
    u'傻比':u'傻逼',
    u'潶鬼':u'黑鬼',
    u'cao':u'操',
    u'爱龟':u'爱国',
    u'天草':u'天朝',
    u'灰机':u'飞机',
    u'张将军':u'张召忠',
    u'大裤衩':u'中央电视台总部大楼',
    u'枪毕':u'枪毙',
    u'环球屎报':u'环球时报',
    u'环球屎包':u'环球时报',
    u'混球报':u'环球时报',
    u'还球时报':u'环球时报',
    u'人X日报':u'人民日报',
    u'人x日报':u'人民日报',
    u'清只县':u'清知县',
    u'PM值':u'颗粒物值',
    u'TM':u'他妈',
    u'首毒':u'首都',
    u'gdp':u'国内生产总值',
    u'GDP':u'国内生产总值',
    u'鸡的屁':u'国内生产总值',
    u'999':u'红十字会',
    u'霉里贱':u'美利坚',
    u'毛子':u'俄罗斯人',
    u'ZF':u'政府',
    u'zf':u'政府',
    u'蒸腐':u'政府',
    u'霉国':u'美国',
    u'狗熊':u'俄罗斯',
    u'恶罗斯':u'俄罗斯',
    u'我x':u'我操',
    u'x你妈':u'操你妈',
    u'p用':u'屁用',
    u'胎毒':u'台独',
    u'DT':u'蛋疼',
    u'dt':u'蛋疼',
    u'IT':u'信息技术',
    u'1楼':u'一楼',
    u'2楼':u'二楼',
    u'2逼':u'二逼',
    u'二b':u'二逼',
    u'二B':u'二逼',
    u'晚9':u'晚九',
    u'朝5':u'朝五',
    u'黄易':u'黄色网易',
    u'艹':u'操',
    u'滚下抬':u'滚下台',
    u'灵道':u'领导',
    u'煳':u'糊',
    u'跟贴被火星网友带走啦':u'',
    u'猿们':u'公务员们',
    u'棺猿':u'官员',
    u'贯猿':u'官员',
    u'每只猿':u'每个公务员',
    u'巢县':u'朝鲜',
    u'死大林':u'斯大林',
    u'无毛们':u'五毛们',
    u'天巢':u'天朝',
    u'普特勒':u'普京',
    u'依拉克':u'伊拉克',
    u'歼20':u'歼二零',
    u'歼10':u'歼十',
    u'歼8':u'歼八',
    u'f22':u'猛禽',
    u'p民':u'屁民',
    u'钟殃':u'中央'
}

还非常不全面,也不是长久之计,下面搞一搞这个问题说不定还能水一篇论文,哈哈。

你可能感兴趣的:(正则表达式,中文分词,繁简转化,中文提取)