Jigsaw Rate Severity of Toxic Comments(絵文字削除)
前処理その1:絵文字の処理
まずは絵文字を含むテキストを判定。含まれた絵文字を削除するかどうかはまた判断。
参考サイト
SNSテキストから顔文字・絵文字・URLを抽出する - Qiita
やってみた
まずは絵文字を含むテキストを抽出。テキストをみてみたところ、絵文字が攻撃的な意味を直接もつものはそれほどなかった💩。👎とかあんのかなと思ってたけど。なので、絵文字を削除しても情報は抜けないと思うので削除。for文でひとつずつ消したけど、もうちょっとうまくできないものかねえ。
import emoji import unicodedata def emoji_detect(text): def extract_emoji(words): return [w for w in words if w in emoji.UNICODE_EMOJI_ENGLISH] text = unicodedata.normalize('NFKC', text) # NFKC正規化 emojis = extract_emoji(text) return emojis df["text_emoji"] = df["text"].apply(lambda x: emoji_detect(x)) df["emoji_check"] = df["text_emoji"].apply(lambda x: True if len(x) != 0 else False) tmp_emoji = df.loc[df['emoji_check']].copy() tmp_NOT_emoji = df.loc[~df["emoji_check"]].copy() emoji_list = [] for i in range(len(tmp_emoji.text_emoji)): emoji_list.extend(tmp_emoji.text_emoji.iloc[i]) emoji_list = list(set(emoji_list)) for i in emoji_list: tmp_emoji["text"] = tmp_emoji["text"].str.replace(i, "") print(tmp_emoji.shape) # (1133, 4) print(tmp_NOT_emoji.shape) # (158438, 4) print(emoji_list) # ['♠', '☎', '♨', '☀' '✒', '▶', '🎄',... df = pd.concat([tmp_emoji, tmp_NOT_emoji], axis= 0, sort= True).loc[:, ["text", "y"]].copy() del tmp_emoji, tmp_NOT_emoji