我正在做一个关于亚马逊产品评论的小项目。在文本预处理过程中,自己无法从文本中处理以下内容。
问题1:用户写了一篇类似的评论
笔记本电脑一切都很好。:但有几点需要注意:
- 声音不是很好
- 摄像头正常
使用re.sub
表达式处理此文本后;lemmatization仍然是点号与冒号一起出现在输出中。
text = re.sub('[^a-zA-Z]', ' ', X['long_review'][i])
text = re.sub(r'[[0-9]*]', ' ', X['long_review'][i])
text = re.sub(r's+', ' ', X['long_review'][i])
text = re.sub(r'd', ' ', X['long_review'][i])
## below code to remove the emoji in the sentences
text = re.sub('[(U0001F600-U0001F92F|U0001F300-U0001F5FF|U0001F680-U0001F6FF|U0001F190-U0001F1FF|U00002702-U000027B0|U0001F926-U0001FA9F|u200d|u2640-u2642|u2600-u2B55|u23cf|u23e9|u231a|ufe0f)]+', '' , X['long_review'][i])
输出如下:
笔记本电脑不错。:要点说明:1。听起来不错。
问题2:输入用户评论
酷睿i7在60k中的第10代!你在开玩笑吗!
输出:
core i7第10代60k!开玩笑!
处理这些类型的文本所需的帮助
您需要将更新后的文本传递给next sub((函数,以便与上一次更新一起进行更新。
目前,每次向sub((传递新值时,'[^a-zA-Z]'
都会从字符串中删除点或数字,然后将更新后的值传递给下一个处理函数。
text = re.sub('[^a-zA-Z]', ' ', X['long_review'][i])
text = re.sub(r'[[0-9]*]', ' ', text)
text = re.sub(r's+', ' ', text)
text = re.sub(r'd', ' ', text)
## below code to remove the emoji in the sentences
text = re.sub('[(U0001F600-U0001F92F|U0001F300-U0001F5FF|U0001F680-U0001F6FF|U0001F190-U0001F1FF|U00002702-U000027B0|U0001F926-U0001FA9F|u200d|u2640-u2642|u2600-u2B55|u23cf|u23e9|u231a|ufe0f)]+', '' , text)