NLP 8

[4] 포털 댓글 감성 분석_3. 결과 분석

감성 분석 모델링은 순환신경망, BERT 모델에서 완료했다. 모델링 흐름도는 다음과 같다. # 모델 성능 비교 정확도를 기준으로 모델링 결과를 단순히 비교하면 다음과 같다. 대부분의 자연어 처리 태스크에서 BERT 모델의 정확도가 다른 모델들을 능가하는 것으로 알려져 있는데, 해당 프로젝트에서 모델링을 진행한 결과는 그렇지 않았다. 다만, 프로젝트가 진행될수록 일정 관리에 어려움을 겪어 BERT 모델에서 에폭 수 조정, 파라미터 조정 등 사소한 부분을 시도해보지 못한 것이 많았다는 점을 감안해야 한다. # 모델 예측 차이 정확도 외에, 각 모델이 실제로 어떻게 댓글을 예측했는지 살펴 보았다. 두 모델의 예측 결과가 다르게 나타난 댓글은 총 13만 건 정도였는데, 샘플링을 통해 랜덤으로 추출하여 어떤 차이..

[4] 포털 댓글 감성 분석_2. BERT_2. 모델링 및 예측

앞 단에 이어 모델링을 진행한다. 사전학습된 BERT 모델에 transformers 라이브러리의 분류 클래스 층을 더했다. 20200420 현재, 가장 좋은 정확도를 보인 것은 15회 학습시켰을 때 0.8678 정도였다. # GPU 설정 Keras에서와 달리, PyTorch에서 GPU를 사용할 수 있는지 알아보는 과정이 필요하다. GPU를 사용할 수 있다면, GPU를 사용하도록 장치를 설정한다. (Colab Pro 기준 : Tesla P100-PCIE-16GB) device_name = tf.test.gpu_device_name() # GPU 디바이스 이름 검사 if device_name == '/device:GPU:0': print('Found GPU at: {}'.format(device_name))..

[4] 포털 댓글 감성 분석_2. BERT_1. 사전 작업

자연어 처리 분야에서 가장 성능이 좋다고 알려진 모델은 transformer network 기반 구글의 BERT 모델(참고)이다. NLP 감성분석의 기본으로서 순환신경망 모델을 구현해 보았으니, BERT 모델에 분류층을 적용하여 결과를 비교할 것이다. Pytorch로 쉽게 BERT를 적용할 수 있게 한 Hugging Face의 transformers 라이브러리를 활용하여 작업을 진행했다. 구현을 위해 Chris McCormick의 블로그를 참고했다. # 사용 라이브러리 Pytorch Tensorflow Keras Transformers : 한국어는 bert-base-multilingual-cased 모델에 사전훈련되어 있다. pandas, numpy, tqdm # 사전 작업 데이터를 로드하는 단계까지는 ..

[4] 포털 댓글 감성 분석_1. 순환신경망_3. Word2Vec 임베딩층

Keras Embedding 레이어가 아닌, 팀 데이터셋에 맞는 Word2Vec 임베딩 층을 사용해 임베딩 층으로 주입한다. 이전의 LSTM 모델에서 임베딩 층만 달라지기 때문에, 해당 부분만 기록한다. # Word2Vec Embedding 모든 데이터셋(커뮤니티, 포털 게시글 및 댓글)을 mecab 형태소 분석기를 사용해 형태소 단위로 분석하고, Word2Vec 임베딩을 진행했다. Gensim라이브러리의 Word2Vec 모델을 사용했고, skip-gram 방식을 적용했다. 최소 등장 빈도는 5, 윈도우 사이즈는 10으로 설정하였으며, 100차원으로 임베딩하였다. 임베딩 품질을 확인하기 위해 다음의 작업을 진행했다. 첫째, 몇 가지 키워드를 선정하여 코사인 유사도가 높은 단어들을 추출했다. 어느 정도 유..

[4] 포털 댓글 감성 분석_1. 순환신경망_2. 모델링 및 예측

