[Aiffel] 아이펠 19일차 개념 정리 및 회고

Gongsam·2022년 1월 20일
0

1. 딥러닝 개념 정리

1) 감성 분석(Sentiment Analysis, Opinion mining)

출처
1. 의미

  • 텍스트에 나타난 긍정 / 부정 감정을 판별, 이를 정량화하는 작업을 의미함
  • 단순히 긍/부정을 판단하지 않고 대상의 속성을 추출하거나 개체를 특정하며, 사람들의 감정, 감성, 입장, 태도 등을 분석함.
  • 분류 방법: 긍/부정, 긍/부정 + 중립, 10단계 등
  1. 특징
  • 의견을 구성하는 기본 요소: 대상 + 감성 표현
  • 개체: 감성 표현의 대상
  1. 텍스트의 특성
  • 데이터의 구조가 희소함
  • 차원의 수가 큼
  • 전통적인 지도학습 기법을 적용할 경우 효율성과 변수 추출과정이 중요
    • 워드 임베딩
      • 단어의 특성을 저차원 상의 실수 벡터값으로 나타내는 방법. 변수 추출과 같은 과정을 피할 수 있다.
      • 의미가 유사할 경우 벡터 공간상에 가깝게 배치 해 단어들 간의 어휘적 관계를 벡터로 표현함.
      • 예) Word2vec
  1. 접근법
  • 기계학습 기반
  • 감성사전 기반
  1. 단계: 추출 - 범주화 및 분류 - 예측
  • 데이터 수집
  • 주관성 탐지: 수집된 데이터로부터 작성자의 주관이 드러난 부분을 필터링
  • 분류: 주관성의 극성, 정도를 측정하고 분류하는 과정
  1. 예시
  • 스니커즈: 배고플 때 넌 네가 아니야 - 식사 전 부정적인 감정표현이 늘어난다는 것을 분석을 통해 알게 됨. 사람들이 부정적인 감정을 표출하는 경우가 늘어날 때 높은 할인율을 적용하는 방식으로 마케팅을 진행.
  1. 소셜 미디어: 평가, 태도, 감성과 같은 주관적인 속성이 의사결정에 있어 중요한 영향을 끼치는 와중에 raw data를 얻을 수 있는 장.

2) 영화 리뷰 텍스트 감성분석하기

  1. Embedding Layer
  • 주의해야할 점
    • 인풋이 되는 문장 벡터는 길이가 일정해야함: tf.keras.preprocessing.sequence.pad_sequences 이용해 길이 맞출 수 있음
  1. RNN(Recurrent Neural Network)
  • 텍스트 데이터를 다루는 데에 주로 사용되는 딥러닝 모델
  • 시퀀스 데이터(입력이 시간 축을 따라 발생하는 데이터)를 처리하기에 최적: 시간의 흐름에 따라 새롭게 입력되는 데이터에 근거해 변하는 현재 상태를 묘사하는 state machine으로 설계됨
  • 기존의 결과가 다음에 영향을 끼칠 수 있도록, 이전의 결과가 영향을 미친다.
  1. CNN(Convolution Neural Network)
  • 1-D CNN: 7단어 이내에 발견되는 특징을 추출, 이를 문장으로 분류하는 방식으로 사용됨
  • RNN보다 병렬처리가 효율적, 학습속도가 더 빠름
  1. 사용한 메소드 정리
  • pandas
# 중복값 제거
# inplace=False: 값 자체를 바꾸지 않고 copy를 반환
train_data.drop_duplicates(subset=['document'], inplace=True)

# NaN 결측치 제거
# how='any': 디폴트. NaN 값이 하나라도 포함되어 있으면 해당 행 or 열을 삭제
train_data = train_data.dropna(how = 'any')
  • numpy
# X_train이 2차원 list인 상태
# concatenate에 넘겨주면 2차원 list를 1차원 배열로 바꿔줌
# 마지막으로 tolist를 해서 다시 list 형태로 변환
words = np.concatenate(X_train).tolist()
  • 모델 학습 시
    verbose: 학습되는 모습을 보여줌
    epoch: 전체 데이터를 학습하는 수

  • counter

# most_common(n): 가장 많은 순으로 배열. n개의 최빈값 반환
counter = counter.most_common(10000-4)
  1. 사용한 모델
  • RNN
  • CNN

✔✔✔🤔 오류

Negative dimension size caused by subtracting 7 from 6 for ...

모델을 생성할 때 Conv1D()에 padding='same'을 설정해서 해결

'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

load_word2vec_format 사용했을 때 발생 load로 바꿔줌

pickle data was truncated

파일이 제대로 업로드 되지 않아 발생

  • GlobalMaxPooling

2. 회고

처음으로 시간 꽉 채워서 했다.. 예상치 못한 곳에서 오류가 나서 찾느라고 시간이 정말 잘 갔다. 그리고 목표값 넘으려고 계속 시도하다보니까 시간이 이렇게 됐다. 그래도 결국 목표값은 넘겨서 다행이라고 생각한다.
예전에 어플 리뷰를 크롤링해서 워드 클라우드로 만든 적 있어서 그런 내용일까 기대했는데 많이 달랐다... 크롤링부터 해서 했어도 재밌을 거 같긴 한데 그러면 감성 분석이 안되겠구나 싶기도 하다. 어쨌든 감성 분석이라는 것도 알게 되고 유익한 시간이었다.

profile
🐬 파이썬 / 인공지능 / 머신러닝

0개의 댓글