본문 바로가기
생성AI(LLM)

텍스트 데이터 분석(Text Analysis)의 전과정에 챗GPT를 활용(프롬프트 원문 공개)

by 카이로스의시간 2024. 1. 15.

한 달에 20달러를 내며 챗GPT Plus(플러스) 플랜을 사용 중이신 분이라면, 챗GPT 4에 탑재된 ‘고급 데이터 분석’ 모드를 사용할 수 있습니다.
 
데이터의 전처리에서 시각화까지 전과정에서 활용할 수 있다는 말을 들어 그 성능을 테스트해봤습니다.
 
챗GPT를 데이터 분석에 활용하고자 하는 분들이 프롬프트 작성(엔지니어링)에 참고할 만한 내용들로 정리했습니다.
 
챗GPT 플러스 플랜 구독한 뒤로, 뻔질나게 챗GPT에게 일을 시키고 있습니다. 그러면서 프롬프트를 어떻게 작성해야 내가 목적한 바, 최고의 효과를 낼 수 있는지 계속 공부하는 중입니다.
 

 


아 참, 제가 챗GPT에게 맡길 데이터 분석 방법론은 '텍스트 데이터 분석(Text analysis)'입니다.
 

Raw Data

카카오톡 Pan-cancer 환우회 대화 내용을 추출한 텍스트(.txt) 파일
 
 

분석 목표

빈번하게 출현하는 단어를 정리. 이를 통해 환자와 보호자의 구체적인 요구사항을 발견. 그리고 챗GPT 이 녀석이 데이터 분석에 어디까지 활용될 수 있을지 탐색

 

분석 과정

분석을 수행하며 작성한 실제 프롬프트와 챗GPT답변을 정리
▼ 챗GPT가 읽고 분석할 수 있는 원시 데이터(raw data)크기는 1MB 이내라고 합니다.

 
 
▼ 사전에 원시 데이터의 형식을 확인한 후, 전처리 방향성을 수립했습니다. 그 후, 수립한 방향성대로 데이터를 전처리해줄 것을 챗GPT에게 부탁했습니다. 최종적으로 내주었으면 하는 결과물의 형태(ex. 워드 클라우드)도 최초 프롬프트에 함께 기재했습니다.

[프롬프트 원문]
파일 업로드 : 카카오톡 대화 내용을 추출한 텍스트(txt) 파일


업로드한 파일은 카카오톡 채팅 파일입니다. 아래 순서에 따라 차근차근 분석을 수행해 주세요:

1.     txt 파일의 각 행은 "[{nickname}] [HH:mm] {대화내용}"의 형식으로 구성돼 있습니다. 분석에 참고하세요. {nickname} = "방장봇"인 행은 분석에 사용하지 않습니다.

2.     txt 파일에서 "]"이 포함된 행만 추출합니다.

3.     "]" 을 기준으로 문자열을 나누고, 각 행의 마지막 "]" 다음에 오는 문자열을 대화 내용으로 간주합니다.

4.     띄어쓰기를 기준으로 대화내용을 단어로 분류합니다.

5.     단어 중에서 ":"와 "들어왔습니다", "나갔습니다", "저는"은 제외합니다.

6.     특수문자나 한글 자음만 있는 단어도 제외합니다.

7.     단어 중에서 1글자로 된 것은 제외합니다.

8.     가장 많이 등장하는 단어로 워드 클라우드를 생성합니다.

 
 
▼ 챗GPT는 최초 작성한 코드가 실패하면 스스로 대안 코드를 작성&실행하기도 하면서 과업을 수행해 갑니다.

 
 
▼ 제가 요구한 대로 챗GPT는 워드 클라우드를 그려줬습니다. 다만 한글 폰트가 내장돼 있지 않아 텍스트가 깨진 상태였습니다. 이 문제는 챗GPT도 인지하고 있고 응답문에도 언급이 되어 있습니다.

 
 
▼ 한글 폰트 파일을 업로드하고 분석에 사용해 달라고 요청했습니다.

[프롬프트 원문]
한글 폰트 파일 업로드

업로드한 한글 폰트 파일을 이용해서 한글이 정상 출력되게 해주세요.

 
 
▼ 이게 되네?

 
 
