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로
클렌징된 토큰(+ 단어 빈도 수 컬럼) df
에Lexicon 사전 df
를 merge한다.
[ 회고 ]
- 반복문을 통하여 단어와 감정 점수값 데이터 프레임을 생성하는 방법이 주로 사용되기에 merge를 통해 감정 점수값을 더해주면 문제가 되는 부분이 있는지 추가 리서치가 필요하다.
- 똑같은 결과를 도출해내더라도, 연산 비용을 낮춰 빠른 작업을 하는 것이 당연히 좋다는 것을 깨달았다.
'DA Study > TIL' 카테고리의 다른 글
[TIL] apply()와 lambda 함수의 활용 # python # 부트캠프 (0) | 2025.01.11 |
---|---|
[TIL] Window함수로 Median 구하기 # MySQL # SQL (1) | 2025.01.06 |
[TIL] 조건 비교를 위한 IN / EXISTS 구문 활용(서브쿼리) # MySQL # SQL (2) | 2025.01.03 |
[TIL] 리스트 컴프리헨션(List Comprehension) #python3 #FConline (0) | 2025.01.02 |
[TIL] 비트연산자를 활용한 이진수 비교 # MYSQL # SQL (1) | 2025.01.01 |