如何删除数据集中的表情符号

问题描述 投票:0回答:1

我正在使用 Kaggle 的灾难推文数据集进行 nlp。我正在清理数据并尝试删除表情符号。数据集太大了,我无法单独挑选每一个表情符号并将它们删除。有人知道如何一次性删除它们吗?

这是我尝试过但不起作用的代码

def remove_emoji(string):
    emoji_pattern = re.compile("["
                               u"\U0001F600-\U0001F64F"  # emoticons
                               u"\U0001F300-\U0001F5FF"  # symbols & pictographs
                               u"\U0001F680-\U0001F6FF"  # transport & map symbols
                               u"\U0001F1E0-\U0001F1FF"  # flags (iOS)
                               u"\U00002500-\U00002BEF"  # chinese char
                               u"\U00002702-\U000027B0"
                               u"\U00002702-\U000027B0"
                               u"\U000024C2-\U0001F251"
                               u"\U0001f926-\U0001f937"
                               u"\U00010000-\U0010ffff"
                               u"\u2640-\u2642"
                               u"\u2600-\u2B55"
                               u"\u200d"
                               u"\u23cf"
                               u"\u23e9"
                               u"\u231a"
                               u"\ufe0f"  # dingbats
                               u"\u3030"
                               "]+", flags=re.UNICODE)
    return emoji_pattern.sub(r'', string)
python data-cleaning
1个回答
0
投票

为了清除数据,您必须传递完整的数据帧,时间复杂度为 O(n),因此无论如何,您都将选择每一条推文并在其中添加表情符号。

--- 您的函数的稍微改进版本 ---

import re
import emoji

def remove_emoji(text):
    emoji_list = emoji.UNICODE_EMOJI.values()
    emoji_pattern = "[" + "".join(emoji_list) + "]+"
    return re.sub(emoji_pattern, '', text)

为了有效地清除数据,我们可以利用pandarallel库中的parallel_apply方法。该方法允许并行计算,从而显着加速。

from tqdm import tqdm
tqdm.pandas()

from pandarallel import pandarallel
pandarallel.initialize(progress_bar=True)

# assuming your dataframe is called 'df' and the column you want to remove emojis from is 'tweet'

df['tweet_filtered'] = df['tweet'].parallel_apply(remove_emoji)
© www.soinside.com 2019 - 2024. All rights reserved.