我是 NLP 的新手,并且有一个数据集,其中包含一堆(社交媒体)消息,我想在这些消息上尝试一些方法,例如潜在 Dirichlet 分配 (LDA)。首先,我需要清理标点符号、表情符号等的数据。我不确定如何以最有效和最准确的方式执行此操作。我现在的代码是这样的:
import pandas as pd
import re
class TopicModel():
def __init__(self, data_path = "data.csv"):
self.data_path = data_path
self.data = pd.read_csv(self.data_path, low_memory=False)
def clean_data(self):
self.remove_message_na()
self.remove_emojis()
self.remove_punctuation_and_lower()
self.remove_url()
self.remove_empty_messages()
def remove_message_na(self):
self.data = self.data.loc[~pd.isna(self.data['message'])]
def remove_emojis(self):
self.data['message'] = self.data['message'].str.encode("ascii", "ignore").str.decode("utf8")
def remove_punctuation_and_lower(self):
p = re.compile('''[!#?,.:";]''')
self.data['cleaned_data'] = [p.sub("", ii).lower() for ii in self.data['message'].tolist()]
def remove_empty_messages(self):
self.data = self.data.loc[self.data['cleaned_data'] != ""]
def remove_url(self):
self.data = [re.sub(r"http\S+", "", ii) for ii in self.data['message'].tolist()]
我不想删除缩略语,这就是我'从标点符号列表中省略的原因,但我认为最理想的情况是,将缩略词重新格式化为两个单独的单词。在处理社交媒体数据时,我还想知道其他标点符号,例如#. 我知道这个问题有点笼统,但我想知道在执行主题分析、情绪分析等之前是否有一个好的 python 库来执行我想要的那种数据清理操作。我也想了解哪些库可以有效地对 pandas 数据框执行这些数据清理操作。