앞 단에 이어 모델링을 진행한다. 긍정, 중립, 부정의 3 class로 각각의 텍스트를 분류하는 작업을 수행한다. RNN과 LSTM의 성능 차이를 보기 위해 초기에 RNN, LSTM 모델을 설계했으며, 시행착오를 통해 여러 층으로 구성된 LSTM, GRU 모델을 구성했다. 본격적으로 파라미터, 층을 조정한 것은 여러 층으로 구성된 LSTM, GRU 모델에 한정하였다. 그리고 20200418 현재, 가장 좋은 정확도를 보인 모델은 양방향 LSTM 층을 적용한 모델이다. 테스트 셋에 대한 정확도는 0.9056이다. 이 모델을 통해 포털 댓글에 대한 감성 분석 분류 작업을 수행한다. # 공통 사항 임베딩 : Keras의 Embedding 레이어 사용. 100차원 임베딩. 옵티마이저 : adam. loss 측정..

[4] 포털 댓글 감성 분석_1. 순환신경망_1. 사전 작업

앞 단에서 감성어 사전(0417 현재 기준 ver3), 긍/부정 라벨링된 커뮤니티 게시글 및 댓글 데이터셋을 구축했다. 감성분석 모델링을 수행할 준비를 마쳤다. 이제 네이버, 다음, 유튜브 등 포털에서 수집한 180만 건의 댓글 데이터를 대상으로 감성분석을 수행한다. 우선 자연어 처리에 많이 활용되는 딥러닝의 순환신경망 알고리즘을 사용한다. 그 중에서도 RNN 알고리즘을 개선/변형한 LSTM, GRU 알고리즘을 적용한다. (각 모델에 대한 공부는 StudyLog에서...) 본격적으로 모델을 설계하고 적용하기에 앞서, 문장 토큰화, 불용어 처리 등의 작업을 진행한다. 참고 : 「케라스 창시자에게 배우는 딥러닝」, 「딥러닝을 이용한 자연어 처리 입문」 # 사전 작업 # install KoNLPy ! pip3..

[3] 커뮤니티 글 데이터셋 라벨링

감성분석을 모델링을 진행하기에 앞서 긍정, 부정이 라벨링된 Train Set을 만들기로 했다. 감성어 사전을 바탕으로 형태소 분석을 진행한 뒤, 문장 내 형태소가 긍정어 사전에 있으면 점수에 +1을, 부정어 사전에 있으면 -1을 했고, 각 문장별로 점수가 0보다 작으면 부정(-1), 0보다 크면 긍정(1), 0이면 중립/unknown(0)으로 라벨링했다. 이번 단계의 작업을 통해 얻고자 하는 결과물은, 커뮤니티 게시글, 댓글을 문장 단위로 나누어 긍/부정 라벨링을 진행한 데이터셋이다. # 사용한 라이브러리 KoNLPy Pandas, Numpy Matplotlib.pyplot, Seaborn 더보기 Jupyter Notebook 및 윈도우 환경에서는 KoNLPy를 사용하기에 제약이 많다. 따라서 Googl..

[2] 감성어 사전 구축

팀원 간 역할 분담을 통해 포털 사이트 뉴스 플랫폼(네이버, 다음), 유튜브, 커뮤니티(MLBPARK, 루리웹닷컴, 보배드림, 클리앙)에서 약 180만 건의 댓글 데이터를 확보했다. 0408 회의 이후, 데이터 취합 및 전처리, 감성어 사전 구축으로 인원을 분배하여 최대 3일 간 작업을 진행하기로 하였다. 나는 후자의 작업을 맡았다. 해당 단계의 작업을 통해 얻고자 하는 결과물은, 문장별로 긍정/부정을 라벨링하기 위한 근거로서의, 형태소별로 구분된 긍정어/부정어 사전이다. # 데이터 인터넷 게시물, 댓글 데이터는 맞춤법이 제대로 지켜지지 않고, 신조어와 비속어가 많다. 우리 데이터의 특성을 고려한 감성어 사전을 구축해야 한다. 그러나 180만 건의 데이터를 모두 형태소 단위로 분석하고 확인하는 것은 불가..