NLP文本预处理



我正在做一个关于亚马逊产品评论的小项目。在文本预处理过程中,自己无法从文本中处理以下内容。

问题1:用户写了一篇类似的评论

笔记本电脑一切都很好。:但有几点需要注意:

  1. 声音不是很好
  2. 摄像头正常

使用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)

最新更新