본문 바로가기

Kaggle, Dacon, 공모전

NLP_Real_or_not

이번 포스트에서는 트위터에 올라온 게시글 데이터에 NLP를 적용해서 재난 재난일 때 와 그렇지 않을때 글의 내용이 어떻게 다른지 그 특징을 파악해 보겠습니다.

 

개략적인 프로세스는 이렇습니다.

-Cleaning data (html, url, emoji, stopwords).

-Tokenization.

-Lemmatization.

-Visualization.

-Predict the model.

 

Cleaning data

먼저 text에 있는 불필요한 요소들을 제거해보겠습니다.

Cleaning 되기 전 text.

재난을 암시하는 단어를 보다 정확히 추리기 위해 먼저 hashtag나 url, emoji등을 제거해주어야 하는데요. 이를 제거해주면,

Cleaning 후 text.

이렇게 깔끔해 집니다.!

 

Tokenization.

NLP에서 텍스트 자체를 feature로 사용할 수 없기 때문에 토큰화를 해서 단어를 하나 하나 쪼개는 작업이 필요합니다. python에서 사용 가능한 library가 많기 때문에 쉽게 할 수 있습니다.!

Tokenization(토큰화).

또한 단독으로 해석할 수 없는 불용어(a, you, the 등)를 제거해줍니다.

Lemmatization.

표제화(Lemmatization)는 단어의 가장 기본이 되는 기본형을 추출하는 것을 말합니다. 가령, am, are, is의 표제는 be가 되겠습니다.

 

 

Visualization.

재난 트위터와 일반 트위터 글 자수 차이

 

Non_disaster(좌), disaster(우)

- 재난이 아닌 트위터는 주로 개인이 글을 게시하며 다양한 단어가 섞여 있는 것을 확인할 수 있습니다.

- 재난과 관련된 단어에는 부정적인 단어들이 속속 등장합니다.(홍수, 불, 자살, 살인, new..는 뭘까요.??)

 

Prediction

표제화를 마친 feature를 main feature로 삼아 target을 예측하는 model을 만들어 보겠습니다.

먼저 main feature를 vectorization를 하고 준비된 test set도 마찬가지로 벡터화합니다. 

사용한 알고리즘은 RidgeClassifier입니다.