▼ 그런데 분석 결과에 “이모티콘”, “사진”, 접속사 등 인사이트를 추출하는 데 불필요한 어휘가 너무 많아서 추가적인 전처리를 요청했습니다. 요청을 잘 반영하여 결과물을 다시 내주었습니다.

 

 

[프롬프트 원문]
단어 중에서 아래 단어는 제외하고 다시 분석해 줄래요? <제외 단어> - ":", "들어왔습니다", "나갔습니다", "저는", "사진", "이모티콘", "저도" - "너무", "많이", "진짜"와 같은 부사 - "근데", "그래도", "그래서"와 같은 접속사 - 특수문자나 한글 자음만 있는 단어

 
 
▼ 워드 클라우드에서 단어의 크기는 해당 단어의 출현 빈도를 의미합니다. 이것을엑셀’ 파일로 만들어 달라고 요청했습니다. 성공적으로 수행했습니다.

[프롬프트 원문]
방금 수행한 단어 통계를 엑셀 파일로 만들어 주세요.

 
 
▼ 다음으로는 단어 출현 빈도를 차트로 그려달라고 요청했습니다. 한글로 된 라벨이 깨질 것을 우려해 미리 아까 업로드한 한글 폰트를 사용해 달라”고 요청했습니다. 그러나 이 요구사항은 반영되지 않았습니다. (아까의 맥락을 기억하지 하는 것인가, 이렇게 금방?) 차트는 잘 그려줬습니다.

[프롬프트 원문]
통계를 차트로 그려 주세요. 아까 업로드한 한글 폰트를 사용하면 됩니다.

 
 
▼ 어쩔 수 없이 아까의 한글 폰트 파일을 다시 업로드하고 차트를 그려달라 요청했습니다. 이 요구사항은 정상 반영됐습니다.

[프롬프트 원문]
한글 폰트 파일 업로드
차트의 한글 폰트가 깨져 보여요. 업로드한 폰트 파일 사용해 주세요.

 

 
 
▼ 마지막으로 이 차트를 이미지 파일로 다운로드 받을 있게 해달라고 요청했고, 챗GPT는 정상적으로 수행해 주었습니다. 다운로드 받은 차트 이미지는 아무런 이상 없었습니다.

[프롬프트 원문]
이 이미지를 JPG 파일로 다운받을 수 있게 해주세요.

 


 

교훈

업로드 가능한 파일 크기가 1MB(사례에서는 .txt이었고, 다른 형식이면 달라질 수도 있습니다)이기 때문에 소위 말하는 빅데이터 분석과는 거리가 멉니다. 특히 카카오톡 대화 내용처럼 의미 없는 텍스트로 가득한 원시 데이터는 챗GPT에게 업로드해 분석을 맡기기 적합하지 않습니다. 용량은 작지만 정보 밀도는 높은 데이터(ex. 환우회 카페 게시판의 게시물 ‘제목’ 데이터)라야 유의미한 과업이 될 것입니다.
 
단어 출현 빈도 분석’이라는 분석 스킴 자체에 문제가 있습니다. 위의 사례에서 보신 것처럼 암 환자와 보호자 간의 대화라는 한정된 맥락에서 추출된 텍스트 데이터임에도 불구하고 자주 출현한 단어만 봐서는 우리가 의도한 인사이트를 도출하기 어렵습니다. 모든 사람이 빈번하게 발화하는 단어가 반드시 중요한 단어는 아니기 때문입니다. 유의미한 인사이트를 도출하고자 한다면 단순히 단어 출현 빈도를 보는 것만으로는 한계가 있습니다.
 
한국어는 영어와 달리 의미 단위로 텍스트를 토크나이징하는 것이 어렵습니다. 단어를 문법대로 사용하지 않는 환경(ex. 채팅방)에서 수집된 데이터라면 더욱 그렇습니다. 특히 우리의 분석에서는 특정 도메인의 전문 용어(ex. 의약품명)를 식별하고 추출하는 것이 필요한데, 토크나이저에는 이런 용어가 등재되어 있지 않습니다. 이런 이유들로, 한국어 텍스트 분석에서는 전처리에 리소스가 아주 많이 들어갑니다. 챗GPT는 이런 전처리 과정에서는 큰 도움이 될 것 같습니다.