Skip to content

自然言語処理における前処理を行う関数を作ってみた

YutaUra edited this page Mar 20, 2021 · 2 revisions

はじめに

春からデータサイエンス学部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

pythonで絵文字を駆逐する

おわりに

フィードバックお待ちしております!