본문 바로가기

AI 및 자동화 툴 활용법

AI로 설문조사 결과 자동 분석하는 법

서론

설문조사는 고객 만족도, 직원 의견, 제품 피드백 등 다양한 목적에 활용된다. 하지만 설문 응답이 많아질수록 데이터를 분석하는 과정이 복잡하고 시간이 많이 소요된다.

AI를 활용하면 설문조사 데이터를 자동으로 정리, 분석, 시각화할 수 있다. 특히 자연어 처리(NLP)와 머신러닝을 사용하면 **텍스트 응답(주관식)**까지도 효과적으로 분석할 수 있다.

이 글에서는 AI를 활용해 설문조사 데이터를 자동 분석하는 방법을 단계별로 소개하겠다.

 

 

AI로 설문조사 결과 자동 분석하는 법

 

 

 

1. 설문조사 데이터 수집하기

먼저, 설문 데이터를 수집해야 한다. 설문조사 도구로는 Google Forms, SurveyMonkey, Typeform 등이 있으며, 결과 데이터를 CSV 파일로 다운로드할 수 있다.

예제 데이터 (설문조사 응답 - CSV 파일 형식)

응답자 ID만족도 점수(1~5)개선점(주관식 응답)추천 여부(예/아니오)

1 5 서비스가 매우 만족스러웠어요
2 3 가격이 조금 비싸요 아니오
3 4 더 많은 기능이 추가되면 좋겠어요
4 2 대기 시간이 너무 길어요 아니오

위 데이터를 Python과 Pandas를 이용해 불러오겠다.

python
코드 복사
import pandas as pd # CSV 파일 불러오기 df = pd.read_csv("survey_results.csv") # 데이터 확인 print(df.head())

결과: 설문조사 데이터를 DataFrame 형태로 로드


2. 데이터 전처리 (결측값 처리 및 정규화)

설문 응답 데이터에는 결측값(누락된 응답)이나 불필요한 공백이 있을 수 있다.

python
코드 복사
# 결측값 확인 print(df.isnull().sum()) # 결측값 제거 df = df.dropna() # 공백 제거 df = df.applymap(lambda x: x.strip() if isinstance(x, str) else x) # 데이터 타입 변환 (만족도 점수 숫자로 변환) df["만족도 점수"] = df["만족도 점수"].astype(int)

결과: 데이터를 정리하여 분석할 준비 완료


3. 설문 데이터 분석 (숫자형 응답 분석)

만족도 점수(1~5) 및 추천 여부(예/아니오) 같은 숫자형 데이터를 분석해보자.

1) 만족도 평균 및 분포 확인

python
코드 복사
import matplotlib.pyplot as plt import seaborn as sns # 만족도 점수 분포 시각화 plt.figure(figsize=(6,4)) sns.histplot(df["만족도 점수"], bins=5, kde=True, color="blue") plt.title("고객 만족도 점수 분포") plt.xlabel("만족도 점수") plt.ylabel("응답자 수") plt.show()

결과: 고객 만족도가 어느 정도 분포하는지 확인 가능

2) 추천 여부 분석

python
코드 복사
# 추천 여부 비율 계산 recommend_counts = df["추천 여부"].value_counts() # 추천 여부 시각화 plt.figure(figsize=(5,3)) plt.pie(recommend_counts, labels=recommend_counts.index, autopct="%.1f%%", colors=["green", "red"]) plt.title("추천 여부 분석") plt.show()

결과: ‘추천한다’ vs ‘추천하지 않는다’ 비율을 한눈에 확인 가능


4. AI를 활용한 주관식 응답 분석 (감성 분석 및 키워드 추출)

설문조사에서 **주관식 응답(개선점, 피드백 등)**은 분석하기 어려운 경우가 많다. 이를 해결하기 위해 AI를 활용해 자동 분석해보겠다.

1) 감성 분석 (긍정/부정 자동 분류)

자연어 처리(NLP) 모델을 이용해 텍스트 응답이 긍정적인지 부정적인지 자동으로 분석할 수 있다.

python
코드 복사
from textblob import TextBlob # 감성 분석 함수 def analyze_sentiment(text): analysis = TextBlob(text) return "Positive" if analysis.sentiment.polarity > 0 else "Negative" # 감성 분석 적용 df["감성 분석 결과"] = df["개선점"].apply(analyze_sentiment) # 감성 분석 결과 출력 print(df[["개선점", "감성 분석 결과"]].head())

결과: 고객 피드백이 긍정적인지, 부정적인지 자동 분류됨

2) 키워드 추출 (TF-IDF 활용)

주관식 응답에서 중요한 키워드를 자동으로 추출할 수도 있다.

python
코드 복사
from sklearn.feature_extraction.text import TfidfVectorizer # TF-IDF 벡터화 vectorizer = TfidfVectorizer(stop_words="english", max_features=10) tfidf_matrix = vectorizer.fit_transform(df["개선점"]) # 주요 키워드 출력 keywords = vectorizer.get_feature_names_out() print("가장 많이 언급된 키워드:", keywords)

결과: 설문 응답에서 가장 많이 등장한 키워드를 자동으로 추출


5. 머신러닝을 활용한 설문 응답 예측 모델 만들기

고객이 ‘추천 여부’를 선택할 가능성을 AI로 예측하는 모델을 만들어보겠다.

1) 데이터 준비

먼저 숫자형 데이터를 벡터화하여 모델 학습에 사용할 수 있도록 한다.

python
코드 복사
from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier # 추천 여부를 숫자로 변환 (예: 1, 아니오: 0) df["추천 여부"] = df["추천 여부"].map({"예": 1, "아니오": 0}) # 학습 데이터 준비 X = df[["만족도 점수"]] y = df["추천 여부"] # 학습/테스트 데이터 분리 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

2) 머신러닝 모델 학습 및 평가

python
코드 복사
# 랜덤 포레스트 모델 학습 model = RandomForestClassifier(n_estimators=100, random_state=42) model.fit(X_train, y_train) # 모델 평가 accuracy = model.score(X_test, y_test) print(f"모델 정확도: {accuracy:.4f}")

결과: 설문 데이터를 기반으로 추천 여부를 예측하는 AI 모델 구축


6. 분석 결과 대시보드 만들기 (Streamlit 활용)

데이터 분석 결과를 실시간으로 확인할 수 있도록 대시보드를 만들 수 있다.

python
코드 복사
import streamlit as st # 대시보드 구성 st.title("설문조사 자동 분석 대시보드") # 만족도 점수 시각화 st.bar_chart(df["만족도 점수"].value_counts()) # 감성 분석 결과 출력 st.write(df[["개선점", "감성 분석 결과"]])

결과: 웹에서 설문조사 분석 결과를 실시간 확인 가능


결론

숫자형 응답 분석: 만족도 점수, 추천 여부 시각화
AI 감성 분석: 주관식 응답을 긍정/부정 자동 분류
키워드 추출: 설문 응답에서 핵심 키워드 자동 분석
머신러닝 모델: AI로 ‘추천 여부’ 예측 가능
Streamlit 대시보드: 분석 결과를 실시간 시각화

이제 AI를 활용해 설문조사 데이터를 빠르고 정확하게 분석해보자! 🚀