머신러닝과 AI(GEMINI)를 이용한 스마트 평가 시스템 구현 : 공정성과 업무 효율성
해마다 대기업이나 대학 또는 시험을 치루는 기관들은 수많은 지원서나 이력서 등을 검토하기 위해 많은 인력과 시간을 투입해야합니다. 또 어떤 이벤트를 운영하는 회사나 기관이라면 수백, 수천개의 지원서들을 짧은 시간내에 검토해야만 할텐데요. 저도 비슷한 경험을 한 적이 있어서 인공지능을 활용한 평가시스템을 만들면 업무효율성을 높일 수 있지 않을까 하는 생각으로 스마트 평가 시스템을 구현해봤습니다.
제가 만든 프로그램 소스를 전부 공개할 수는 없지만 관심이 있으신 분들은 직접 구축을 해보실 수 있는 아이디어가 될 수 있으면 좋겠습니다.
좀 더 자세한 시스템 구현 방법은 아래 글을 참고하시면 됩니다.
AI 스마트 평가 시스템: ai를 활용한 구현 방법 공개(파이썬)

왜 AI 기반 지원서 평가 시스템이 필요한가?
처음엔 단순하게 업무 효율성을 위해서 이런 프로그램(시스템)이 필요하겠다 생각했는데요. 만들면서 테스트를 거치고 평가시스템의 기능을 고도화하면서 깨닫게 된 것은 단순히 효율성이 중요한 것이 아니라 사람이 평가했을 때의 단점을 보완해주는 역할도 중요하다는 것이었습니다.
사람이 어떤 이력서나 지원서를 검토하는 과정은 개인정보는 블라인드 되어 있다고 해도 지원서를 읽는 과정에서 직전 지원서에 영향을 받고 피로할 수 있으며 갑자기 끼어드는 주관적인 판단도 있습니다. 물론 이것이 사람의 직관과 필요성, 그리고 미리 만들어둔 규정에 의해 공정하게 작동하겠지만 그렇지 않은 경우도 발생할 수 있습니다.
반면 인공지능은 객관적인 데이터를 기반으로 맥락을 분석하고 문서의 형태, 지원서에서 중요하게 표시된 부분, 보조적인 지표로 사용된 자격증이라든가 수상경력 등의 정보를 바탕으로 평가를 합니다.
다시 말해서, 인공지능 기반 평가시스템은 다음과 같은 문제를 해결하기 위해 필요합니다.
기존 평가 방식의 한계 시간과 자원의 비효율성: 수백 또는 수천 개의 지원서를 수작업으로 검토하는 데는 엄청난 시간과 인력이 소요됩니다. 평가자 피로도: 많은 지원서를 연속해서 읽다 보면 집중력이 저하되어 평가 품질이 떨어질 수 있습니다.
주관적 판단과 편향: 인간 평가자는 무의식적인 편향이나 그날의 컨디션에 따라 평가 기준이 달라질 수 있습니다.
일관성 유지의 어려움: 여러 평가자가 관여할 경우 평가 기준의 일관성을 유지하기 어렵습니다.
AI 기반 평가 시스템의 장점
처리 속도 향상: AI는 수천 개의 지원서를 단시간에 분석할 수 있습니다. 연구에 따르면 평균 채용 시간이 최대 50%까지 단축됩니다.
일관된 평가 기준: 시스템은 설정된 기준에 따라 일관되게 평가합니다.
객관적 데이터 기반 분석: 감정이나 선입견 없이 데이터에 기반한 평가가 가능합니다.
복합적 분석 능력: 텍스트 내용, 키워드 패턴, 문맥적 의미 등 다양한 측면을 동시에 분석할 수 있습니다.
머신러닝과 AI의 시너지- 하이브리드 접근법
효과적인 지원서 평가를 위해서는 머신러닝(ML)과 생성형 AI를 결합한 하이브리드 접근법이 필요하다고 생각합니다. 나중에 말씀드리겠지만 여기에 덧붙여 사람이 반드시 개입이 되어야 하구요.
각각의 기술이 다른 측면을 담당하여 시너지를 발휘합니다
처음에는 머신러닝을 이용해서 파이썬으로 개발을 시작했습니다. 그러다 과연 객관적이 지표라는 것만으로 충분히 평가가 이루어질 수 있을까 의심이 들었고, 이를 보완하기 위해 자연어를 좀 더 잘 이해하는 생성형 ai를 이용해 상호 보완할 수 있도록 구현하는 것이 필요하다겠다고 느꼈습니다.
머신러닝의 역할 (정량적 평가)
- 키워드 분석: 특정 경험, 기술, 자격 등 관련 키워드 검출
- 패턴 인식: 성공적인 지원서의 패턴 학습 예측 모델링: 과거 선발 데이터를 기반으로 성공 가능성 예측
- 숫자 데이터 처리: 학점, 경력 기간 등 수치 데이터 분석
생성형 AI의 역할 (정성적 평가)
- 문맥 이해: 지원 동기, 개인 경험 등 문맥적 의미 파악
- 일관성 평가: 전체 내용의 논리적 흐름과 일관성 판단
- 진정성 판단: 경험 서술의 구체성과 진정성 평가
- 창의성 측정: 문제 해결 접근법의 독창성 평가
하이브리드 평가 시스템 구현 방법
지원서 평가 시스템은 다음과 같은 구조로 구현할 수 있습니다
- 데이터 수집 및 전처리 지원서 데이터를 CSV, Excel 또는 PDF에서 추출 텍스트 정규화 (대소문자 통일, 특수문자 처리) 불필요한 정보 제거 및 개인정보 비식별화 분석할 섹션별로 데이터 구조화
- 머신러닝 기반 정량 분석 텍스트 벡터화 (TF-IDF, Word2Vec, BERT 임베딩 등) 특성 추출 (키워드 빈도, 문장 길이, 다양성 등) 지도학습 모델 적용 (Random Forest, XGBoost 등) 점수화 및 등급 분류
- 생성형 AI 기반 정성 분석 프롬프트 엔지니어링을 통한 평가 기준 설정 대형 언어 모델(LLM) API 활용 (Gemini API, OpenAI API 등) 세부 항목별 평가 (창의성, 논리성, 적합성 등) 피드백 및 개선점 생성
- 결과 통합 및 보고서 생성 ML과 AI 평가 결과 가중 합산 최종 점수 및 등급 산출 시각적 분석 자료 생성 (레이더 차트, 히트맵 등) 요약 리포트 자동 생성
아래는 파이썬으로 구현하는 기본 시스템 다음은 파이썬으로 구현한 간단한 지원서 평가 시스템의 예시 코드입니다
import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.ensemble import RandomForestClassifier
from sentence_transformers import SentenceTransformer
import google.generativeai as genai
import matplotlib.pyplot as plt
import re
# 1. 데이터 로드 및 전처리
def load_data(file_path):
df = pd.read_excel(file_path)
df['clean_text'] = df['personal_statement'].apply(lambda x: re.sub(r'[^\w\s]', '', x.lower()))
return df
# 2. ML 모델 설정 및 분석
def ml_analysis(texts):
# SBERT 임베딩 생성
model = SentenceTransformer('paraphrase-MiniLM-L6-v2')
embeddings = model.encode(texts)
# 여기서는 임의 점수 생성 (실제로는 훈련된 모델 사용)
# 실제 구현에서는 RandomForestClassifier나 다른 ML 모델을 훈련하여 사용
ml_scores = np.random.uniform(1, 10, size=len(texts))
return ml_scores
# 3. AI 분석 설정
def setup_gemini(api_key, model="gemini-2.0-flash-lite"):
genai.configure(api_key=api_key)
return genai.GenerativeModel(model,
generation_config={"temperature": 0.2, "max_output_tokens": 1024})
def ai_analysis(texts, model, criteria):
results = []
prompt_template = """
너는 전문 평가자입니다. 다음 지원서를 읽고 아래 기준에 따라 0-10점 사이로 점수를 매기세요:
- 논리적 일관성
- 경험의 구체성
- 지원 동기의 명확성
지원서 내용:
"{text}"
점수와 간략한 피드백을 JSON 형식으로 제공하세요.
"""
for text in texts:
try:
response = model.generate_content(prompt_template.format(text=text[:1000]))
# 실제 구현에서는 JSON 응답 파싱
# 여기서는 임의 점수 생성
score = np.random.uniform(1, 10)
feedback = "피드백 예시입니다."
results.append({"score": score, "feedback": feedback})
except Exception as e:
results.append({"score": 5, "feedback": f"오류 발생: {str(e)}"})
return results
# 4. 결과 통합 및 등급화
def combine_scores(ml_scores, ai_results, ml_weight=0.2, ai_weight=0.8):
ai_scores = [r["score"] for r in ai_results]
combined_scores = ml_weight * ml_scores + ai_weight * np.array(ai_scores)
# 등급 변환
grades = []
for score in combined_scores:
if score >= 9:
grades.append("A+")
elif score >= 8:
grades.append("A")
elif score >= 7:
grades.append("B+")
elif score >= 6:
grades.append("B")
elif score >= 5:
grades.append("C+")
elif score >= 4:
grades.append("C")
else:
grades.append("D")
return combined_scores, grades
# 5. 결과 시각화 및 보고서 생성
def generate_report(df, combined_scores, grades, ai_results):
df['ml_score'] = ml_scores
df['ai_score'] = [r["score"] for r in ai_results]
df['combined_score'] = combined_scores
df['grade'] = grades
df['feedback'] = [r["feedback"] for r in ai_results]
# 결과 저장
df.to_excel("evaluation_results.xlsx", index=False)
# 간단한 시각화 (실제 구현에서는 더 복잡한 시각화 가능)
plt.figure(figsize=(10, 6))
plt.hist(combined_scores, bins=10)
plt.title("지원서 점수 분포")
plt.xlabel("점수")
plt.ylabel("지원자 수")
plt.savefig("score_distribution.png")
return df
이 코드는 기본적인 구현 방법을 보여주는 예시입니다. 실제 구현에서는 더 복잡한 로직과 테스트, 보안 조치가 필요하겠구요. 로컬에서만 진행한다고 해도 ai를 api로 이용하게 되니 주의가 필요하겠습니다.
응용 분야 및 사례
AI 기반 지원서 평가 시스템은 다양한 분야에서 활용될 수 있습니다
1. 기업 채용 프로세스
- 이력서 스크리닝: 지원자의 기술 및 경험이 직무 요구사항과 일치하는지 분석
- 자기소개서 평가: 회사 문화 적합성, 직무 이해도, 커뮤니케이션 능력 평가
- 사례 : IBM은 AI 기반 채용 시스템 도입 후 채용 시간을 60% 단축하고 지원자 경험을 개선했습니다.
2. 대학 입학 심사
- 학업 계획서 분석: 학업 목표의 구체성과 실현 가능성 평가
- 자기소개서 평가: 지원자의 잠재력, 독창성, 다양성 기여도 분석
- 사례 : 일부 미국 대학들은 AI를 활용해 지원서의 초기 스크리닝을 자동화하고 있습니다.
3. 장학금 및 연구비 심사
- 연구 계획서 평가: 연구의 독창성, 방법론의 적절성, 잠재적 영향력 분석
- 예산 계획 검토: 예산 항목의 타당성과 효율성 평가
- 사례 : 여러 재단들이 AI를 통해 지원서 검토 과정을 간소화하고 있습니다.
4. 의료 분야
- 레지던트 선발: 의대생의 임상 경험과 연구 성과 평가
- 환자 분류(트리아지): 환자 상태 기술에 기반한 우선순위 결정
- 사례 : 미국의 일부 병원에서는 AI 시스템을 활용해 응급실 환자 분류의 정확도를 향상시켰다고 합니다.
시스템 개발 시 고려사항 및 한계점
AI 기반 평가 시스템을 구축할 때 몇 가지 중요한 고려사항과 한계점이 있습니다.
윤리적 고려사항
- 투명성: 지원자에게 AI 평가 사용 여부와 평가 기준 공개가 필요할 수 있습니다.
- 공정성: 모델이 특정 집단에 불리하게 작용하지 않도록 편향성을 지속적으로 모니터링해야 합니다.
- 인간 감독: AI는 의사결정을 완전히 대체하기보다 인간 평가자를 보조하는 역할로 사용하는 것이 바람직합니다.
기술적 한계
- 데이터 의존성: 모델의 성능은 훈련 데이터의 질과 양에 크게 의존합니다.
- 문맥 이해의 한계: 최신 AI 모델도 문화적 뉘앙스나 암시적 의미를 완벽히 이해하지 못할 수 있습니다.
- 새로운 형식 적응: 지원서 형식이나 트렌드가 변경되면 모델의 재훈련이 필요합니다.
현실적 도전 과제
- 비용: 고급 AI 모델 API와 컴퓨팅 리소스에는 상당한 비용이 소요될 수 있습니다.
- 기술적 진입 장벽: 소규모 조직은 필요한 기술 인프라와 전문성이 부족할 수 있습니다.
- 지원자 반응: 일부 지원자는 AI에 의한 평가에 불만을 가질 수 있습니다.
실제로 제가 테스트를 했을 때도 1000건 정도를 1회만 처리해도 오픈ai나 제미나이 고급 모델로 돌리면 시간도 필요할 뿐만 아니라 비용도 최소 몇천원 정도 발생하기도 했습니다. 그러니 완전히 무료로 이것을 처리하겠다는 생각으로 접근하면 안됩니다.
그리고 무엇보다 지원자들은 과연 ai가 평가했다고 하면 공정하다고 느낄 것인지 오히려 사람이 하지 않았기 때문에 한계가 있다고 느낄 것인지 고민하지 않을 수 없습니다.
시스템 구축 시 권장사항
- 단계적 도입: 전체 프로세스를 한 번에 자동화하기보다 점진적으로 도입하는 것이 좋습니다.
- 하이브리드 접근법 유지: AI는 결정을 돕는 도구로 활용하고, 최종 결정은 인간이 담당해야 합니다.
- 정기적인 검증: 시스템의 정확도와 공정성을 정기적으로 검증하고 업데이트해야합니다.
- 피드백 루프 설계: 평가자와 지원자의 피드백을 수집하여 시스템을 지속적으로 개선하도록 합니다.
제가 개발하는 과정에서도 처음 gemini를 이용했을 때의 프롬프트와 최종 개발을 완료했을 때의 프롬프트도 다릅니다. 또한 사용했던 모델을 호출하는 방법도 구글에서 변경한 것이 있어서 이부분도 다르게 처리해줬어야 했습니다. 정확도를 높이기 위해서 키워드의 가중치를 변경한다거나 머신러닝과 ai간의 가중치도 변경하고 가능한한 사람이 초기 스크리닝을 하는 상황에서 필요한 것들을 끊임없이 업그레드 했습니다.
그리고 이건 계속 진행되어야할 부분이겠구요.
결론 및 전망
여러가지 한계점은 있지만 AI와 머신러닝 기반 지원서 평가 시스템은 선발 프로세스의 효율성과 공정성을 크게 향상시킬 수 있는 잠재력을 가지고 있습니다. 정량적 평가와 정성적 평가를 결합한 하이브리드 접근법은 기존 방식의 한계를 극복하고 더 포괄적인 평가를 가능하게 합니다.
그러나 이러한 시스템이 성공적으로 구현되기 위해서는 기술적 정확성뿐만 아니라 윤리적 측면과 인간 중심 접근법이 균형을 이루어야 합니다. AI는 인간의 판단을 대체하기보다는 보완하는 도구로 활용될 때 가장 큰 가치를 발휘합니다. 그래서 저는 초기 스크리닝으로 40% 또는 최대 20% 정도로 스크리닝하는 것을 목표로 구현하기도 했습니다.
앞으로 지원서를 스크리닝하는 기술은 더욱 발전하여 개인화된 피드백 제공, 더욱 다양한 문화적 맥락 이해, 그리고 더 정교한 분석 기능을 갖춘 시스템으로 진화할 수 있을 거라 생각합니다. 그렇게 해서 궁극적으로 더 효율적이고 공정한 선발 과정을 통해 조직과 지원자 모두에게 납득할 수 있는 방법이 될 수 있을 것 같습니다.
고맙습니다.