自然言語処理における前処理を行う関数を作ってみた - ycu-engine/community GitHub Wiki
春からデータサイエンス学部4年、越仲研究室の小林です。専門は自然言語処理で、Twitterやレビューデータの解析に興味があります。
ちょうどEngineのデータ分析チームではkaggleのNatural Language Processing with Disaster Tweetsに 挑戦中で、自分の専門分野なので気合が入っております。
言語処理を行う際にとても重要になるのが前処理です。(機械学習全般に言えることだと思いますが)
例えば学校行きたくない😔😔
というテキストがあった際に😔😔
の部分の絵文字はノイズとなります。
また#春から横市
などに見られるハッシュタグ#も解析上は不要です。
このような点を踏まえて日本語のデータを前処理する関数を作ってみました。
なお英語の前処理をする際は適宜、関数の一部をコメントアウトするなどして使ってみてください。
import re
import string
import emoji
def data_cleaning(text):
"""
前処理を行う関数
具体的にはURL、HTML、句読点、絵文字の除去を行う
"""
# URL
url = re.compile(r'https?://\S+|www\.\S+')
text = url.sub('', text)
# HTML
html = re.compile(r'<.*?>')
text = html.sub('', text)
# 句読点
text = text.translate(str.maketrans({'、' : ',', '・' : 'と', '。' : '.', '!':'!', '?':'?'}))
table = str.maketrans('', '', string.punctuation)
text = text.translate(table)
# 絵文字
return ''.join(c for c in text if c not in emoji.UNICODE_EMOJI['en'])
emojiは!pip install emoji
でインストールする必要があります。
PyTorch LSTM with Disaster Tweets
フィードバックお待ちしております!