1.자연어처리란
Natural Language Process (NLP).
음성 인식, 내용 요약, 번역, 사용자의 감성 분석, 텍스트 분류 작업(스팸 메일 분류, 뉴스 기사 카테고리 분류), 질의 응답 시스템, 챗봇.. 등.
말 그대로 언어를 처리하는 것을 의미한다.
이전에는 symbolic한 방법론(사람이 직접 규칙&문법 정의)을 사용했었지만, 1990~부터는 statistical한 방법론들이 유행했고, corpus-based로 규칙을 자동으로 학습하는 방법들이 많이 나왔다(machine learning).
현재는 많은 분야가 그렇지만 NLP또한 Neural한 방법론(딥러닝)이 가장 좋은 효과를 내는 정론이 되었다. 하지만 stastic한 방법론 아직까지 필요한데, 전처리 / 후처리에는 머신러닝 기법이 많이 사용되는 편이다. (one-hot 인코딩 / count-based statistical model 등..)
2. google colab 및 Anaconda
Anaconda : 필요한 패키지들을 모아놓은 파이썬 배포판
Colab : jupyter notebook형식과 유사한데, 인터넷에서 실습환경 사용 가능하다.
3. NLP에 사용되는 프레임워크 및 라이브러리들
(1) Tensorflow
- 텐서라는 자료형을 사용해 머신러닝을 코드단에서 간결하게 표현할 수 있도록 도와주는 end to end 플랫폼. 머신러닝 모델을 쉽게 빌드/배포 가능하도록 한다. 파이썬으로 제공되지만 실제로는 수학연산에 적용되는 언어는 C++이고, 파이썬은 트래픽을 전달하거나 연결할때 적용된다.
(2) Keras
- tf에 대한 추상화 API 제공. tf 코드 더 간결하게 이용할 수 있다. 백엔드로 tf를 쓴다는 개념으로, 오류가 발생할경우 keras 자체문제인지, backend쪽 문제인지 정확히 파악이 어렵다.
(3) Gensim
- 머신 러닝을 사용하여 토픽 모델링과 자연어 처리 등을 수행할 수 있게 해주는 오픈 소스 라이브러리
(4) Scikit-learn
- 머신러닝 라이브러리. Naïve Bayes Classification/ SVM 등 알고리즘들이 구현되어있다. tf와 차이는 scikit-learn은 딥러닝이나 강화학습은 제공하지 않는 머신러닝 전용 라이브러리라는점.
(5) NLTK
(6) KoNLPy
- 한국어 자연어 처리를 위한 형태소 분석 패키지.
자바로 되어있는지 Jdk와 JPype 설치가 필수라고 한다.(JPype : java라이브러리를 python을이용해 사용할 수 있게 해준다)
(7) Pandas
- 데이터처리를 위한 판다스 라이브러리. series / dataframe 자료형 이용. 데이터를 다루는 분야에서 numpy, matplotlib,seaborn 과 묶여서 굉장히 많이 쓰인다
(8) Numpy
- 수치데이터를 다루는 파이썬 패키지. numpy array를 이용한다.
(9) Matplotlib
4. machine learning workflow
딥러닝도 머신러닝에 포함되는 개념으로(엄밀하게는) 비슷한 workflow 따른다. 일반적으로 알고있는 플로우와 같은데, nlp에서는 preprocessing이 결측치 제거 등과 같은 부분보다도 텍스트를 좀더 깊게 다룬다. 국문학적인 지식 필요(어간/조사/형태소/어근 등.. )
(1)수집
- machine의 input 학습 데이터 -> 말뭉치(corpus)들 수집.
(현재 프로젝트에서는 사내 데이터 + 수집 크롤러 서버를 이용해 원문 수집)
(2)점검및탐색
(3)전처리 및 정제
- preprocessing / Cleaning
토큰화, 정제, 정규화, 불용어제거 등 단계 포함.
(4)모델링 및 훈련
- 모델링된 머신에 data input으로 train.
(5)평가
- test set으로 train set 훈련결과 평가.
(6)배포