GPT data analyst로 수강생 레벨과 니즈 분석하기

안녕하세요, AI 자동화 캠프 파트너 몽주입니다.

저희 방 분들이 캠프에 어떤 기대를 하시는지, 자동화 관련하여 개발언어와 GPT를 사용해보신 경험은 어느 정도 되는지 설문을 해보았습니다. 응답을 받았으니 GPT에게 분석을 시켜봐야죠.


우선 제가 입력한 데이터는 이런 식으로 생겼습니다. (민감한 부분을 숨기고 일부만 공개합니다)



CSV로 내려받는게 귀찮아서 GPT plugin - access link 기능을 써서 부탁해보았는데요, 어느 정도 이해했다고 생각했으나 응답자 이름을 틀리고, 객관식 응답 수도 틀리게 세더군요.



그래서 1. 설문 응답 내용을 csv 파일로 다운로드 받고,

  1. Data Analyst에게 내용 분석을 시키고,

  2. Data Analyst에게 워드클라우드를 만들 수 있는 파이썬 코드를 달라고 하여 Colab에서 작동시켜보았습니다.
    직접 워드클라우드 생성을 시켜보았는데, GPT는 konlpy 패키지를 사용할 수 없어서 형태소 분리를 못한 채로 워드클라우드를 만들기 때문에 별로 쓸만하지가 않았습니다. (“GPT를, GPT가”에서 우리가 원하는 것은 GPT라는 명사만 떼어내서 워드클라우드에 보여주는 것인데, chat GPT는 아직 한글에 대해 그것을 못 한다는 의미입니다.)

  3. 워드클라우드 만으로는 제가 이해하기 어려워서 GPT에게 캠프 방향 제안도 부탁했습니다.


처음엔 한 번에 결과를 얻고 싶어서 나름 열심히 요청을 구성해서 입력했는데요, 디테일한 프롬프트를 바꿔보기도 하고 약간 분리해봐서 물어봐도 계속 에러가 나더라구요. 토큰 제한 때문인지 런타임 제한이 있는지 모르겠지만 처리해야 할 내용이 많으면 에러가 나는 것 같습니다.


그래서 1) 데이터 자체 분석 (파악) - 2) 원하는 컬럼의 내용 요약 - 3) 코드 얻기를 분리해서 물어보았습니다.

컬럼 이름이 너무 길고 제가 언급한 내용과 직접적으로 일치하지 않는 것이 에러의 원인이 되기도 하는 것을 발견했기 때문에 “몇 번째 컬럼” 에 대해 정리해달라고 했습니다.


그리고 불용어를 제외한 내용에 대해 분석해서 워드클라우드를 그려달라고 부탁했습니다.

폰트를 미리 설치했고, 불용어는 링크 내용 읽기 지원이 안되기 때문에 csv 파일로 입력했습니다.

GPTs를 만들어두면 이런 부분은 매번 하지 않아도 되겠지요.

