NLP Python数据预处理去除标点符号

NLP Python数据预处理去除标点符号

1. 使用re(正则表达式)和string

import re
import string

sentence = "+今天=是!2021!   年/8月?1,7日★.---《七夕节@》:让我*们出门(#@)去“感受”夏天的荷尔蒙!"
sentenceClean = []
# method 1
remove_chars = '[·’!"\#$%&\'()#!()*+,-./:;<=>?\@,:?¥★、….>【】[]《》?“”‘’\[\\]^_`{|}~]+'
string1 = re.sub(remove_chars, "", sentence)
sentenceClean.append(string1)

# method 2
punct = str.maketrans({key:"" for key in string.punctuation})
# 这里的string中包含的标点符号不是很全
# string.punctuation = !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 都是英文字符下的标点
string2 = sentence.translate(punct)
sentenceClean.append(string2)

# method 3
string3 = "".join(re.findall(r'\b\w+\b',sentence))
# 正则表达式中\b可以简单理解为单词的边界(指的是字母数字和非字母数字的边界),\w表示字母数字下划线,
#'\b\w+\b'在这道题中就能做到匹配一个单词,re.findall是将全部的单词找出来
sentenceClean.append(string3)

# method 4 
string4 = re.sub('\W*', '', sentence) # 把非单词字符全部替换为空,恰好与\w相反
sentenceClean.append(string4)


print(sentence)
print(sentenceClean)
'''
以下的结果有一些细微的差别,可以自行对比查找下原因。
result:
+今天=是!2021!   年/8月?1,7日★.---《七夕节@》:让我*们出门(#@)去“感受”夏天的荷尔蒙!
['今天是2021   年8月17日七夕节让我们出门去感受夏天的荷尔蒙', 
'今天是!2021   年8月17日★《七夕节》:让我们出门()去“感受”夏天的荷尔蒙!', 
'今天是2021年8月17日七夕节让我们出门去感受夏天的荷尔蒙',
'今天是2021年8月17日七夕节让我们出门去感受夏天的荷尔蒙']
'''

2. 使用nltk

方法一
import nltk

s = "I can't do this now, because I'm so tired.  Please give me some time. @ sd  4 232"

words = nltk.word_tokenize(s)

words=[word.lower() for word in words if word.isalpha()]

print(words)

输出:

['i', 'ca', 'do', 'this', 'now', 'because', 'i', 'so', 'tired', 'please', 'give', 'me', 'some', 'time', 'sd']
方法二
from nltk.tokenize import RegexpTokenizer

tokenizer = RegexpTokenizer(r'\w+')
tokenizer.tokenize('Eighty-seven miles to go, yet.  Onward!')

输出:

['Eighty', 'seven', 'miles', 'to', 'go', 'yet', 'Onward']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值