DA Study/TIL

[TIL] 감정 분석 - 토큰별 Polarity 값 추가하기 #python3 #FC온라인

harrym8n 2025. 1. 4. 22:44

python3 - FC online 개인 프로젝트 #FC온라인 인벤 선수 리뷰 감정 분석
👉 프로젝트 Github 바로가기

Bad 코드 (시간이 지나치게 오래 걸림)

# 토큰별 점수 산출하여 새로운 데이터 프레임으로 저장
sentiment_df = pd.DataFrame(columns=('comment','sentiment'))

for idx, token in enumerate(cleaned_token1): 
    sentiment = int(word_dic.get(token,0))
    sentiment_df.loc[idx] = [token, sentiment]

Good 코드 (Inner Join 형식으로 Merge 하여 효율적인 연산)

# 최종 토큰, 카운트, word_root, polarity 데이터 프레임으로 merge
merge_df = pd.merge(count_df, word_df, how='left', on='word')

# 결측치 처리
merge_df['polarity'] = merge_df['polarity'].fillna(0)

[ 문제 상황 ]

  • WordCloud 시각화 및 추천 점수를 산출하기 위해 클렌징된 토큰에 Lexicon 사전에 있는 단어들과 비교하여 감정 점수를 추가해야한다.
  • 반복문을 활용하면 활용하는 Lexicon 사전 안의 단어 수 및 클렌징된 토큰 모두를 검토하며 데이터 프레임을 생성하기 떄문에 시간이 지나치게 오래걸려 메모리가 초과된다.

[ 해결 ]

  • 단어(word) 컬럼을 key로 클렌징된 토큰(+ 단어 빈도 수 컬럼) dfLexicon 사전 df를 merge한다.

[ 회고 ]

  • 반복문을 통하여 단어와 감정 점수값 데이터 프레임을 생성하는 방법이 주로 사용되기에 merge를 통해 감정 점수값을 더해주면 문제가 되는 부분이 있는지 추가 리서치가 필요하다.
  • 똑같은 결과를 도출해내더라도, 연산 비용을 낮춰 빠른 작업을 하는 것이 당연히 좋다는 것을 깨달았다.