(불용어 목록 출처: https://www.ranks.nl/stopwords/korean )


그런데 위 그림에서 보시면 아시겠지만 “~에서”, “~의”, “~하여” 같은 부분들이 붙어있어, 의미 있는 분석이 이루어졌다고 보기 어렵습니다. 그래서 Colab에서 직접 실행할 수 있는 코드를 요청했습니다.

(질문에서는 Jupyter를 언급했는데, 답변 코드 자체는 어디에서 돌려도 작동합니다.)

대화 캡쳐 이미지에서 일부 보실 수 있듯, csv파일 경로 지정하는 방법, 폰트 설정하는 방법, 형태소 분석을 위해 konlpy를 설치하고 기존 코드에 적용하는 방법 등 진행하면서 마주하는 에러와 추가 요구에 대한 답변도 받았습니다. 자세한 내용은 대화에서 확인하실 수 있고, 최종 코드를 최하단에 공유해두겠습니다. ㅋㅋ

https://chat.openai.com/share/2db67f7d-11b3-4139-8453-716de6353428


이렇게 얻은 코드를 실행하여 얻은 워드클라우드 결과물 중 수강생들의 니즈에 대해 공유합니다.


1. GPT나 자동화로 도움 받고 싶은 부분

데이터 분석, 반복 업무 자동화, 엑셀 작업, (문서) 요약 등이 눈에 띄네요.

2. 캠프에서 얻고 싶은 것, 기대하는 것

캠프에 기대하는 바도 역시 (당연히) 데이터, 분석, 업무, 엑셀, 자동화 키워드가 크게 보이고,

추가로 마케팅, 활용, 네트워킹, 사람 부분도 언급이 많았던 것이 드러나네요! 아직 단톡방은 조용하지만 본격적으로 캠프가 시작되면 어떨지 기대되는 부분입니다. ㅎㅎ (얼른 만나봅시다!)


분석한 태용을 토대로 캠프를 어떻게 구성하면 좋을지 문의해보았는데, 간단한 주차별 강의안을 주네요.

이대로 진행하기에는 무리가 있지만, 수강생 분들과 함께 보면서 방향을 잡아나가보겠습니다.


이상 #9기AI알바생 #파트너사례발표준비 였습니다 ^^!




import pandas as pd
import nltk
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt

from google.colab import drive
drive.mount('/content/drive')


#한글 폰트 설치
!apt-get update -qq
!apt-get install fonts-nanum* -qq

import matplotlib.pyplot as plt
from wordcloud import WordCloud
import matplotlib.font_manager as fm

# 설치된 폰트 확인
for font in fm.fontManager.ttflist:
    if 'Nanum' in font.name:
        print(font.name, font.fname)

# Matplotlib의 기본 폰트 변경
plt.rc('font', family='NanumGothic')


!pip install konlpy
import pandas as pd
from konlpy.tag import Okt
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 형태소 분석기 초기화
okt = Okt()

# 불용어 리스트
stopwords = set(['아',	'휴',	'아이구',	'아이쿠',	'아이고',	'어',	'나',	'우리',	'저희',	'따라',	'의해',	'을',	'를',	'에',	'의',	'가',	'으로',	'로',	'에게',	'뿐이다',	'의거하여',	'근거하여',	'입각하여',	'기준으로',	'예하면',	'예를 들면',	'예를 들자면',	'저',	'소인',	'소생',	'저희',	'지말고',	'하지마',	'하지마라',	'다른',	'물론',	'또한',	'그리고',	'비길수 없다',	'해서는 안된다',	'뿐만 아니라',	'만이 아니다',	'만은 아니다',	'막론하고',	'관계없이',	'그치지 않다',	'그러나',	'그런데',	'하지만',	'든간에',	'논하지 않다',	'따지지 않다',	'설사',	'비록',	'더라도',	'아니면',	'만 못하다',	'하는 편이 낫다',	'불문하고',	'향하여',	'향해서',	'향하다',	'쪽으로',	'틈타',	'이용하여',	'타다',	'오르다',	'제외하고',	'이 외에',	'이 밖에',	'하여야',	'비로소',	'한다면 몰라도',	'외에도',	'이곳',	'여기',	'부터',	'기점으로',	'따라서',	'할 생각이다',	'하려고하다',	'이리하여',	'그리하여',	'그렇게 함으로써',	'하지만',	'일때',	'할때',	'앞에서',	'중에서',	'보는데서',	'으로써',	'로써',	'까지',	'해야한다',	'일것이다',	'반드시',	'할줄알다',	'할수있다',	'할수있어',	'임에 틀림없다',	'한다면',	'등',	'등등',	'제',	'겨우',	'단지',	'다만',	'할뿐',	'딩동',	'댕그',	'대해서',	'대하여',	'대하면',	'훨씬',	'얼마나',	'얼마만큼',	'얼마큼',	'남짓',	'여',	'얼마간',	'약간',	'다소',	'좀',	'조금',	'다수',	'몇',	'얼마',	'지만',	'하물며',	'또한',	'그러나',	'그렇지만',	'하지만',	'이외에도',	'대해 말하자면',	'뿐이다',	'다음에',	'반대로',	'반대로 말하자면',	'이와 반대로',	'바꾸어서 말하면',	'바꾸어서 한다면',	'만약',	'그렇지않으면',	'까악',	'툭',	'딱',	'삐걱거리다',	'보드득',	'비걱거리다',	'꽈당',	'응당',	'해야한다',	'에 가서',	'각',	'각각',	'여러분',	'각종',	'각자',	'제각기',	'하도록하다',	'와',	'과',	'그러므로',	'그래서',	'고로',	'한 까닭에',	'하기 때문에',	'거니와',	'이지만',	'대하여',	'관하여',	'관한',	'과연',	'실로',	'아니나다를가',	'생각한대로',	'진짜로',	'한적이있다',	'하곤하였다',	'하',	'하하',	'허허',	'아하',	'거바',	'와',	'오',	'왜',	'어째서',	'무엇때문에',	'어찌',	'하겠는가',	'무슨',	'어디',	'어느곳',	'더군다나',	'하물며',	'더욱이는',	'어느때',	'언제',	'야',	'이봐',	'어이',	'여보시오',	'흐흐',	'흥',	'휴',	'헉헉',	'헐떡헐떡',	'영차',	'여차',	'어기여차',	'끙끙',	'아야',	'앗',	'아야',	'콸콸',	'졸졸',	'좍좍',	'뚝뚝',	'주룩주룩',	'솨',	'우르르',	'그래도',	'또',	'그리고',	'바꾸어말하면',	'바꾸어말하자면',	'혹은',	'혹시',	'답다',	'및',	'그에 따르는',	'때가 되어',	'즉',	'지든지',	'설령',	'가령',	'하더라도',	'할지라도',	'일지라도',	'지든지',	'몇',	'거의',	'하마터면',	'인젠',	'이젠',	'된바에야',	'된이상',	'만큼어찌됏든',	'그위에',	'게다가',	'점에서 보아',	'비추어 보아',	'고려하면',	'하게될것이다',	'일것이다',	'비교적',	'좀',	'보다더',	'비하면',	'시키다',	'하게하다',	'할만하다',	'의해서',	'연이서',	'이어서',	'잇따라',	'뒤따라',	'뒤이어',	'결국',	'의지하여',	'기대여',	'통하여',	'자마자',	'더욱더',	'불구하고',	'얼마든지',	'마음대로',	'주저하지 않고',	'곧',	'즉시',	'바로',	'당장',	'하자마자',	'밖에 안된다',	'하면된다',	'그래',	'그렇지',	'요컨대',	'다시 말하자면',	'바꿔 말하면',	'즉',	'구체적으로',	'말하자면',	'시작하여',	'시초에',	'이상',	'허',	'헉',	'허걱',	'바와같이',	'해도좋다',	'해도된다',	'게다가',	'더구나',	'하물며',	'와르르',	'팍',	'퍽',	'펄렁',	'동안',	'이래',	'하고있었다',	'이었다',	'에서',	'로부터',	'까지',	'예하면',	'했어요',	'해요',	'함께',	'같이',	'더불어',	'마저',	'마저도',	'양자',	'모두',	'습니다',	'가까스로',	'하려고하다',	'즈음하여',	'다른',	'다른 방면으로',	'해봐요',	'습니까',	'했어요',	'말할것도 없고',	'무릎쓰고',	'개의치않고',	'하는것만 못하다',	'하는것이 낫다',	'매',	'매번',	'들',	'모',	'어느것',	'어느',	'로써',	'갖고말하자면',	'어디',	'어느쪽',	'어느것',	'어느해',	'어느 년도',	'라 해도',	'언젠가',	'어떤것',	'어느것',	'저기',	'저쪽',	'저것',	'그때',	'그럼',	'그러면',	'요만한걸',	'그래',	'그때',	'저것만큼',	'그저',	'이르기까지',	'할 줄 안다',	'할 힘이 있다',	'너',	'너희',	'당신',	'어찌',	'설마',	'차라리',	'할지언정',	'할지라도',	'할망정',	'할지언정',	'구토하다',	'게우다',	'토하다',	'메쓰겁다',	'옆사람',	'퉤',	'쳇',	'의거하여',	'근거하여',	'의해',	'따라',	'힘입어',	'그',	'다음',	'버금',	'두번째로',	'기타',	'첫번째로',	'나머지는',	'그중에서',	'견지에서',	'형식으로 쓰여',	'입장에서',	'위해서',	'단지',	'의해되다',	'하도록시키다',	'뿐만아니라',	'반대로',	'전후',	'전자',	'앞의것',	'잠시',	'잠깐',	'하면서',	'그렇지만',	'다음에',	'그러한즉',	'그런즉',	'남들',	'아무거나',	'어찌하든지',	'같다',	'비슷하다',	'예컨대',	'이럴정도로',	'어떻게',	'만약',	'만일',	'위에서 서술한바와같이',	'인 듯하다',	'하지 않는다면',	'만약에',	'무엇',	'무슨',	'어느',	'어떤',	'아래윗',	'조차',	'한데',	'그럼에도 불구하고',	'여전히',	'심지어',	'까지도',	'조차도',	'하지 않도록',	'않기 위하여',	'때',	'시각',	'무렵',	'시간',	'동안',	'어때',	'어떠한',	'하여금',	'네',	'예',	'우선',	'누구',	'누가 알겠는가',	'아무도',	'줄은모른다',	'줄은 몰랏다',	'하는 김에',	'겸사겸사',	'하는바',	'그런 까닭에',	'한 이유는',	'그러니',	'그러니까',	'때문에',	'그',	'너희',	'그들',	'너희들',	'타인',	'것',	'것들',	'너',	'위하여',	'공동으로',	'동시에',	'하기 위하여',	'어찌하여',	'무엇때문에',	'붕붕',	'윙윙',	'나',	'우리',	'엉엉',	'휘익',	'윙윙',	'오호',	'아하',	'어쨋든',	'만 못하다하기보다는',	'차라리',	'하는 편이 낫다',	'흐흐',	'놀라다',	'상대적으로 말하자면',	'마치',	'아니라면',	'쉿',	'그렇지 않으면',	'그렇지 않다면',	'안 그러면',	'아니었다면',	'하든지',	'아니면',	'이라면',	'좋아',	'알았어',	'하는것도',	'그만이다',	'어쩔수 없다',	'하나',	'일',	'일반적으로',	'일단',	'한켠으로는',	'오자마자',	'이렇게되면',	'이와같다면',	'전부',	'한마디',	'한항목',	'근거로',	'하기에',	'아울러',	'하지 않도록',	'않기 위해서',	'이르기까지',	'이 되다',	'로 인하여',	'까닭으로',	'이유만으로',	'이로 인하여',	'그래서',	'이 때문에',	'그러므로',	'그런 까닭에',	'알 수 있다',	'결론을 낼 수 있다',	'으로 인하여',	'있다',	'어떤것',	'관계가 있다',	'관련이 있다',	'연관되다',	'어떤것들',	'에 대해',	'이리하여',	'그리하여',	'여부',	'하기보다는',	'하느니',	'하면 할수록',	'운운',	'이러이러하다',	'하구나',	'하도다',	'다시말하면',	'다음으로',	'에 있다',	'에 달려 있다',	'우리',	'우리들',	'오히려',	'하기는한데',	'어떻게',	'어떻해',	'어찌됏어',	'어때',	'어째서',	'본대로',	'자',	'이',	'이쪽',	'여기',	'이것',	'이번',	'이렇게말하자면',	'이런',	'이러한',	'이와 같은',	'요만큼',	'요만한 것',	'얼마 안 되는 것',	'이만큼',	'이 정도의',	'이렇게 많은 것',	'이와 같다',	'이때',	'이렇구나',	'것과 같이',	'끼익',	'삐걱',	'따위',	'와 같은 사람들',	'부류의 사람들',	'왜냐하면',	'중의하나',	'오직',	'오로지',	'에 한하다',	'하기만 하면',	'도착하다',	'까지 미치다',	'도달하다',	'정도에 이르다',	'할 지경이다',	'결과에 이르다',	'관해서는',	'여러분',	'하고 있다',	'한 후',	'혼자',	'자기',	'자기집',	'자신',	'우에 종합한것과같이',	'총적으로 보면',	'총적으로 말하면',	'총적으로',	'대로 하다',	'으로서',	'참',	'그만이다',	'할 따름이다',	'쿵',	'탕탕',	'쾅쾅',	'둥둥',	'봐',	'봐라',	'아이야',	'아니',	'와아',	'응',	'아이',	'참나',	'년',	'월',	'일',	'령',	'영',	'일',	'이',	'삼',	'사',	'오',	'육',	'륙',	'칠',	'팔',	'구',	'이천육',	'이천칠',	'이천팔',	'이천구',	'하나',	'둘',	'셋',	'넷',	'다섯',	'여섯',	'일곱',	'여덟',	'아홉',	'령',	'영'])
 # 필요한 불용어 추가

df = pd.read_csv('/content/drive/My Drive/AI 알바생 만들기 수강 전 설문(응답) - 설문지 응답 시트1.csv')

# 워드클라우드를 생성할 컬럼의 인덱스 선택
columns_indexes_to_analyze = [3, 4, 5, 6]

# 인덱스를 사용하여 컬럼 이름 가져오기
columns_to_analyze = df.columns[columns_indexes_to_analyze]

# 각 컬럼에 대해 워드클라우드 생성
for column in columns_to_analyze:
    # 텍스트를 결합
    combined_text = ' '.join(df[column].dropna())

    # 형태소 분석으로 명사 추출
    nouns = okt.nouns(combined_text)

    # 불용어 제거
    nouns = [noun for noun in nouns if noun not in stopwords]

    # 단어 빈도 계산
    frequency = Counter(nouns)

    # 워드클라우드 생성
    wordcloud = WordCloud(font_path='/usr/share/fonts/truetype/nanum/NanumGothic.ttf', width=800, height=400, background_color='white').generate_from_frequencies(frequency)

    # 워드클라우드 표시
    plt.figure(figsize=(10, 5))
    plt.imshow(wordcloud, interpolation='bilinear')
    plt.title(f'Word Cloud for {column}')
    plt.axis('off')
    plt.show()
7
5개의 답글

👉 이 게시글도 읽어보세요