brunch

You can make anything
by writing

C.S.Lewis

by 박경아 Jul 14. 2023

ChatGPT로 고객리뷰 분석하기

감성분석 (Sentimental Analysis)

이야기했던가? ChatGPT의 기반이 되는 GPT-3는 자연어처리의 거의 모든 태스크를 수행할 수 있다. 엄청난 모델 크기에 대량의 언어 데이터셋을 학습한 탓에 문서 요약이나 질의 응답, 번역, 감성분석 등 거의 모든 자연어처리 태스크에서 준수한 성능을 보인다.


한편, 텍스트 데이터가 넘쳐나면서 고객 정보나 구매와 같은 정형화된 데이터 외에 고객들이 남긴 리뷰나 소셜 미디어 반응 등 비정형화된 텍스트 데이터를 활용하는 것이 중요해지고 있다. 이번 글에서는 ChatGPT를 활용해 고객 리뷰가 어떤 감정이나 의견을 담고 있는 지 감정분석을 하고 고객 리뷰에 대해 1차적인 제품 개선안을 작성하는 방법에 대해서 알아보도록 하자.



감성분석이란 무엇이고 어떻게 활용할 수 있나


감성분석이란 신문 기사나 고객 리뷰 등이 우리 회사나 제품에 긍정적인지 부정적인지를 분석하는 방법 중에 하나로 텍스트에 나타난 사람들의 태도, 의견, 성향과 같은 주관적인 데이터를 분석하는 자연어처리 태스크이다.


내가 이전 모바일 게임 마케팅을 할 때는 이번에 출시한 제품에 대한 고객들의 생각이 어떤지 혹은 이번 캠페인에 대한 고객들의 인지도나 생각은 어떤지 알 수 있는 방법이 없어 설문조사 등의 방법을 고려하기도 했었다. 하지만 온라인에서 댓글이나 리뷰를 남기는 것이 점차 활발해지고 이런 글들이 다른 고객들의 구매에 다시 영향을 미치면서 고객 리뷰 데이터의 중요성은 양과 그 가치 측면에서 커지고 있다. 또한 이들을 분석할 수 있는 방법 역시 발전하고 있다.


우선적으로는 댓글이나 리뷰를 주기적으로 체크하고, 평점을 매기는 요소가 있다면 평점 별로 리뷰를 모아서 체크해 볼 수 있을 것이다. 분석해야 하는 데이터 양이 방대하거나 주기적으로 인사이트를 도출해야 하는 경우 머신러닝을 활용할 수도 있다.


머신러닝의 경우 토크나이저를 활용해 텍스트를 정수로 변환하거나 TF-IDF (Term Frequency - Inverse Document Frequency) 등의 방법으로 단어들을 수치 벡터로 변환시켜 의사결정나무나 랜덤 포레스트, 로지스틱 리그레션 등의 분류 알고리즘에 학습시켜 부정, 긍정을 예측하도록 하는 방법이 있다.


딥러닝의 경우 역시 텍스트를 토큰화해 LSTM이나 GRU과 같은 혹은 BERT와 같은 PLM 모델에 학습시켜 긍정, 부정을 예측하도록 학습시킬 수 있는데, 머신러닝과 딥러닝을 비교해 보자면 아무래도 입력 데이터들의 관계까지 알아서 학습할 수 있는 딥러닝 예측 성능이 더 나을 것으로 예상된다.




ChatGPT를 활용한 감성분석


ChatGPT를 활용하면 이런 머신러닝, 딥러닝 모델을 별도로 학습시키지 않고도 감성 분석을 하는 것이 가능하다. 또한, 머신러닝이나 딥러닝 모델에게 지도학습을 하기 위해서는 해당 리뷰가 긍정 혹은 부정이라는 라벨(정답) 데이터가 있어야 하는데 ChatGPT로 하여금 1차적으로 해당 리뷰가 긍정인지, 부정인지 라벨을 생성하도록 하도록 하고 이를 사람이 검수하는 방법으로도 활용할 수 있다.


ChatGPT 웹 채팅창에서 고객 리뷰에 대한 감성분석을 진행해 보도록 하자. 데이터셋은 네이버 쇼핑에서 제품별 리뷰와 별점을 수집한 2020년 데이터를 활용했다. 참고로 한 가지 제품에 대한 리뷰가 아니라 쇼핑몰에서 여러가지 제품에 대한 후기를 크롤링한 데이터이고, 긍/부정으로 분류 하기 애매한 별점 (Rating) 3점에 해당하는 리뷰는 제외한 총 2만개의 데이터셋이다.


네이버 쇼핑 고객 리뷰 데이터


