清洗中文语料过程

语料需要的清洗的问题

  • 1、标点符号,中文标点混合英文标点符号,全半角等
  • 2、有一些特殊的表情符号存在于句子中
  • 3、还有一些标点符号重复使用
  • 4、至于繁体中文转中文,停用词等之类

1、规则匹配方法

### 匹配除了数字、英文标点、中文标点、中文字符、中文字符之外符号;这种符号一般可以去掉中文文本表达中的表情符号,特殊字符等之类的。

improt re
from string import punctuation
from string import digits
rule = re.compile(u'[^a-zA-Z.,;《》?!“”‘’@#¥%…&×()——+【】{};;●,。&~、|\s::'+digits+punctuation+'\u4e00-\u9fa5]+')
s= re.sub(rule, '', sentence)
###处理文本重复符号的表达,如替换多个。!.
s = re.sub('[!]+','!', s)
s = re.sub('[.]+','。', s)
s = re.sub('[。]+','。', s)

 2、处理整段中文语料上述问题,只提取中文部分

def clean_line(s):
    """
    :param s: 清洗爬取的中文语料格式
    :return:
    """
    import re
    from string import digits, punctuation
    rule = re.compile(u'[^a-zA-Z.,;《》?!“”‘’@#¥%…&×()——+【】{};;●,。&~、|\s::' + digits + punctuation + '\u4e00-\u9fa5]+')
    s = re.sub(rule, '', s)
    s = re.sub('[、]+', ',', s)
    s = re.sub('\'', '', s)
    s = re.sub('[#]+', ',', s)
    s = re.sub('[?]+', '?', s)
    s = re.sub('[;]+', ',', s)
    s = re.sub('[,]+', ',', s)
    s = re.sub('[!]+', '!', s)
    s = re.sub('[.]+', '.', s)
    s = re.sub('[,]+', ',', s)
    s = re.sub('[。]+', '。', s)
    s = s.strip().lower()
    return s

3、匹配中文字符

sent = "酒店特别好,前台办理入住的工作人员服务热情," \
       "主动给升级了房间,酒店环境超级好," \
       "有一个比较大的儿童乐园,然后走个2,30米又有跷跷板啊,滑梯啊这样的小玩具," \
       "酒店还有一个专门的儿童餐厅,早饭都是各种卡通图形的面包,华夫饼," \
       "如果是亲子旅游的话,我超级推荐海韵酒店。酒店过了马路就是海," \
       "踏浪也很方便。酒店干净没有蚊虫总之满分推荐。"
pa = re.compile(r'<[a0-9-]*>')
paa = re.compile(r'<[/][a0-9-]*>')
pe = re.compile(r'')
pe2 = re.compile(r'')
pexp = re.compile(r'')
pexp2 = re.compile(r'')
print(pa.findall(sent))
print(paa.findall(sent))
print(pe.findall(sent))
print(pe2.findall(sent))
print(pexp.findall(sent))
print(pexp2.findall(sent))

 

 

你可能感兴趣的:(清洗中文语料,NLP,自然语言处理)