こんにちは、ミナピピン(@python_mllover)です。
今回はTwitterAPIで取得したツイートデータからメンションやURLを除去して自然言語処理を行う前処理のコードに書いたのでメモとして残しておきます。
Pythonではreモジュールを用いることで、文字列から正規表現による抽出・置換が可能なので、基本的にはreモジュールで全て事足ります。
ツイートのリツイートやメンション・URLを正規表現で除去する
def preprocess_wordcloud(doc):
# 数字を0に
doc = re.sub(r'\d+', '0', doc)
# メンション除去
doc = re.sub(r"@(\w+) ", "", doc)
# url除去
doc = re.sub(r"http\S+", "", doc)
#リツイートを消す
doc = re.sub(r"(^RT.*)", "", doc, flags=re.MULTILINE | re.DOTALL)
# 大文字・小文字変換
doc = doc.lower()
#絵文字を消す
emoji_pattern = re.compile("["
u"\U0001F600-\U0001F64F"
u"\U0001F300-\U0001F5FF"
u"\U0001F680-\U0001F6FF"
u"\U0001F1E0-\U0001F1FF"
"]+", flags=re.UNICODE)
doc = emoji_pattern.sub("", doc)
# 不要記号削除
pattern = '[!"#$%&\'\\\\()*+,-./:;<=>?@[\\]^_`{|}~「」〔〕“”◇ᴗ●↓→♪★⊂⊃※△□◎〈〉『』【】&*・()$#@。、?!`+¥%]'
doc = re.sub(pattern, ' ', doc)
return doc
<使用例1>
sample_text = '@test_2345 【重大告知】Yahoo支店では新型コロナウィルス感染症の予防・対策の一環として\n11/2営業時間および買取業務時間を添付画像の通りに変更させて頂きます。\nお客様にはご迷惑をおかけして申し訳ございません。\nご理解ご協力の程、何卒よろしくお願い申し上げます。 https://t.co/qmqlryAlW0' preprocess_wordcloud(sample_text)
<結果>
' 重大告知 yahoo支店では新型コロナウィルス感染症の予防 対策の一環として\n0 0営業時間および買取業務時間を添付画像の通りに変更させて頂きます \nお客様にはご迷惑をおかけして申し訳ございません \nご理解ご協力の程 何卒よろしくお願い申し上げます '
<使用例2>
sample_rttext = 'RT @test_2345 【重大告知】Yahoo支店では新型コロナウィルス感染症の予防・対策の一環として\n11/2営業時間および買取業務時間を添付画像の通りに変更させて頂きます。\nお客様にはご迷惑をおかけして申し訳ございません。\nご理解ご協力の程、何卒よろしくお願い申し上げます。 https://t.co/qmqlryAlW0' preprocess_wordcloud(sample_text)
<結果>
'' #リツイートは削除される
参考:https://teratail.com/questions/206439
関連記事:【Python】ウマ娘のアプリレビューをスクレイピングしてワードクラウドを作ってみた
コメント