프롬프트는 지난 번 가이드에서 이야기한 것처럼 원하는 출력물의 형태('긍정' 또는 '부정')를 명확하게 정의했고 ```, """, < >, { }와 같은 delimiter를 활용해 입력 데이터를 구분하도록 했다. 프롬프트에 고객 리뷰 샘플을 넣으면 대답이 긍정과 부정 둘 중 하나로 대답하는 것을 볼 수 있다.

한 개 리뷰에 대한 감성분석


그렇다면 한 꺼번에 5개 리뷰에 대한 판별을 요청해보자. 역시 각 리뷰에 대해 고객의 감정이 긍정인지 부정인지 결과를 출력할 수 있다.

5개 리뷰에 대한 감성분석


각 리뷰에 대한 감정이 판단이 되었다면 구체적으로 어떤 긍정 단어, 부정의 단어들이 언급되고 있는 지 추출해 보자. 체크해야 하는 리뷰가 많거나 긴 리뷰를 다 볼 수 없을 때 장단점을 빠르게 파악할 수 있을 것이다. 또한, 여기서 추출한 긍, 부정 단어들을 가공해 워드 클라우드 등으로 시각화할 수도 있다.

고객리뷰에서 긍, 부정 단어 추출


리뷰에 대한 감정분석을 하고 긍정, 부정의 단어들을 추출했다면 제품 리뷰를 바탕으로 개선안을 작성해 보자. ChatGPT가 가끔 엉뚱한 말을 하기도 하지만 1차적인 개선 아이디어를 빨리 정리해 보기에 유용하다.

ChatGPT를 활용한 개선안 작성


여기까지는 ChatGPT의 웹 대화창에서 리뷰를 하나씩 혹은 몇 개씩 분석했지만 입력창에 한 번에 입력할 수 있는 입력 길이에는 제한이 있고 수동으로 나눠 한 번씩 진행하는 것에도 한계가 있다. 가능하다면 ChatGPT API와 파이썬을 활용해 대량의 데이터를 한 번에 처리하도록 해보자.


Open AI는 API를 사용할 수 있는 파이썬 예시문을 잘 제공하는 데 이를 활용해 그대로 원하는 결과물을 얻기 위한 프롬프트를 전달하고 for 문을 이용해 데이터 샘플을 하나씩 처리한 결과를 엑셀파일로 저장했다.

ChatGPT API를 활용한 감성분석


ChatGPT API를 사용해 각 리뷰에 대한 긍정 또는 부정의 대답을 하나씩 생성하는 경우 하나의 데이터 샘플당 1~2초가 걸렸다. 각 리뷰에 대해 개선안을 작성하는 경우는 샘플당 약 10초 정도의 시간이 걸린다. 2만 개의 데이터셋이고 1초씩 걸리는 태스크의 경우 2만 *1초=2만초=5시간이 걸리고, 10초가 걸린다면 50시간으로 시간이 상당히 많이 걸려 윗부분 200개의 데이터로만 진행해 보기로 했다.


또한, for 문을 돌리는 동안 ChatGPT API에 오류가 생기는 경우가 많아 분석이 중단되는 경우가 많았다. ChatGPT 유료 버전을 사용하면 좀 덜 끊길까? 무료 버전이니 오류가 꽤 많이 뜬다.. 특히 사용자가 많이 몰리는 시간대 같은 경우는 런타임 에러나 서비스가 Unavailable하다는 오류 메시지가 많이 뜬다. 결국 주요 오류 유형이 발생했을 때 30초 있다가 다시 시도하라는 소스코드를 찾아 해결했다.


ChatGPT API와 파이썬으로 감성분석과 관련 키워드 분석, 그리고 제품 리뷰에 대한 1차 개선안까지 작성한 코드는 다음 코랩 파일에서 확인할 수 있다.


ChatGPT로 텍스트 분석을 하는 경우 장점은 명확하다. 요약이나 분류는 물론 글쓰기 등 여러가지 태스크를 수행할 수 있고 정확도도 괜찮다는 점이다. 머신러닝이나 딥러닝의 경우 감성분석의 정확도가 주로 70~90% 정도라면, ChatGPT의 경우 별점 4~5점 긍정, 1~2점을 부정으로 보고 점수를 체크해 본 바 위 데이터의 경우 정확도가 90% 정도였다.


단점으로는 대량으로 데이터를 처리하기 위해 ChatGPT API를 이용하는 경우 무료 계정인 경우 오류를 많이 처리할 수 있다는 것이고, 생성에 시간이 많이 걸릴 수도 있다는 점이다. 특히 생성하고자 하는 답변이 길어질 수록 시간이 무지막지하게 걸릴 수 있는데 이는 머신러닝이나 딥러닝으로 별도 학습된 모델도 마찬가지일 것이다. 



* 새로운 책 출간 소식

이번 글에서 소개한 ChatGPT로 고객 리뷰를 분석하기를 주제로 감정 분석부터 주요 키워드를 워드 클라우드로 시각화하는 등 고객리뷰를 좀 더 구체적으로 분석하고, 챗GPT를 활용한 다양한 데이터 분석 사례와 구체적인 가이드를 담은 제 책 '챗GPT로 마케팅 데이터 분석하기: 고객 리뷰 분석에서 매출 예측까지'가 출간되었습니다! 비개발자도 따라 할 수 있는 가이드로 구성되어 있으니 관심 있는 분들은 한 번 살펴봐 주세요!

https://product.kyobobook.co.kr/detail/S000214577163




                    

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari