[자연어처리] LSTM으로 감성 분석하기

2022. 4. 5. 14:11·캡스톤/자연어처리

[자연어처리] 댓글 데이터 전처리 (2) 에서 이어서 갑시다.

 

 

임포트 해주고,

 

from tensorflow.keras.layers import Embedding, Dense, LSTM
from tensorflow.keras.models import Sequential
from tensorflow.keras.models import load_model
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint

 

학습시키는데...

 

embedding_dim = 100
hidden_units = 128

model = Sequential()
model.add(Embedding(total_cnt, embedding_dim))
model.add(LSTM(hidden_units))
model.add(Dense(1, activation='sigmoid'))

es = EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=4)
mc = ModelCheckpoint('best_model.h5', monitor='val_acc', mode='max', verbose=1, save_best_only=True)

model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])
history = model.fit(df_train, y_train, epochs=15, callbacks=[es, mc], batch_size=64, validation_split=0.2)

 

아 이건 진짜 어렵네. 일단 책에 있는 코드 그대로 사용하고, 테스트 해보자.

 

 

보니까 Epoch 9 에 조금 일찍 끝났다는 것 같은데..

 

감성 분석 코드를 적어보면,

 

def sentiment_predict(new_sentence):
  new_sentence = re.sub(r'[^ㄱ-ㅎㅏ-ㅣ가-힣 ]','', new_sentence)
  new_sentence = okt.morphs(new_sentence, stem=True) # 토큰화
  new_sentence = [word for word in new_sentence if not word in stopwords] # 불용어 제거
  encoded = tokenizer.texts_to_sequences([new_sentence]) # 정수 인코딩
  pad_new = pad_sequences(encoded, maxlen = max_len) # 패딩
  score = float(loaded_model.predict(pad_new)) # 예측
  if(score > 0.5):
    print("{:.2f}% 확률로 긍정적인 댓글입니다.\n".format(score * 100))
  else:
    print("{:.2f}% 확률로 부정적인 댓글입니다.\n".format((1 - score) * 100))

 

테스트를 해보면...

 

 

52퍼가 아니라 거의 한 90퍼는 나와야할텐데..

 

사실 따지고 보면 라벨링한 댓글의 갯수가 400개 밖에 안 되서 어쩔수가 없긴 하다. 다시 라벨링을 해야겠다.

'캡스톤 > 자연어처리' 카테고리의 다른 글

[자연어처리] 댓글 데이터 전처리 (2)  (0) 2022.04.05
[자연어처리] No module named 'konlpy' 에러  (0) 2022.04.05
[자연어처리] 댓글 데이터 전처리 (1)  (0) 2022.04.04
[자연어처리] 댓글 데이터 엑셀에 저장하기  (0) 2022.04.03
[자연어처리] 유튜브 API 를 사용해 영상 댓글 데이터 가져오기  (0) 2022.04.03
'캡스톤/자연어처리' 카테고리의 다른 글
  • [자연어처리] 댓글 데이터 전처리 (2)
  • [자연어처리] No module named 'konlpy' 에러
  • [자연어처리] 댓글 데이터 전처리 (1)
  • [자연어처리] 댓글 데이터 엑셀에 저장하기
오도형석
오도형석
  • 오도형석
    형석이의 성장일기
    오도형석
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • MSA 모니터링 서비스
        • DB
      • 스파르타 코딩클럽
        • SQL
        • Spring
      • 백엔드
        • Internet
        • Java
        • DB
      • 캡스톤
        • Django
        • 자연어처리
      • Spring
        • JPA
        • MSA
      • ETC
        • ERROR
      • 개발 일기 N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
오도형석
[자연어처리] LSTM으로 감성 분석하기
상단으로

티스토리툴바