2015년 10월 17일 토요일

스팸 필터링 구현하기

항상 가까운 곳에서 함께하던 스팸(SPAM)을 필터링 하기 위한, 정통적인 방식과 기계학습을 응용한 최근 방식을 소개한다.

참고 논문 :
Classifying Unsolicited Bulk Email (UBE) using Python Machine Learning Techniques

논문에서 다루는 전통적인 방식과 기계학습 응용 방식의 필터링에 자연어 처리 (NLP) 기법을 추가했다.

계념도는 다음과 같다.
1. 단어 필터
 - 전통적인 방식의 필터링이다.
 - 스팸의 근거가 되는 단어/패턴/속성 사전에 대한 관리가 필요하다.
2. 형태소 필터
 - 자연어 처리 (NLP)의 형태소 문법 패턴을 이용했다.
 - 스팸의 근거가 되는 문법 패턴을 통해 걸러 낸다.
3. 의미 필터
 - 기계학습을 이용한 방식이다.
 - 스팸 자료를 학습 데이터로 모델을 만들어 분류한다.

* 팁
 - 필터 단어나 문법 패턴은 실제 스팸 자료를 가공해서 상위 빈도를 참고한다.
 - 한글이 영어와 달라 학습 자료가 적을 경우는 정확도가 낮음으로, NLP를 통해 의미를 가지는 형태소 위주로 전 처리 후 사용한다.
 - 학습 모델 생성 시, STOPWORD와 TF-IDF는 정확도를 높여주는 좋은 친구다.

본문관련 파이톤 코드는 다음을 참고하자.
https://bitbucket.org/snippets/juhoon26/LLRgj