-
- ‘2025 러닝팁 시리즈: 대학원생이 나누는 AI 활용 연구 학습 팁’ e-book 공개 NEW
- 교수학습혁신센터에서는 2025학년도에 발간한 대학원 러닝팁(Learning Tip)을 모아 「2025 Learning Tip Series: 대학원생이 나누는 AI 활용 연구 학습 팁」 e-book을 제작했습니다. 이번 e-book은 대학원생들이 실제 연구 과정에서 생성형 AI를 활용한 경험을 바탕으로, 연구 전반에서 AI를 활용하는 방법을 구체적인 사례와 함께 소개합니다. ▲러닝팁 시리즈 e-book 목차 특히 생성형 AI와 함께 데이터를 분석하는 방법, 프롬프트 작성 방법, 생성형 AI 활용 시 유의해야 할 점 등을 다루어 연구 현장에서 바로 참고할 수 있도록 구성하였습니다. 다양한 전공의 필자들이 참여하여, 여러 연구 분야에서 생성형 AI가 어떻게 활용되고 있는지도 엿볼 수 있습니다. ▲러닝팁 시리즈 e-book에서 다룬 러닝팁 8호 ▲러닝팁 시리즈 e-book에서 다룬 러닝팁 11호 교수학습혁신센터는 이번 e-book이 대학원 신입생부터 학위논문을 준비하는 연구자까지, 연구의 각 단계에서 실질적인 도움이 되는 자료가 될 것이라고 기대합니다. ※e-book 링크: https://ctl.skku.edu/ctl/ebook2026 ※PDF 다운로드: https://drive.google.com/file/d/1bl9ny38s9m1vagt-UsCRWqV_IZ2xEO_y/view?usp=sharing
-
- 작성일 2026-02-09
- 조회수 22
- 좋아요1
- 첨부파일 (0)
-
- [CTL Learning Tips #12] 공공 설문 데이터, Gemini와 함께 R로 회귀분석하기
- 교수학습혁신센터-20260116 <출처표기방법>이상현, 정도현, 이상은(2026).공공 설문 데이터, Gemini와 함께 R로 회귀분석하기 (CTL Learning Tips #12).서울: 성균관대학교 교수학습혁신센터 공공 설문 데이터, Gemini와 함께 R로 회귀분석하기 이상현(성균관대 미래정책대학원 석사과정), 정도현(성균관대 신소재공학과 박사과정), 이상은(성균관대 교수학습혁신센터 교육학박사) 들어가며 데이터는 더 이상 일부 전문가들만의 전유물이 아닙니다. 공공데이터포털을 통해 누구나 방대한 사회·행정 데이터를 접할 수 있는 시대가 되었지만, 막상 이를 연구나 정책 분석으로 연결하려고 하면 여전히 높은 진입장벽을 느끼는 경우가 많습니다. “어떤 데이터를 골라야 할지”, “분석 설계는 어떻게 시작해야 할지”, “통계 결과를 어떻게 해석해야 할지”와 같은 질문 앞에서 많은 연구자들이 주저하게 됩니다. 이번 호 대학원 러닝팁에서는 공공 데이터를 활용해 사회적 자본과 정치효능감의 관계를 다중회귀분석으로 탐색한 제1 저자의 실제 사례를 소개합니다. 특히 R을 활용한 분석 과정 전반에서 Gemini와 어떻게 상호작용하며 연구를 설계하고, 결과를 해석하고, 사회적 의미를 도출해 나갔는지를 구체적으로 살펴보고자 합니다. 이를 통해 생성형 AI가 연구 과정에서 어떤 역할을 할 수 있는지, 그리고 데이터 기반 연구가 어떻게 보다 열린 탐험의 영역으로 확장될 수 있는지를 함께 고민해보는 계기가 되기를 바랍니다. 이상현: 저는 미래정책대학원에서 공부하면서, 다양한 이해관계자의 협치를 지향하는 협력적 거버넌스의 필요성에 공감하고 우리 사회와 국가가 지향해야 할 바라고 생각해왔습니다. 그런데 이를 위해 많은 사람들을 설득하고자 한다면 근거에 기반한 소통 전략이 필요합니다. 객관적인 수치를 근거로 효과적인 소통을 가능하게 해준다는 점에서 공공 데이터를 활용한 분석은 유용합니다. 정도현: 그러시군요. 저는 뉴스에서 공공 데이터나 설문 조사 결과를 접해본 적이 있지만, 이걸 직접 데이터로 활용하고 분석한다는 건 좀 생소해요. 이상현: 제가 공공 데이터라고 말씀드린 것은 아래 이미지와 같은 설문 응답 원자료(Raw Data)예요. 서울 열린데이터광장, 한국사회과학자료원 같은 공공데이터포털에서 구할 수 있습니다. 공공데이터포털에는 있는 이런 형식의 데이터에 1,000건이 넘는 데이터 포인트가 있기 마련인데, 이걸 일일이 읽어서 파악하는 것은 불가능하죠. 기존의 단순 빈도 분석이나 상관관계 분석은 변수 간의 인과 문맥을 놓친다는 한계가 분명했습니다. 그래서 저는 이런 한계를 극복하고자 변수 간의 영향력을 통계적으로 증명할 수 있는 회귀분석 모델을 적용하기로 했고, Gemini를 활용해 분석의 전 과정에서 함께 협업하게 되었습니다. 정도현: 저에게는 데이터가 복잡해 보이네요. 그렇지만 이걸 분석하면 시민의 인식과 정책의 방향을 파악하는 데 유용할 것 같아요. 회귀분석 모델을 활용해서 어떻게 분석하는지 좀 더 설명해주시겠어요? 이상현: 네, 공공 설문 데이터는 일반 텍스트보다 더 구조적이고, 사회적 신뢰나 효능감 같은 심리적 태도에 특화된 척도를 사용해요. 따라서 저는 R을 활용하여 복잡한 설문 문항을 사회적 자본 기반으로 구조화하고, Gemini를 활용하여 각 변수가 정치효능감에 미치는 영향과 기회, 위협을 자연어로 정리하고자 했습니다. 이 분석의 목표는 방대한 공공 데이터를 한눈에 파악 가능한 '정책 지도'로 바꾸고, 행정 서비스 개선에 바로 참고할 수 있도록 해석하는 것이었습니다. 정도현: 데이터 분석을 통해 정책적 시사점을 찾는군요. 그럼 Gemini를 활용한 것은 회귀분석에 어떻게 도움이 되었나요? 이상현: Gemini 활용은 저 자신에게 ‘AI와 함께하는 새로운 연구 방식’을 실험하는 기회였다고 말씀드릴 수 있을 것 같아요. 코드를 작성하고, 오류를 해결하며, 결과를 해석하는 과정에서 반복되는 시행착오를 해결하는 데 시간을 쓰는 대신, 저는 '왜 이 방법이 맞는가'를 이해하는 학습의 기회를 가질 수 있었습니다. 이제 제 실제 경험을 좀 더 구체적으로 소개해드릴게요. 공공 데이터 분석, 왜 어렵고 왜 재미있나? 이상현: 공공 데이터를 분석하는 일은 일반적인 엑셀 정리와는 조금 달라요. 겉으로 보기엔 똑같은 숫자처럼 보이지만, 설문 데이터는 그 안에 아주 독특한 정보들이 담겨 있어요. 예를 들면 응답자의 인구통계학적 특성, 거주 지역 같은 정형화된 정보가 있고, 동시에 사회신뢰나 정치효능감처럼 5점 척도로 서술된 심리적 태도 데이터도 함께 있죠. 정도현: 예, 정말 그렇네요. 인구 통계 정보와 사람의 심리가 숫자로 같이 있다 보니 분석 난이도가 높을 것 같아요. 이상현: 저는 이 독특한 사회 데이터를 가지고, 시민들의 마음이 어디로 흘러가고 있는지를 알아보고 싶었어요. 시민들이 어떤 사회적 요소에 가치를 두고 있는지, 지금 정책적 효능감이 활발한 영역은 어디인지, 그리고 앞으로 기회가 있을 만한 정책 주제는 뭔지를 읽어내고 싶었죠. 그런데 문제는, 이 많은 변수 사이의 관계를 눈대중으로 파악할 수는 없다는 것이었죠. 그래서 선택한 방법이 바로 회귀분석이라는 도구였습니다. 정도현: 시민 데이터의 흐름을 분석해 앞으로 정책이 나아갈 방향을 예측할 수 있어 재미있다는 것이군요. 인과관계를 파악하기 위해 회귀분석을 사용하신 거고요. 그렇다면 회귀분석은 구체적으로 어떠한 분석 방법인가요? 회귀분석, 변수의 영향력을 '읽어주는' 친구 이상현: 기존에 많이 쓰이던 빈도 분석은 어떤 응답이 많았는지를 찾는 방식이에요. 그런데 회귀분석은 한 단계 더 나아가, 변수 하나하나의 영향력을 파악하고 그 영향이 결과에 미치는 인과관계를 묶어주는 방식이지요. 쉽게 말하면, ‘사회적 참여가 정치효능감을 높이는 원인이 되는지’를 통계 모델이 검증해주는 거죠. 이 과정을 가능하게 해주는 것이 R의 통계 패키지들인데, 저처럼 통계를 깊게 전공하지 않은 사람도 Gemini와 함께라면 충분히 시작할 수 있었습니다. 정도현: 저도 생성형 AI를 활용해 분석한 경험이 있어서 “함께” 한다는 것이 어떤 느낌인지 알 것 같아요. 그럼 회귀분석으로 분석할 때 어떤 단계를 거쳐야 하나요? 전체 흐름을 한번 짚어주시면 더 이해하기 쉬울 것 같아요. 이상현: 예, 그럼 분석 단계를 큰 틀에서 먼저 설명해볼게요. 1. 데이터 수집 이상현: 처음 해야 할 일은 데이터를 모으는 일이었어요. 저는 서울 열린데이터광장, 한국사회과학자료원 같은 공공데이터포털을 주로 사용해요. 신뢰와 참여, 연결망 등 관심 있는 사회 지표를 기준으로 검색하면, 응답자의 배경 정보와 인식 문항 등을 함께 가져올 수 있어서 좋습니다. 2. 데이터 정리와 전처리 정도현: 공공 데이터를 수집했다면 바로 분석에 들어갈 수 있나요? 아니면 별도의 정리 과정이 필요한가요? 이상현: 회귀분석은 데이터의 정합성이 중요해요. 그래서 결측치나 중복 응답을 제거한 이후 문항의 긍정이나 부정 방향을 정리하는 과정이 필수적이었어요. 이 과정에서 저는 Gemini에게 "이 문항들을 긍정 척도로 통일하려면 어떻게 해야 해?"라고 물으며 R 코드를 작성했죠. 3. 관계 찾기인 회귀 모델링 정도현: 데이터의 논리적 방향을 맞추는 전처리가 중요하군요. 그럼 준비된 데이터를 바탕으로 실제 분석은 어떻게 진행되었나요? 이상현: 이제 본격적으로 의미 있는 영향 요인들을 찾아내는 단계입니다. 원인이 되는 독립변수와 결과가 되는 종속변수를 설정하고 R을 통해 계산하게 해요. 저는 Gemini와 함께 R 환경에서 협업하는 과정을 통해 흥미로운 결과를 얻었어요. 이를 통해 단순한 '신뢰'보다는 '구체적인 사회참여'가 정치효능감을 높이는 핵심 요인으로 뚜렷하게 나타나더라고요. 4. 시각화와 해석 정도현: 참여가 신뢰보다 중요하다는 결과가 흥미롭네요. 이런 통계적 수치는 어떻게 정리하셨나요? 이상현: 마지막으로 이 분석 결과들을 보기 좋게 정리하고 해석하는 작업을 했어요. R에는 ggplot2 같은 시각화 함수가 있어서 쉽게 그림으로 확인할 수 있었고, 특히 Gemini를 활용하면 유의확률인 p값이나 영향력을 나타내는 베타 계수 같은 각 통계 수치가 어떤 사회적 의미를 갖는지 자연어로 정리해주어 큰 도움이 되었어요. 정도현: 회귀분석을 진행하는 데에도 Gemini를 활용하셨겠지만, 통계 수치의 의미를 자연어로 정리하고 해석하는 데에도 도움이 되었군요! 그럼 구체적으로 어떻게 Gemini를 활용해 분석을 진행했는지 알려주시겠어요? Gemini와 함께하는 실제 분석 프로세스 이상현: 네, 이제 실제로 Gemini의 도움을 받아 분석을 본격적으로 진행했던 경험을 소개해볼게요. 제가 처음 분석을 시작할 때 가장 막힌 부분이 “어떤 변수를 독립변수로 넣지?”였습니다. 어떤 문항이 정치효능감에 영향을 줄지, 통제 변수는 무엇을 포함해야 할지 막막하더라고요. 예를 들어, “사회적 자본과 정치효능감의 관계를 분석하려고 해. 설문 데이터에서 관련 변수를 추천해줘”라고 Gemini에게 물어보면, 생각보다 매우 구체적이고 실용적인 답변을 해줘요. Gemini는 사회신뢰, 사회참여, 사회적 연결망 등과 같은 변수군을 제시해주고, 선행 연구를 바탕으로 각 변수가 왜 중요한지도 설명해줍니다. 그 덕분에 분석 모델 초안을 빠르게 구성할 수 있었죠. 저는 이렇게 확보한 데이터를 구글 드라이브와 RStudio가 연동된 환경에 업로드했습니다. 저는 DATA.sav라는 이름으로 파일을 준비했어요. 그리고 아래 Step 순서를 따라서 Gemini를 활용해 코드를 짰습니다. Gemini와 함께 R 분석 환경 설정하고, 데이터 전처리 하기 정도현: 그렇다면 수집한 데이터는 본격적으로 어떻게 분석했나요? 이상현: Step 1. Data Load에서 데이터를 업로드하고 분석 변수만 추출하고자 했어요. 이를 위해 Gemini에 “R 환경에서 .sav 파일을 로드하려고 해, 사회신뢰와 정치효능감 열을 가져올 거야. 사용 가능하게 코드 짜줄래?”라고 프롬프트를 쓰면 아래와 같은 코드를 제시해줍니다. 정도현: 이제 본격적인 분석을 시작할 준비가 된 것으로 보이는데요? 이상현: 예, 맞습니다. 이제 Step 2. Data Preprocessing에서는 구체적인 코딩 과정을 진행해보겠습니다. 이전에 상관관계 분석이 '두 변수가 같이 움직이는지'를 봤다면, 회귀분석은 '하나가 다른 하나의 원인이 되는지'를 수치로 표현해 분석한다는 점에서 큰 차이가 있습니다. Gemini에게 “정치효능감 문항 중 부정 문항에 대해 역코딩을 진행하고 지수를 합산해볼 거야. 코드 짜줄래?”를 보내면 Gemini는 등 데이터 분석 대상에서 논리적 일관성을 맞추기 위한 역코딩 코드를 알려줍니다. 이러한 데이터 전처리를 통해 분석 결과에서의 노이즈를 줄이고, 신뢰성을 높일 수 있게 됩니다. 정도현: 인과관계를 파악한다는 점이 핵심이군요. 이상현: Step 3. Regression Modeling에서는 Gemini에게 “우리는 전처리된 데이터를 바탕으로 다중회귀분석을 실행하고 싶어. 모델 학습과 결과 요약 코드를 짜볼래?”라고 질문하였습니다. 이 과정을 통해 회귀분석의 실제 코드와 결과를 기반으로, 어떤 요인들이 의미 중심으로 추출되었는지 구체적으로 살펴볼 수 있습니다. 그 결과, '회귀 모델 초기화', ‘결과 요약표 출력’, ‘회귀계수 시각화’ 등 단계별 코드를 제시해주었습니다. 회귀분석 결과 시각화하고 해석하기 이상현: 회귀분석을 통해 수치를 뽑은 뒤, 이제는 그 결과를 시각화하고 해석하는 단계입니다. 단순히 p < .05 같은 유의확률만 보는 게 아니라, 각 요인이 실제로 얼마나 큰 영향을 미치는지 이해해야 하니까요. Step 4.1 회귀계수 점수로 시각화하기 이상현: 분석 결과에서 생성한 회귀계수 점수는 각 요인이 정치효능감에 미치는 영향력을 막대그래프로 시각화하여, 어떤 변수가 가장 중요한지 직관적으로 보여줍니다. 이를 통해 단순히 이웃을 신뢰하는 것보다 '직접적인 사회참여'의 막대가 훨씬 길게 나타난다는 것을 알 수 있습니다. 이는 시민들에게 실천적 경험이 얼마나 중요한지를 시각적으로 증명하는 것이죠. Step 4.2 변수 간 관계 지도로 시각화하기 이상현: 다음으로 활용한 것은 변수들 간의 구조적 관계를 보여주는 경로 모형(Path Diagram)이에요. '사회참여'와 '정치효능감'은 매우 굵은 선으로 연결되어 있어 강한 인과성을 보입니다. 반면, 일부 '제도 신뢰' 변수는 다른 주제와 다소 떨어져 있거나 연결선이 얇게 나타나, 제도에 대한 믿음만으로는 효능감을 높이는 데 한계가 있음을 시사하죠. Step 4.3 계층적 변수 분류로 시각화하기 이상현: 마지막으로 변수들을 계층적으로 분류해봤어요. 제 분석 결과는 크게 두 가지 클러스터로 나뉘었습니다. 첫 번째는 활동 중심의 '실천적 자본(참여, 연결망)', 두 번째는 인식 중심의 '심리적 자본(신뢰, 평가)'이었습니다. 이는 정책 설계자에게 "인식 개선 캠페인도 중요하지만, 당장 참여할 수 있는 프로그램을 만드는 것이 더 시급하다"는 구조적 통찰을 제공합니다. 정도현: 시각화 결과를 보니 정책적 우선순위가 명확해지네요. 해석 과정에서도 Gemini가 도움이 되었나요? 이상현: 네, 매우 컸습니다. "사회참여 계수가 0.45고 신뢰 계수가 0.12라면 이걸 정책적으로 어떻게 해석해야 해?"라고 Gemini에게 물으면, "이는 참여를 1단위 높이는 것이 신뢰를 높이는 것보다 약 4배 더 효과적임을 의미하므로, 예산을 참여 프로그램에 집중해야 합니다"라는 식으로 전문적인 해석을 내놓습니다. 덕분에 저는 통계 수치를 넘어선 '정책 제언'을 도출할 수 있었어요. 마치며 이번 호에서는 시민의 목소리가 담긴 공공 데이터를 다중회귀분석 기법을 활용해 어떻게 정책 지도로 변환할 수 있는지 다뤘습니다. 특히 실제 분석 경험을 중심으로, Gemini와의 상호작용을 통해 분석 초기 설계부터 결과 해석에 이르기까지 생성형 AI가 연구의 전 과정을 어떻게 지원했는지 소개드렸습니다. 사회적 자본이 정치효능감에 미치는 영향을 R과 Gemini를 활용해 분석한 결과, 시민들의 실질적인 사회참여가 효능감 증진의 가장 강력한 동력임을 확인하였습니다. 단순히 이웃을 믿는 마음인 사회신뢰도 중요하지만, 공청회나 봉사활동과 같은 구체적인 참여 경험이 시민들을 정책의 주체로 만드는 데 결정적인 역할을 한다는 점이 데이터로 증명되었습니다. 이러한 분석을 수행하는 데 있어, Gemini는 단순히 코드를 짜주는 기계를 넘어, 연구자의 가설을 검증하고 분석의 논리를 강화해주는 실질적인 ‘지적 파트너’였습니다. 특히 회귀분석 결과를 해석하는 과정에서 결과의 사회과학적 함의를 함께 고민하며 연구의 깊이를 한층 더해주었습니다. 결론적으로 데이터 기반의 행정 연구는 이제 높은 진입장벽을 넘어, 누구나 자신의 아이디어를 증명할 수 있는 영역으로 확장되고 있습니다. 복잡한 통계도 AI라는 동료와 함께라면 충분히 즐거운 탐험이 될 수 있음을 잊지 마시기 바랍니다. 데이터의 양이 많아질수록 중요한 것은 '어떤 숫자를 볼 것인가'와 '그 숫자를 어떻게 정책으로 녹여낼 것인가'입니다. Gemini와 회귀분석은 이 질문에 대한 훌륭한 나침반이 되어줄 것입니다.
-
- 작성일 2026-01-16
- 조회수 771
- 좋아요11
- 첨부파일 (0)
-
- [CTL Learning Tips #11] AI가 되묻게 하라: AI기반 코딩 에이전트, Claude Code로 반복적인 코드 수정을 끊어내는 프롬프팅 전략
- 교수학습혁신센터-20251219 <출처표기방법>이시백, 정도현, 이상은(2025).AI가 되묻게 하라: AI기반 코딩 에이전트, Claude Code로 반복적인 코드 수정을 끊어내는 프롬프팅 전략(CTL Learning Tips #11).서울: 성균관대학교 교수학습혁신센터 AI가 되묻게 하라: AI기반 코딩 에이전트, Claude Code로 반복적인 코드 수정을 끊어내는 프롬프팅 전략 이시백(성균관대 지능형로봇학과 석박통합과정), 정도현(성균관대 신소재공학과 박사과정), 이상은(성균관대 교수학습혁신센터 교육학박사) 들어가며 11호 러닝팁은 제1저자(이시백, 지능형로봇학과 석박통합과정)가 자신의 연구인 '의미론적 3차원 재구성(Semantic 3DGS 1 )'을 구현하는 과정에서 생성형 AI 코딩 도구인 'Claude Code 2 '를 활용한 경험을 소개합니다. 특히, AI에게 코드를 요청할 때 발생할 수 있는 의사소통 오류를 줄이고, 완성도 있는 코드를 얻어내는 '프롬프팅 노하우'를 공유합니다. 1 기존의 고품질 실시간 3D 장면 렌더링 기술인 3D Gaussian Splatting (3DGS)에 의미적(Semantic) 정보를 결합한 기술을 의미 2 https://claude.com/product/claude-code Anthropic이 개발한 AI 기반 코딩 에이전트. 단순한 코드 자동 완성을 넘어 자율적(agentic) 코딩을 지원하는 도구 정도현: 선생님, 이번에는 3차원 컴퓨터 비전 연구를 하시면서 얻은 팁을 공유해 주신다고 들었어요. 구체적으로 어떤 연구를 하고 계신가요? 이시백: 저는 '로봇 인지(Perception)' 분야를 연구하고 있어요. 쉽게 말해 로봇에게 '눈'과 '뇌'를 달아주는 작업이죠. 우리가 사는 현실 세계의 물리 데이터를 로봇이 이해할 수 있는 형태로 변환해 주는 겁니다. 예를 들면 2D 이미지만 보고 3차원 공간을 복원해 내는 NeRF(너프) 3 관련 연구나, 로봇이 메모리를 적게 쓰면서도 사람의 말을 알아듣고 길을 찾는 언어 기반 네비게이션 연구를 진행했습니다. 3 'Neural Radiance Fields'의 약자로, 3D 장면을 생성하고 렌더링하기 위한 신경망 기반의 컴퓨터 비전 기술 정도현: 와, 듣기만 해도 다루어야 할 데이터나 코드가 엄청날 것 같은데요? 이시백: 맞아요. 로봇이 세상을 이해하려면 수많은 소스 코드를 연결하고 수정해야 하거든요. 처음에 저는 ChatGPT나 Gemini 같은 채팅형 AI의 도움을 많이 받았어요. 그런데 코드가 길어지니까 AI가 짜준 코드를 복사해서 제 파일에 붙여넣고, 에러가 나면 다시 긁어서 물어보고... 이 과정이 너무 번거롭더라고요. 정도현: 맞아요. 창을 왔다 갔다 하다 보면 흐름이 끊기기 일쑤죠. 이시백: 그래서 저는 'Claude Code'라는 도구로 갈아탔습니다. 이건 웹사이트가 아니라, 개발자들이 쓰는 검은 화면(터미널) 안에서 바로 작동해요. "이 파일 수정해 줘"라고 하면 AI가 직접 내 컴퓨터의 파일을 열어서 코드를 고쳐주거든요. 훨씬 편리하죠. 정도현: 내 컴퓨터 속으로 직접 들어온 AI 비서인 셈이네요! 그럼 이제 코딩 문제가 완벽히 해결되었나요? 이시백: 그랬으면 좋았겠지만, 여전히 문제는 있었어요. 도구가 아무리 좋아도, 제가 어떻게 명령하느냐에 따라 AI가 제 의도와 다르게 코드를 짜놓고 묵묵부답인 경우가 많았거든요. 정도현: 좋은 도구를 쓰는 것만큼, 도구와 소통하는 방법도 중요하겠네요. 이시백: 네, 그래서 오늘은 제가 Claude Code를 쓰면서 터득한 'AI와 효율적으로 소통하는 팁'을 알려드리려 합니다. 참고로 이 방법은 ChatGPT나 Gemini 같은 다른 생성형 AI를 쓸 때도 똑같이 적용할 수 있으니, 꼭 알아두시면 좋습니다. 내 터미널 속의 유능한 파트너, Claude Code 정도현: 말씀하신 대로 '내 컴퓨터 속으로 들어온 AI 비서'라면 실제 작업 화면이 무척 궁금하네요. 우리가 흔히 쓰는 챗봇과는 많이 다른 모습인가요? 이시백: 네, 인터페이스부터 확연히 다릅니다. 백문이 불여일견이니, 제가 작업하는 화면을 직접 보여드릴게요. 아래 그림을 한번 자세히 보시겠어요? [이미지 1 : Claude Code 실행 화면 예시] 이시백: 왼쪽의 Claude Code 터미널 화면을 보시면, 제가 "-- 위의 경로에 mnist dataset을 받아서, CNN 모델을 이용해서 학습하고 평가하는 코드를 만들어줘!"라고 명령을 내리자마자 Claude가 'Write'라며 스스로 파일을 생성하고 코드를 작성하는 과정이 실시간으로 보입니다. 그리고 오른쪽 화면처럼 실제 python 코드 파일이 뚝딱 만들어지죠. 단순히 채팅만 하는 게 아니라, 마치 옆자리 동료가 제 모니터를 보면서 키보드를 대신 쳐주는 것 같이 느껴집니다. 정도현: 오, 정말 편리하겠네요! 화면을 보니 진짜 코딩을 잘하는 동료랑 일하는 기분이 들 것 같아요. 요구는 명확하고, 구체적으로 정도현: 그렇다면 Claude Code를 활용하는 방법에 대해 설명해 주시겠어요? 이시백: 그럼요. 가장 중요한 건 명확한 가이드라인을 주는 것입니다. 우리가 사람에게 일을 시킬 때도 "이것 좀 수정해 줘"라고 하기보다, "A 보고서의 5페이지 표를 수정해 줘. 스타일은 지난번에 만든 B 보고서를 참고해서 글자 크기를 키워줘"라고 할 때 결과물이 훨씬 좋잖아요? 정도현: 맞아요. 막연하게 시키면 엉뚱한 결과가 나오기 십상이죠. 이시백: 코딩도 똑같습니다. "시각화 파일(vis.py)을 참고해서, 메인 파일(main.py)의 그래프 글자 크기를 키워줘"라고 '수정할 대상'과 '참고할 대상'을 콕 집어 명시해야 합니다. 새로운 연구를 시작할 때도 마찬가지예요. 예를 들어 제가 '디퓨전(Diffusion, 그림을 그려주는 생성형 AI 모델)'을 만들고 싶다고 가정해 볼게요. 이때 단순히 "디퓨전 모델 만들어줘"라고 하면 AI는 멍해집니다. 대신 아래와 같이 구체적으로 역할을 나눠서 요청하는 것이지요. “AI야, MNIST 손글씨 숫자 데이터로 이미지 생성(그림 그리기) 모델을 학습시키는 예제 프로젝트를 만들 거야. 폴더 안 코드는 4개 파일로 역할을 분리해서 작성해줘. -main.py: 실행 진입점(전체 설정 로드, 학습/평가 호출) -data.py: MNIST 로딩/전처리/데이터로더 -model.py: 모델(네트워크) 구조 정의 -train.py: 학습 루프(손실, 옵티마이저, 체크포인트 저장) 한 파일에 다 넣지 말고, 각 파일은 자기 역할만 담당하게 해줘.” 정도현: 아, 이해가 쏙 되네요! 그냥 "요리해 줘"가 아니라, "재료 손질은 여기서, 조리는 저기서 하고, 레시피는 이걸 참고해서 만들어"라고 역할을 딱 정해주는 거군요. 혹시 또 Claude Code에게 주어야 하는 정보가 있을까요? 이시백: 구체적인 요구 사항을 제공해야 해요. 예를 들어, diffusion 모델을 만들고자 한다면 “모델은 CNN기반의 standard U-Net 구조를 이용해줘. 이때 layer의 개수는 encoder, decoder 4개로 해줘. 최적화는 adam optimizer를 사용하고 Learning schedular를 사용해줘. 활성화함수는 ReLU가 아닌 SiLU를 사용해줘. 나머지 선택사항들은 가장 많이 사용하는 일반적인 세팅으로 해줘!”와 같이 세부 조건을 함께 적어주는 방식입니다. 정도현: Claude Code에게 명확하고 구체적으로 요구하는 것이 중요한 것 같네요. 그럼 이렇게 코드를 생성했을 때 오류는 없었나요? 이시백: 그럴리가요. 구체적으로 요구한다고 하더라도 놓치는 부분들은 꼭 있더라고요. 그런데 언어모델은 기본적으로 사용자의 명령을 받으면 '일단 답변을 완성해야 한다'는 목적이 강하거든요. 그래서 제가 구체적으로 말하지 않은 부분은 AI가 임의로 추측해서 작성해 버리죠. 정도현: 아, 맞아요. 저도 그래서 코드를 받으면 변수명이 다르거나, 파일 경로가 엉뚱해서 다시 수정해 달라고 요청하느라 시간을 많이 뺏겨요. "아니, 그거 말고!" 하면서요. 이시백: 바로 그겁니다. AI가 멋대로 추측해서 틀린 코드를 짜고, 그걸 수정하고, 또 에러가 나고... 이런 '비효율의 루프'를 끊으려면, 처음 요청할 때 안전장치를 하나 걸어둬야 해요. 핵심 팁: “모르면 물어봐!”, “검증용 테스트 코드부터 만들어줘”라고 요청하기 이시백: 저는 코드를 요청할 때 프롬프트 마지막에 꼭 이 문장을 추가해요. "혹시 코드 구현하기 전, 구현에 있어서 필요한 정보가 있거나 네가 작성하는 데 있어 헷갈리는 부분이 있다면, 나에게 먼저 물어봐 줘!" 이렇게 명령하면, AI는 모호한 부분이 있을 때 섣불리 코드를 짜는 대신 "잠깐만요, 이건 어떻게 할까요?"라고 되물어봅니다. 그때 제가 필요한 정보를 주면, 수정 과정 없이 한 번에 완벽한 코드가 나오죠. 정도현: "먼저 물어봐 줘"라는 문장 하나가 AI의 행동 패턴을 바꾸는 거군요! 혹시 이 외에 복잡한 연구 코드를 짤 때 유용한 또 다른 팁도 있을까요? 이시백: 네, 하나 더 있습니다. 바로 "본 코드를 짜기 전에 '검증용 테스트 코드'부터 만들어줘"라고 요청하는 것입니다. 정도현: 테스트 코드요? 보통은 다 짜고 나서 테스트하지 않나요? 이시백: 일반적인 개발이라면 그렇지만, 연구용 코드는 워낙 복잡해서 한 번에 다 짜려고 하면 실패할 확률이 높거든요. 그래서 저는 AI에게 "우선 내 데이터(입력)가 들어갔을 때, 원하는 결과(출력)가 나오는지 확인하는 간단한 테스트 스크립트부터 짜줘"라고 시킵니다. 이렇게 작은 성공을 먼저 확인하고 나서 본 코드를 짜게 하면, 나중에 덩치가 커져도 에러가 날 확률이 확 줄어들죠. 역질문으로 요구사항을 명확히 하고, 테스트 코드로 기능의 안정성을 검증하는 전략입니다. 정도현: 역시 돌다리도 두드려보고 건너는 게 연구자의 자세군요. 그럼 실제 연구에서는 이 팁들이 어떻게 적용되었는지 궁금합니다. 실제 연구에의 적용: “코드 작성을 위해 필요한 정보를 나에게 물어봐” 이시백: 제 연구 분야인 3DGS(3D Gaussian Splatting) 이야기로 예시를 들어 볼게요. 기존의 3D 재구성 기술은 사진을 찍어서 3D 모델을 만들면 단순히 색깔 정보만 가지고 있었어요. 컴퓨터 입장에서는 이게 책상인지, 의자인지 모르는 거죠. 정도현: 아, 그냥 모양과 색깔만 있는 껍데기 같은 거군요. 이시백: 맞아요. 그래서 저는 여기에 언어 정보(Semantic Info)를 통합해서 3차원 공간에 의미를 부여하는 연구를 했습니다. 하지만 이게 말처럼 쉽지 않아요. 3DGS 데이터는 수백만 개의 점으로 이루어져 있고, 각 점마다 16차원의 언어 특징(Feature)이 들어 있거든요. 이걸 우리가 쓰는 텍스트(CLIP 모델, 512차원)와 비교하려면 차원을 변환하는 복잡한 연산이 필요합니다. 예전 같으면 이 차원을 맞추느라 shape mismatch 에러와 씨름하며 며칠을 보냈을 거예요. 정도현: 듣기만 해도 머리가 아프네요. 차원 변환에, 수백만 개 데이터 처리까지... 코드를 짜는 것 자체가 큰일이었겠어요. 이시백: 그렇죠. 그래서 이게 잘 작동하는지 확인하기 위해서, 제가 텍스트로 "자전거"라고 입력하면 3D 공간 속에서 자전거 부분만 하이라이트(Highlight) 되어 반짝이게 하는 시각화 코드가 필요했어요. 아래 그림을 보시면 왼쪽의 일반 3DGS는 어두운 형체만 보이지만, 오른쪽 결과물을 보세요. 제가 'bicycle'을 입력했더니 자전거 부분만 정확히 하이라이트 되었습니다. 아래의 'grass’ 와 ’car’ 또한 잘 하이라이트 되고 있네요. 이렇게 컴퓨터가 공간의 의미를 이해하고 시각화하도록 만드는 코드가 필요했습니다. [이미지 2 : 3DGS 일반 왼쪽, 텍스트 입력 후 하이라이트(Highlight) 오른쪽] 이시백: 이때 Claude Code에게 시각화 코드를 짜달라고 하면서, 앞서 말씀드린 '질문 요청' 팁을 적용했습니다. 아래 대화 내용을 한번 보실까요? [이미지 3 : Claude Code에게 코드 생성과 함께 추가 질문 요청] 정도현: 보통 같으면 바로 코드를 뱉어냈을 텐데, Claude Code가 어떻게 반응했나요? 이시백: 아래의 이미지 속 1번과 2번 항목을 보세요. 제가 미처 알려주지 않았던 'Threshold 값'과 'Decoder 경로'를 콕 집어 물어보고 있죠? 정도현: 용어가 조금 어려운데, 쉽게 말하면 어떤 정보인가요? 이시백: 'Threshold'는 화면에 표시할 '커트라인'이에요. 예를 들어 "네가 80% 이상 확신하는 것만 자전거로 표시해!"라고 할 때 그 기준점이죠. 'Decoder 경로'는 데이터를 해석하는 '번역기 파일의 위치'를 묻는 겁니다. 제 연구 데이터를 해석하려면 특정 파일이 꼭 필요한데, 그게 컴퓨터 어디에 있는지 물어본 거죠. [이미지 4 : Claude Code가 요청한 정보] 정도현: 아하, 커트라인과 파일 위치군요! 이 정보 없이는 코드가 절대 돌아가지 않는다는 걸 AI도 인지한 거네요. 와, 정말 예리한데요? 만약 질문하지 않았다면 AI가 임의로 기준을 잡거나, 중요 파일을 빼먹어서 코드가 작동하지 않았겠네요? 이시백: 예, 맞습니다. 특히 Decoder 부분은 제 연구 모델 구조를 모르면 절대 짤 수 없는 코드였어요. 저는 이 질문을 받고 바로 답을 줬죠. 이렇게 답변을 주니, Claude Code가 그 정보를 바탕으로 단 한 번의 에러도 없이 완벽하게 작동하는 코드를 작성해 주었습니다. 코드를 되돌리거나 수정하는 시간이 완전히 사라진 거죠. [이미지 5 : Claude Code로 생성된 코드 결과] 주의할 점: 도구를 똑똑하게 쓰는 만큼, 검증도 필수 정도현: 결과가 깔끔하게 나왔네요! 그런데 선생님, 듣다 보니 이 방법이 정말 완벽해 보이는데, 혹시 주의해야 할 점이나 한계는 없나요? 이시백: 아주 날카로운 질문입니다. 크게 두 가지를 조심해야 해요. 첫째는 '맹신의 함정'입니다. AI가 질문을 했다고 해서 나머지 부분이 완벽하다는 뜻은 아니에요. AI는 자기가 '모르겠다'고 판단한 부분만 물어볼 뿐, 자신 있게 잘못 짠 코드는 질문 없이 그냥 넘어갈 수 있거든요. 따라서 질문하지 않은 부분이라도 최종 코드는 반드시 연구자가 직접 검토해야 합니다. 둘째는 '대화의 길이'입니다. 질문과 답변이 너무 여러 번 오가며 대화가 길어지면, AI가 처음에 시켰던 본래 목적을 잊어버리거나 헷갈려 할 수 있습니다. 만약 티키타카가 너무 길어진다 싶으면 차라리 채팅을 초기화(Reset)하고, 정리된 정보를 바탕으로 깔끔하게 새로 명령하는 편이 낫습니다. 정도현: 도구를 믿되 끝까지 검증하고, 대화가 꼬이면 새로 시작하는 지혜가 필요하겠군요. 마치며 정도현: 오늘 팁은 정말 인상적이네요. 단순히 "코드 짜줘"가 아니라, "모르면 물어봐"라는 한마디가 이렇게 큰 효율의 차이를 만드는군요. 이시백: 맞습니다. 우리는 흔히 AI가 척하면 척하고 알아들을 거라고 기대하지만, 사실 가장 효율적인 소통은 상호작용에서 나옵니다. 특히 연구나 개발처럼 복잡한 맥락이 있는 작업을 시킬 때는, AI에게 질문할 수 있는 기회를 주세요. 유저는 필요한 정보만 골라 제공함으로써, 불필요한 시행착오를 줄이고 연구의 본질에 더 집중할 수 있게 될 것입니다. 여러분도 당장 오늘부터 프롬프트 끝에 이러한 문장을 추가해 보세요!
-
- 작성일 2025-12-19
- 조회수 1178
- 좋아요11
- 첨부파일 (0)
-
- [CTL Learning Tips #10] 복잡한 시계열 데이터를 잘 분석하기 위해 딥러닝 모델을 테스트한 연구경험
- 교수학습혁신센터-20251128 <출처표기방법>김준, 정도현, 이상은, 김미화(2025).복잡한 시계열 데이터를 잘 분석하기 위해 딥러닝 모델을 테스트한 연구경험(CTL Learning Tips #10).서울: 성균관대학교 교수학습혁신센터 복잡한 시계열 데이터를 잘 분석하기 위해 딥러닝 모델을 테스트한 연구경험 김준(성균관대 메타바이오헬스학과 박사과정), 정도현(성균관대 신소재공학과 박사과정), 이상은(성균관대 교수학습혁신센터), 김미화(성균관대 교수학습혁신센터) 들어가며 10호 러닝팁은 제1저자(김준, 메타바이오헬스학과 박사과정)가 자신의 연구 데이터 분석을 위해 딥러닝 모델을 적용한 사례를 소개합니다. 특히 복잡한 시계열 데이터를 전처리하는 방법과, 딥러닝 모델을 선택할 때 고려해야 할 점을 제시합니다. 더불어 연구 과정에서 ChatGPT를 활용해 딥러닝 모델 구현 코드를 작성한 경험도 함께 다루어, 생성형 AI를 연구 데이터 분석의 보조 도구로 활용하는 팁을 제공합니다. 김준: 저는 의료 현장에서 활용할 수 있는 기술 개발을 위해 AI를 활용하여 여러 의료 데이터를 분석하고 있습니다. 그중 하나로, 손목에 부착한 센서를 통해 시간에 따라 변화하는 손의 움직임·세기·방향 등의 시계열 데이터를 수집하고, 이를 딥러닝 모델에 입력해 손목 동작으로 사용자의 감정을 예측하는 모델을 개발했습니다. 정도현: 와, 선생님의 설명을 듣자니 데이터가 엄청 복잡했을 것 같은데, 실제로도 그랬나요? 김준: 맞아요. 손이 한 번만 움직여도 다양한 축의 변화가 동시에 나타나거든요. 그래서 데이터 전처리와 딥러닝 모델 선택 과정이 중요했습니다. 제 연구 경험을 따라오다 보면, 시계열 데이터를 어떻게 정리하고 어떤 모델을 쓰면 좋을지에 대한 팁을 얻으실 수 있을 거예요. 시계열 데이터란 무엇인가? 정도현: 러닝팁 독자들 중에는 시계열 데이터가 익숙하지 않은 분들도 있을 것 같아요. 본격적인 이야기로 들어가기 전에, 시계열 데이터가 무엇인지 간단하게 설명해 주실 수 있을까요? 김준: 시계열(Time Series) 데이터란 시간의 흐름에 따라서 연속적으로 기록된 데이터를 말해요. 하루 동안의 심장박동수 변화, 시간별 온도 변화 같은 것들이 대표적인 예죠. 이러한 시계열 데이터는 의료, 헬스케어, 산업, 금융, 환경 등 여러 분야에서 활용되고 있어요. 특히 디지털 헬스케어 분야에서는 워치나 심전도 기기, 스마트안경 등으로 신체 신호를 시간 단위로 수집하고 분석하는 연구가 활발합니다. 정도현: 그러면 선생님의 연구에서는 어떤 시계열 데이터를 수집하고 분석하셨나요? 김준: [그림1]이 제 연구에서 실제로 수집한 데이터인데요. 사용자가 장갑을 착용하고 수어를 따라 하면, 장갑에 있는 센서들이 손목의 움직임, 방향, 세기 등을 시간 순서대로 기록했습니다. 2개의 센서를 사용해 x, y, z축 방향의 가속도(ax, ay, az)와 각속도(gx, gy, gz)를 동시에 측정했죠. 손목이 조금만 움직여도 센서당 6개의 값이 동시에 변하고 얽히면서 복잡한 패턴을 만들기 때문에, 눈으로 패턴을 확인하거나 단순히 추세를 비교하는 방식만으로는 감정을 예측하기 어려워요. 그래서 이러한 복잡한 시간적 패턴과 여러 신호 간의 관계를 효율적으로 분석하기 위해 딥러닝 모델을 활용했습니다. 시계열 분석 전 전처리(preprocessing) 방법 시계열 데이터를 구성하는 속성 정도현: 딥러닝 모델에 시계열 데이터를 단순히 넣고 돌리면 분석 결과를 얻을 수 있나요? 김준: 아니요. 대부분의 경우, 시계열 데이터를 바로 분석하기는 어렵습니다. 분석하기 좋은 형태로 데이터를 정리하는 과정, 즉 전처리(preprocessing)가 필요해요. 정도현: 그렇군요. 시계열 데이터를 전처리할 때는 어떤 점을 고려해야 하나요? 김준: 먼저 데이터가 어떤 속성을 갖고 있는지 정확히 파악해야 해요. 특히 시간 순서대로 기록되는 데이터는 센서 설정이나 수집 환경에 따라 동작마다 실제로 저장된 데이터의 길이가 달라질 수 있기 때문이죠. 따라서 데이터를 속성 기준으로 비교하고, 모든 데이터의 구조를 동일하게 맞추는 작업이 필요합니다. 예를 들어, 제 감정 인식 연구에서는 MPU6050 센서 2개를 사용했습니다. 이 센서는 50Hz로 3초 동안 측정해 한 동작마다 150개의 데이터(50Hz x 3s)를 수집합니다. 또 센서당 6개의 채널(ax, ay, az, gx, gy, gz)을 측정하기 때문에, 한 동작에서 총 12개의 채널, 1800개의 값이 기록됩니다. 센서 신호의 세기는 동작의 강도에 따라 달라지기도 하지요. [표2]는 이러한 주파수, 측정 구간, 채널 수, 진폭 등 데이터 속성을 정리한 내용입니다. 정리하면, 동작 하나당 각각의 채널에서 150개의 데이터를 수집해야 하지만, 실제로는 149개나 151개처럼 약간 차이가 날 수 있습니다. 그래서 데이터가 부족하면 앞뒤 값을 그대로 복사, 붙여넣기 하는 패딩(Padding)을 수행하고, 데이터가 많으면 컷팅(Trimming)으로 데이터의 길이를 맞췄습니다. 이렇게 데이터의 속성을 기반으로 전처리를 하면, 이후 딥러닝 모델이 일관된 형식의 입력을 받을 수 있어 안정적인 학습이 가능합니다. 수학적 시계열 데이터 변환: 스펙트로그램 표현 정도현: 데이터의 속성을 기준으로 전처리까지 마쳤으니, 이제 딥러닝 모델에 넣으면 되겠네요! 김준: 사실 한 단계가 더 남아 있습니다. 바로 시계열 데이터를 수학적으로 변환하는 과정인데요. 시계열 데이터는 시간에 따른 진폭의 변화를 해석하는 것이 가장 기본적인 분석 방식입니다. 하지만 딥러닝 모델로 데이터를 정확하게 분석하려면 좀 더 다양한 데이터를 입력해야 해요. 그래서 데이터를 다른 수학적 관점으로 변환하여 딥러닝 모델이 풍부한 데이터를 학습할 수 있게 했지요. 제 연구에서 시계열 데이터를 어떻게 수학적으로 변환했는지는 아래 예시를 통해 확인해 볼게요. [그림2]은 손목 동작의 강도 변화를 시간의 흐름에 따라 기록한 그래프예요. 언제 큰 동작을 했고, 언제 미세한 떨림이 있었는지 한번 맞혀보실래요? 정도현: 제가 보기에는 0~5초 사이에 작은 떨림이 있었고, 10~25초 사이에 큰 동작을 한 것 같아요. 김준: 맞아요. 정확히는 0~3초 구간과, 동작을 하기 전인 10~12초 구간에 미세한 떨림, 즉 노이즈가 발생했습니다. 이런 경우 필터를 적용해 노이즈를 제거할 수 있죠. 저의 경우 노이즈도 하나의 실제와 같은 환경이라고 생각해서 제거하지 않고 사용했어요. 또한 12.5~25초 구간에서는 진폭이 전체적으로 증가하는데, 이를 통해 사용자가 동작을 크게 했다는 것을 확인할 수 있어요. 본 연구에서는 바로 이 구간에서 사용자가 ‘행복하다’라는 감정을 수어로 표현하면서 발생한 동작 패턴이 시계열 데이터에 기록되었습니다. 정도현 선생님께서 바로 파악하셨듯이, 일반 시계열 데이터는 시간에 따른 동작의 강도 변화를 직관적으로 확인할 수 있습니다. 하지만 감정이 담긴 손목 동작의 리듬, 반복성, 주기 구조 등은 제대로 파악하기 어려워요. 정도현: 그래서 일반 시계열 데이터를 수학적으로 변환하는 과정이 필요했던 거군요! 선생님은 어떤 방법을 사용하셨나요? 김준: 저는 동일한 데이터를 두 가지 수학적 관점으로 변환해 보았는데요. 먼저, [그림3]와 같이 시계열 데이터에 FFT(Fast Fourier Transform)를 적용해, ‘시간’이 아니라 ‘주파수’의 관점에서 동작의 강도를 나타냈어요. 여기서의 주파수는 반복되는 동작이나 리듬이 나타나는 속도를 의미해요. [그림2]를 통해 동작의 리듬이 어떤 규칙성을 가지고 있는지를 분석할 수 있습니다. 예를 들어 어떤 감정을 표현하는 동작이 일정한 리듬을 갖는다면, 해당 주파수에서 피크가 나타나게 되죠. 이러한 정보는 감정 특유의 움직임 패턴을 특징으로 추출하는 데 유용합니다. 다만 FFT는 전체 구간을 한 번에 주파수 영역으로 변환하기 때문에, 어느 시점에 그 리듬이 나타났는지 알기 어렵습니다. 그래서 저는 STFT(Short-Time Fourier Transform)를 사용했습니다. 이 방법은 신호를 짧은 시간 구간으로 나누고, 각 구간마다 FFT를 수행하여, 시간과 주파수 변화를 동시에 관찰할 수 있습니다. 즉, 언제, 어떤 주파수에서 강한 동작이 발생했는지를 한눈에 확인할 수 있지요. STFT의 결과를 스펙트로그램 형태로 나타낸 것이 바로 [그림4]입니다. 여기서 색이 밝게 보이는 부분일수록 해당 시간과 주파수 구간에서 진폭이 강하다는 뜻입니다. 예를 들면, 5~20초 구간에서 밝은 영역이 길게 나타나는데, 이는 수어 동작을 수행하는 동안 일정한 리듬과 강도가 유지되었다는 뜻입니다. 반면 20초 이후부터는 밝기가 줄어들었는데, 이를 통해 동작이 점차 마무리되었음을 알 수 있죠. 참고로 STFT는 각 구간의 정보를 요약한 값이므로 [그림4]의 시간축은 실제 시간을 그대로 나타내지 않습니다. 그래서 [그림2]와 달리 5~10초 구간에 노이즈가 나타나는 등 차이가 있을 수 있습니다. 정도현: FFT와 STFT와 같은 수학적 변환을 통해, 모델이 단순한 시간 흐름 정보뿐만 아니라 주파수 특성을 포함한 패턴 정보를 학습할 수 있게 한 것이군요! 복잡한 시계열 그래프 분석 우리는 알 수 없다. 복잡한 시계열 시각적 분석의 한계 정도현: 연구에서 사용하신 시계열 데이터가 너무 복잡해서 딥러닝 모델을 데이터 분석에 활용했다고 하셨는데요. 좀 더 자세히 설명해 주실 수 있을까요? 김준: 복잡한 시계열 데이터는 시각적으로 분석하는 데 한계가 있어요. 특히 여러 채널의 신호가 한 그래프에 섞이면 전체 패턴을 이해하거나 감정을 예측하기 어렵습니다. 제가 연구에서 사용한 데이터를 보면 그 이유를 알 수 있을 거예요. [그림5]는 사용자가 ‘싫어하다’라는 감정을 수어로 표현할 때 2개의 센서에서 측정한 12개 채널의 신호를 시간의 흐름에 따라 나타낸 그래프입니다. 한번 보시겠어요? 정도현: 아.. 12개의 신호가 한 그래프에 나타나니 정말 복잡하고 파악하기 어렵네요. 김준: 맞아요. 일단 시각적으로 분석해 보자면, 0~5초 구간과 다른 시간 구간에서 측정된 신호의 파형이 다른 것을 확인할 수 있습니다. 15~100초 구간에서는 약 11개의 반복 패턴을 관찰할 수도 있죠. 하지만 12개의 신호가 서로 어떻게 상호작용하며 증가하고 감소하는지까지 파악하기는 어렵습니다. 그래서 [그림6]처럼 [그림5]의 0~3초 구간을 확대해서 신호들 간의 관계를 좀 더 명확하게 보여주었습니다. [그림6]에서는 0.5~1.0초 구간에서 az1이 증가할 때 gx1은 감소했고, ax1과 az1이 10,000~20,000에서 시작한 반면 일부 데이터는 0보다 아래에서 시작한 것을 확인할 수 있지요. 전체적으로는 두 번의 강한 진폭과 한 번의 약한 진폭이 나타나지만, 이 그래프만으로는 여전히 사용자의 감정을 추론하기 어렵습니다. 이처럼 복잡하게 설계된 시계열 데이터는 눈으로 분석하는 것만으로는 한계가 있어, 본 연구에서는 딥러닝 모델을 활용하여 신호들 간의 관계와 전체 패턴을 효율적으로 분석했습니다. 시계열 데이터 분석을 위한 딥러닝 모델 정도현: 그렇다면 선생님께서는 어떤 딥러닝 모델을 사용하셨나요? 김준: 제가 연구에서 실험해본 모델 중 기본적인 RNN, LSTM, GRU에 대해 설명드릴게요. RNN(Recurrent Neural Network)은 시계열 데이터를 처리할 수 있는 가장 기본적인 구조예요. 과거와 현재 데이터를 연결해서 미래를 예측할 수 있지만, 긴 시계열에서는 정보가 잘 사라진다는 단점이 있죠. LSTM(Long Short-Term Memory)은 이를 보완해, 과거 정보를 얼마나 기억할지, 혹은 잊을지를 선택할 수 있어요. 예를 들어, 과거 정보가 필요 없으면 Forget Gate가 삭제하고, 새로운 정보는 Input Gate를 통해 저장합니다. 최종적으로 Output Gate를 통해 예측 결과를 내보내죠. 실제로 제 연구에서 LSTM을 적용했을 때 정확도는 63.7%, F1-Score(정밀도와 재현율의 조화평균)는 63.02%였습니다. 나쁘진 않았지만, 계산량이 많고 무겁다는 한계가 있었어요. GRU(Gated Recurrent Unit)는 LSTM의 장점은 유지하면서 구조를 단순화해 계산량을 줄인 모델이에요. Reset Gate로 중요한 과거 정보를 선택하고, Update Gate에서 현재와 과거 정보를 얼마나 반영할지 결정하죠. 덕분에 LSTM보다 가볍고, 실제 플랫폼에서 시계열 분석을 수행하기 적합합니다. 제 연구에서는 GRU를 적용했을 때 정확도 82.11%, F1-Score 81.84%를 달성하며, LSTM 대비 약 30% 성능 향상과 25% 가벼운 모델을 얻을 수 있었어요. 정도현: 와, 같은 데이터라도 모델 구조에 따라 성능이 이렇게 달라지는군요. 김준: 맞아요. 각 모델은 구조와 장단점이 다르기 때문에, 연구 목적과 환경에 맞게 다양한 모델을 비교해 보는 과정이 큰 도움이 됩니다. ChatGPT를 활용한 딥러닝 모델 사용 정도현: 딥러닝 모델을 사용할 때 ChatGPT의 도움을 받으셨다고요? 김준: 맞아요. ChatGPT를 활용해 딥러닝 모델의 구현 코드를 생성했었어요. 정도현: ChatGPT를 활용할 때 팁이 있을까요? 김준: 핵심은 분석 목적과 방법 등 필요한 정보를 명확하게 전달하는 것입니다. 그래야 ChatGPT가 올바른 방향으로 코드를 구성할 수 있어요. [그림10]은 제가 본 연구에서 했던 질문 중 하나인데요. 제가 연구에서 사용한 데이터셋 hand_happy.csv에는 시간 정보와 수집된 행동 특징 값들이 포함되어 있었는데, 이런 정보를 ChatGPT에 정확히 제공해야 해요. 다음으로 연구 목적과 분석 목표를 작성하고, 분석에 사용할 모델과 입력·출력, 평가 지표 등을 명시하면 ChatGPT가 이를 반영하여 코드를 생성합니다. 이 과정을 거치면 [그림11]처럼 실제 파이썬 코드를 받을 수 있고, 이를 기반으로 직접 실험을 진행할 수 있습니다. 파이썬을 잘 몰라도, ChatGPT에 필요한 정보를 명확히 입력하면 충분히 파이썬 코드를 만들 수 있어요. 정도현: 비전공자들도 ChatGPT를 활용하면 코드를 쉽게 만들 수 있겠네요! 그런데 만약 코드에 오류가 있었다면 비전공자들이 대처하기는 어려울 것 같아요. 선생님께서 ChatGPT로 만드신 코드에는 오류가 없었나요? 김준: ChatGPT는 제가 원하는 코드를 바로 만들어주었고, 저는 그 코드를 컴퓨터를 통해서 실행만 시키면 되었는데요. 이때 몇 가지 오류가 발생했습니다. 그중 가장 흔한 오류는 데이터셋 경로를 찾지 못해 코드가 실행되지 않는 것이었어요. 정도현: 왜 그런 오류가 발생하는 걸까요? 김준: ChatGPT는 사용자의 컴퓨터 환경에 접근할 수 없기 때문이에요. 그래서 [그림10]처럼 질문을 작성해도 ChatGPT는 데이터셋 파일이 실제로 어디에 저장되어 있는지 알 수 없습니다. 이런 상태에서 단순히 “오류를 해결한 코드를 보여줘”라고 요청하면, ChatGPT는 여전히 파일 경로가 없는 상태의 코드를 반환할 수 있습니다. 따라서 ChatGPT에만 의존해서는 코드의 오류를 완전히 해결하기 어렵습니다. 정도현: ChatGPT의 특성 때문에 코드에 오류가 발생할 수 있음을 인지하고 있어야겠네요. 그렇다면 이런 오류들은 어떻게 해결하셨나요? 김준: 저는 이런 작은 오류들은 직접 확인하고 수정했어요. 스스로 공부해서 해결하는 편이 더 빠르고 정확했거든요. 이런 시행착오를 거치면서 ChatGPT가 출력한 코드에 오류가 있는지 스스로 점검하고 수정하는 능력을 기를 수 있었습니다. 마치며 이번 러닝팁에서는 제1저자의 연구 사례를 통해 복잡한 시계열 데이터를 분석할 때 딥러닝 모델을 어떻게 활용할 수 있는지 살펴보았습니다. 먼저 시계열 데이터를 전처리하는 과정에서 데이터의 속성을 정확히 파악하고, 데이터의 구조를 동일하게 맞추는 작업이 필요했습니다. 또 FFT와 STFT를 이용한 수학적 변환을 통해 시간과 주파수 특성을 모델에 학습시켜, 딥러닝 모델이 보다 풍부한 정보를 활용할 수 있음을 확인했습니다. 더불어 RNN, LSTM, GRU와 같은 다양한 딥러닝 모델을 비교하고 연구 목적에 맞게 선택하는 과정을 소개했습니다. 특히 GRU는 계산 효율을 높이면서도 정확도를 향상시켜, 시계열 데이터 분석에 효과적임을 보여주었습니다. 이를 통해 모델 구조와 특성을 이해하고 적절히 선택하는 과정이 데이터 분석 성능에 큰 영향을 미친다는 점을 알 수 있었습니다. 마지막으로, 연구 과정에서 ChatGPT를 활용해 딥러닝 모델 구현 코드를 작성하고, 코드에서 발생한 오류를 직접 점검하며 수정한 경험도 공유했습니다. 이를 통해 비전공자라도 생성형 AI를 보조 도구로 활용하여 딥러닝 모델을 실험하고, 문제를 스스로 해결할 수 있다는 점을 보여줍니다. 이번 러닝팁이 시계열 데이터 분석과 딥러닝 모델 활용을 이해하는 데 도움이 되길 바랍니다. Ref [1] Mienye ID, Swart TG, Obaido G. Recurrent Neural Networks: A Comprehensive Review of Architectures, Variants, and Applications. Information. 2024; 15(9):517. https://doi.org/10.3390/info15090517 [2] Zarzycki K, Ławryńczuk M. LSTM and GRU Neural Networks as Models of Dynamical Processes Used in Predictive Control: A Comparison of Models Developed for Two Chemical Reactors. Sensors. 2021; 21(16):5625. https://doi.org/10.3390/s21165625
-
- 작성일 2025-11-28
- 조회수 1291
- 좋아요5
- 첨부파일 (0)
-
- [CTL Learning Tips #9] 문맥을 고려한 자연어 데이터 분석, BERTopic을 위해 ChatGPT 활용하기
- 교수학습혁신센터-20250613 <출처표기방법>정우준, 정도현, 이상은(2025).문맥을 고려한 자연어 데이터 분석, BERTopic을 위해 ChatGPT 활용하기(CTL Learning Tips #9).서울: 성균관대학교 교수학습혁신센터 문맥을 고려한 자연어 데이터 분석, BERTopic을 위해 ChatGPT활용하기 정우준(성균관대 산업공학과 석사과정) 정도현(성균관대 신소재공학과 박사과정), 이상은(성균관대 교수학습혁신센터 교육학박사) 들어가며 지난 8호 러닝팁에서는 생성형 AI를 활용한 자연어 데이터 분석 1편으로, LDA 기반의 토픽 모델링을 통해 자연어 데이터를 주제별로 구조화하는 방법을 살펴봤습니다. 이번 호에서는 특허 자연어 데이터를 분석하기 위하여, ChatGPT를 활용하여 BERTopic 분석을 했던 제1저자(정우준, 산업공학과 석사과정)의 경험을 중심으로 ChatGPT와 함께 BERTopic 모델링을 통해 함께 자연어 데이터를 다루는 새로운 방법을 소개해드리고자 합니다. 정우준: 저에게 특허는 특정 분야에 대한 기업의 전략적 관심과 기술적 방향성을 읽어낼 수 있는 중요한 정보원입니다. 기술을 해석하고, 산업의 흐름을 읽어내고자 하는 저의 입장에서 특허는 ‘데이터’라기보다는 ‘텍스트에 담긴 전략’이라고 볼 수 있지요. 그래서 저는 기술 동향을 정량적·정성적으로 파악하고자 할 때, 자주 특허 데이터를 분석합니다. 정도현: 그러시군요. 저는 특허라는 말은 많이 들어봤지만, 특허 데이터가 어떤 데이터인지는 많이 생소해요. 정우준: 제가 특허 데이터라고 말씀드린 데이터는 아래 이미지와 같아요. 이런 형식의 특허 초록 데이터를 수천 건 넘게 일일이 읽어서 파악하는 것은 현실적으로 불가능하고, 이전에 키워드를 중심으로 이루어졌던 분석은 문맥을 놓치는 한계가 분명했어요. 그래서 저는 이런 한계를 극복하고자 문맥을 반영해 주제를 자동 추출할 수 있는 BERTopic 모델을 적용하기로 했고, ChatGPT를 활용해 분석의 전 과정에서 함께 협업하게 되었습니다. 정도현: 예시 이미지를 보니, 특허 데이터에는 기술에 관한 여러 정보가 포함되어 있네요. 이걸 종합하면 산업의 흐름과 기술 동향을 파악하는데 유용할 것 같아요. 그렇다면 BERTopic 모델을 활용해서 어떻게 분석하는지 좀 더 설명해주시겠어요? 정우준: 네, 특허 데이터는 일반 뉴스나 SNS보다 더 형식적이고, 특정 산업에 특화된 언어를 사용해요. 그래서 그 문맥을 살려 분석하는 것이 매우 중요합니다. 따라서 저는 BERTopic을 활용하여 복잡한 특허 초록을 문맥 기반으로 구조화하고, ChatGPT를 활용하여 각 토픽의 의미, 기회, 위협을 자연어로 정리하고자 했습니다. 이 분석의 목표는 방대한 특허 데이터를 한눈에 파악가능한 기술 지도로 바꾸고, 기술 기획이나 정책 설계에 바로 참고할 수 있도록 해석하는 것이었어요. 정도현: 데이터 분석을 통해 중요한 시사점을 찾는군요. 그럼 ChatGPT를 활용한 것은 BERTopic 분석에 어떻게 도움이 되었나요? 정우준: ChatGPT 활용은 저 자신에게 ‘AI와 함께하는 새로운 연구 방식’을 실험하는 기회였다고 말씀드릴 수 있을 것 같아요. 저는 사회과학적 지식을 기반으로 기술을 해석해왔기에, 머신러닝이나 딥러닝 기반의 언어모델을 다루는 것이 처음에는 부담스러웠습니다. 하지만 ChatGPT는 이 과정에서 든든한 파트너가 되어주었어요. 코드를 작성하고, 오류를 해결하며, 결과를 해석하는 과정에서 반복되는 시행착오를 해결하는데 시간을 쓰는 대신, 저는 '왜 이 방법이 맞는가'를 이해하는 학습의 기회를 가질 수 있었습니다. 이제 제 실제 경험을 좀 더 구체적으로 소개해드릴게요. 특허 데이터 분석, 왜 어렵고 왜 재미있나? 정우준: 특허 데이터를 분석하는 일은 일반적인 뉴스 기사나 블로그 글을 분석하는 것과는 조금 달라요. 겉으로 보기엔 똑같은 텍스트처럼 보이지만, 특허는 그 안에 아주 독특한 정보들이 담겨 있어요. 예를 들면 기술 분류 코드(CPC, IPC), 인용된 다른 특허, 출원인, 출원일 같은 정형화된 정보가 있고, 동시에 초록(abstract)이나 청구항(claims)처럼 자유롭게 서술된 텍스트도 함께 있죠. 그래서 분석할 수 있는 범위도 훨씬 넓고, 복잡합니다. 정도현: 예, 정말 그렇네요. 정형 데이터와 비정형 텍스트가 같이 있다 보니 분석 난이도가 높을 것 같아요. 정우준: 저는 이 독특한 특허 데이터를 가지고, 기술이 어디로 흘러가고 있는지를 알아보고 싶었어요. 기업들이 어떤 기술 분야에 관심을 가지고 있는지, 지금 기술 개발이 활발한 영역은 어디인지, 그리고 앞으로 기회가 있을 만한 주제는 뭔지를 읽어내고 싶었어요. 그런데 문제는, 이 많은 특허 문서를 사람이 하나하나 다 읽을 수는 없다는 것이었죠. 그래서 선택한 방법이 바로 BERTopic이라는 도구였습니다. 정도현: 특허 데이터의 최근 흐름을 분석해 앞으로 기술의 나아갈 방향을 예측할 수 있어 재미있다는 것이군요. 특허 데이터 특성상 문맥을 고려하는 BERTopic 모델링을 사용해 분석하는 것이 적합하다고 판단하셨고요. 그렇다면 BERTopic은 구체적으로 어떠한 분석 방법인가요? BERTopic, 기술의 흐름을 '읽어주는' 친구 정우준: 기존에 많이 쓰이던 LDA라는 분석 방법은, 텍스트 속에서 자주 같이 나오는 단어들을 기반으로 주제를 찾는 방식이에요. 그런데 BERTopic은 한 단계 더 나아가, 문장 하나하나의 ‘의미’를 먼저 파악하고 그 의미가 비슷한 문장끼리 묶어주는 방식이지요. 쉽게 말하면, ‘이 문장과 저 문장이 비슷한 이야기인지’를 AI가 먼저 이해하고, 비슷한 이야기들끼리 주제 그룹으로 묶어주는 거죠. 이 과정을 가능하게 해주는 것이 바로 BERT라는 언어 모델인데, 저처럼 딥러닝을 전공하지 않은 사람도 ChatGPT와 함께라면 충분히 시작할 수 있었습니다. 정도현: 저도 ChatGPT를 활용해 분석한 경험이 있어, “함께” 한다는 것이 어떤 느낌인지 알 것 같아요, 그럼 BERTopic으로 분석할 때 어떤 단계를 거쳐야 하나요? 전체 흐름을 한 번 짚어주시면 더 이해하기 쉬울 것 같아요. 정우준: 예, 그럼 분석 단계를 큰 틀에서 먼저 설명해볼게요. 분석은 이렇게 했습니다: 단계별로 천천히, 하지만 확실하게 1. 데이터 수집 정우준: 처음 해야 할 일은 특허 데이터를 모으는 일이었어요. 저는 보통 KIPRIS 같은 특허 검색 사이트나, PatentSearch API 같은 도구를 사용해요. 관심 있는 기술 분류(CPC/IPC)나 키워드를 기준으로 검색하면, 초록, 청구항, 출원인 정보 등을 함께 가져올 수 있어서 좋습니다. 2. 텍스트 정리 정우준: BERTopic은 문장의 의미를 그대로 살리는 방식이라, 너무 많이 손대지 않는 게 오히려 좋아요. 불필요한 특수문자나 중복 문장만 제거하고, 형태소 분석기를 써서 단어들을 정리하는 정도로 마무리했어요. 한국어의 경우에는 KoNLPy나 Okt, 영어는 spaCy를 써서 처리했죠. 3. 토픽 모델링 (주제 찾기) 정우준: 이제 본격적으로 의미 있는 주제들을 찾아내는 단계입니다. 문장 하나하나를 컴퓨터가 이해할 수 있는 숫자(벡터)로 바꾸고, 비슷한 문장들을 서로 가까운 그룹으로 묶는 과정을 거쳐요. 저는 이 과정을 통해 정말 흥미로운 결과를 얻었어요. 예를 들면, 어떤 그룹은 ‘AI 진단 기술’, 또 다른 그룹은 ‘배터리 성능 개선’ 같은 주제로 뚜렷하게 묶이더라고요. 4. 시각화와 해석 정우준: 마지막으로 이 주제들을 보기 좋게 정리하고 해석하는 작업을 했어요. BERTopic에는 토픽을 시각화할 수 있는 함수도 기본으로 포함되어 있어서 쉽게 그림으로 확인할 수 있었고, 특히 ChatGPT를 활용하면 각 주제가 어떤 의미를 갖는지 자연어로 정리해주어 큰 도움이 되었어요. 예를 들어 "이 주제는 어떤 기술 트렌드를 말하는 걸까?", "이 주제는 성장가능성이 높을까?" 같은 질문을 GPT에게 던지면, 마치 동료 연구자처럼 의견을 주는 느낌이 들었습니다. 특히 출원 연도별로 주제가 어떻게 변화했는지, 어느 기업이 어떤 주제를 주도하는지까지 분석하면서, 기술 전략을 짜는 데 활용할 수 있는 인사이트를 얻게 되었어요. 정도현: BERTopic을 진행하는데도 ChatGPT를 활용하셨겠지만, BERTopic 분석으로 뽑아낸 Topic들의 의미를 자연어로 정리하고, 해석하는데에도 도움이 되었군요! 그럼 구체적으로 어떻게 ChatGPT를 활용해 분석을 진행했는지 단계별로 알려주시겠어요? ChatGPT와 함께하는 실제 분석은 이러했습니다 ChatGPT와 함께 특허 데이터 수집하기 정우준: 네, 이제 실제로 ChatGPT의 도움을 받아 분석을 본격적으로 진행했던 경험을 소개해볼게요. 제가 처음 특허 데이터를 분석하려고 했을 때 가장 먼저 막힌 부분이 바로 “어떤 검색어로 검색하지?”였습니다. 어떤 기술 키워드로 특허를 검색할지, 기술 분류 코드(CPC, IPC)는 무엇을 포함해야 할지 막막하더라고요. 이럴 때 ChatGPT는 정말 유용한 조력자가 되어주었습니다. 예를 들어, “이차전지 관련 건식 전극 기술에 대한 특허를 수집하려고 해. 관련 키워드와 CPC 코드를 추천해줘”라고 GPT에게 물어보면, 생각보다 매우 구체적이고 실용적인 답변을 해줘요. GPT는 "dry electrode", "dry coating", "solvent-free process", "dry processing", "dry film electrode", "dry fabrication" 등과 같은 검색어를 제시해주고, 각 키워드가 왜 중요한지도 간단히 설명해줍니다. 그 덕분에 검색식 초안을 빠르게 구성할 수 있었죠. 저는 이 정보를 기반으로 실제 특허 데이터 수집에 활용했습니다. 미국 특허청(USPTO) 같은 데이터베이스에 들어가 GPT가 제안한 키워드를 바탕으로 검색식을 만들었고, 이를 기반으로 특허 검색을 하여 엑셀파일 형태의 요약(abstract) 데이터를 모을 수 있었어요. GPT는 단순히 단어를 나열해주는 게 아니라, 기술 흐름까지 고려해서 키워드를 골라주는 느낌이었어요. 무엇보다 좋았던 점은, 반복 질문을 통해 검색어를 계속 다듬을 수 있다는 거예요. “좀 더 구체적인 재료 이름을 알려줘” 혹은 “최근 5년 사이에 등장한 키워드 중심으로 추천해줘” 처럼 제가 추가하는 프롬프트에 대해서도 GPT는 유연하게 반응해줍니다. 결국 저는 GPT를 통해 단기간에 훨씬 정교한 검색어 목록을 확보했고, 특허 데이터를 수집하는 효율도 크게 높일 수 있었어요. 정도현: ChatGPT를 활용해 검색할 키워드와 기술 분류 코드를 찾고, 검색식을 만드는데 큰 도움을 받으셨군요. 이를 통해 요약(abstract) 중심 데이터를 수집하셨다는 말씀은, 정우준님이 GPT가 제시해준 키워드를 토대로 직접 특허사이트 키워드 검색을 통해 엑셀파일 형태로 수집하셨단 뜻인가요? 이부분 또한 GPT의 도움을 받았다면 어떤식으로 받았는지 궁금합니다. 정우준: 네, GPT의 도움을 받아 특허 검색에 활용할 키워드와 기술 분류 코드를 도출했고, 이를 바탕으로 특허사이트에서 직접 검색해 데이터를 수집했습니다. 예를 들어, 연구 주제를 GPT에게 설명하면 관련 키워드를 제안해주고, 해당 키워드에 연결될 수 있는 IPC/CPC 코드도 함께 추천해주었습니다. 이후 GPT가 제시한 키워드와 코드를 기반으로 Boolean 검색식을 구성해 특허포털(WIPS 등)에서 요약(abstract) 중심 데이터를 수동으로 수집하고, 엑셀로 정리했습니다. 즉, GPT는 키워드 탐색, 기술 분류 연결, 검색식 설계 등 검색 설계 전반에서 도우미 역할을 했고, 실제 데이터 수집은 제가 직접 진행했습니다. ChatGPT와 함께 구글 Colab 분석환경 설정하고, 데이터 전처리 하기 정도현: 그렇다면 수집한 데이터는 본격적으로 어떻게 분석했나요? 정우준: 이렇게 확보한 엑셀형식의 특허 데이터는 먼저 구글 드라이브에 업로드하고 분석 환경을 설정하였어요. Colab 아이디로 로그인 후 개인에게 할당된 구글 드라이브에 특허 요약 엑셀파일을 올립니다. 저는 patent abstract data.xlsx라는 이름으로 업로드를 완료한 후, 아래 Step 순서를 따라서 Colab 분석 환경을 설정하고, ChatGPT를 활용하여 구글 드라이브와 연동하고 경로 수정을 위한 코드를 짰어요. 첫번째 단계 ‘Step 1. Data Load’에서 특허데이터를 업로드하고 abstract 만 추출하고자 했어요. 이를 위해 ChatGPT에 “Colab 작업환경에서 업로드한 파일의 데이터를 로드하려고해, 데이터는 abstract열을 가져올꺼야. 사용가능하게 코드 짜줄래?”라고 프롬프트를 쓰면 아래와 같은 코드를 알려줍니다. 두번째 단계 ‘Step 2. Data Preprocessing’에서 데이터 전처리를 위한 프롬프트인 “abstract열의 데이터에 대해서 불용어 및 전처리를 진행해볼꺼야. 사용가능하게 코드 짜줄래?”라고 ChatGPT에 보냈어요. ChatGPT는 ‘I”, “my”, “me” 등 데이터 분석대상에서 제외할 불용어 전처리를 위한 코드를 알려줍니다. 이러한 데이터 전처리를 통해 분석결과에서의 노이즈를 줄이고, 신뢰성을 높일 수 있게 되어요. 자연어 특허 데이터 분석하기 정도현: 이제 본격적인 분석을 시작할 준비가 된 것으로 보이는데요? 정우준: 예, 맞습니다. 이제 본격적으로 BERTopic을 활용한 주제 분석 단계에 들어갈 수 있습니다. 수집한 특허 요약 데이터를 바탕으로 어떤 기술적 주제들이 존재하는지를 자동으로 구조화해보는 것이지요. 이전에 LDA 기반 분석을 통해 단어 빈도 기반의 주제를 확인해봤다면, 이번에는 문장의 의미 자체를 반영할 수 있는 방식으로 접근해보는 거죠. LDA가 '단어의 동시 출현'을 분석하는 방식이라면, BERTopic은 '문장의 의미'를 벡터로 표현해 분석한다는 점에서 큰 차이가 있습니다. 이런 접근은 특히 기술 문서나 특허처럼 문장 단위 정보가 중요한 데이터에 더욱 적합해요. 정도현: 어떠한 이유로 BERTopic의 벡터 표현 분석이 적합한지 원리를 간단하게 설명해 주실 수 있을까요? 문장단위 정보가 중요한 데이터라면, 가령 키워드와 어울리는 서술어의 조합의 변화를 본다던가 하는 것인가요? 정우준: BERTopic은 사전학습된 BERT 모델을 활용해 문장을 고차원 의미 벡터로 임베딩하고, 이 임베딩 간의 거리 기반으로 HDBSCAN 클러스터링을 수행해 주제를 도출해요. 이러한 방식은 단어 간 동시 출현을 전제로 하는 LDA와 달리, 단어 순서, 구문 구조, 문맥 정보를 반영할 수 있어 기술 서술처럼 문장 수준 의미가 중요한 데이터에 특히 효과적입니다. 예를 들어, 동일한 키워드인 ‘건식공정’을 포함하더라도 "건식공정을 활용한 제조 기술"과 "건식공정 제조 알고리즘"처럼 문장의 의미 차이를 구별해 기술 흐름이나 개념 전환을 보다 정밀하게 포착할 수 있습니다. 정도현: 정말 그렇네요. ‘건식공정’ 키워드를 더 구체화하는 문맥정보를 포함하니, 데이터를 정밀하게 구분해주는 분석이 가능하겠어요. 정우준: 그럼 이번 단계에서는 BERTopic의 실제 코드와 결과를 기반으로, 어떤 주제들이 의미 중심으로 추출되었는지 살펴볼까요? 세번째 단계 ‘Step 3. Bertopic Modeling’에서 저는 ChatGPT에게 “우리는 특허 abstract 데이터를 전처리 하였고 이를 통해 BERT 토픽을 실행하고 싶어. 이를 진행할 코드 짜볼래?”라고 간단한 질문을 하였습니다. 그 결과, 'BERTopic 모델 초기화', ‘텍스트 데이터 준비’, ‘모델 학습’, ‘토픽 간 관계 시각화’, ‘토픽 계층도 시각화’, ‘토픽별 키워드 바차트 시각화’ 등 단계별 코드를 제시해주었습니다. BERTopic 모델링에서 겪은 시행착오와 교훈 정도현: ChatGPT를 활용하니 BERTopic을 위한 코드를 쉽게 얻을 수 있군요. 혹시 BERTopic을 실행하면서 막히거나 어려운 점은 없었나요? 정우준: 물론 있었지요. 제가 BERTopic을 처음 써볼 때 가장 당황했던 건 버전 호환성 문제에 맞닥뜨렸을 때였어요. 저는 최신 버전이 좋은 줄 알고 아무 생각 없이 pip install bertopic으로 설치했는데, 알고 보니 ChatGPT로부터 받은 코드 예시 대부분이 예전 버전을 기준으로 한 코드더라고요. 예를 들어 visualize_distribution() 같은 시각화 함수가 topics나 probabilities를 입력받는 방식이 버전에 따라 다른데, 저는 GPT를 통해 생성된 코드를 그대로 사용하다보니 “TypeError”가 계속 나서 많이 당황하였죠. 나중에 알고 보니 GitHub에 명시된 change log에 다 나와 있었어요. 그 이후로는 항상 알맞은 버전을 설치하고, 해당 버전에 맞는 문서만 참고하려고 해요. 정도현: 그런 일이 생길 수 있겠네요. 저도 코드에서 오류를 많이 경험한 터라 “TypeError”라는 말을 듣기만 해도 당황이 되는군요. 정우준: 또 하나, 대학원생들이 많이 저지르는 실수 중 하나가 토픽 개수를 욕심내서 설정하는 경우에요. “내 데이터 크면 당연히 많은 토픽이 나와야지!” 하고 min_cluster_size를 작게 잡으면, 비슷한 토픽이 중복되거나 너무 조각난 주제들이 나와서 오히려 해석이 어려워져요. 저도 처음엔 토픽을 많이 뽑고 싶어서 이 값을 20로 뒀는데, 결과가 너무 산만해져서 결국엔 절반 이상을 다시 합쳐야 했어요. 그 뒤로는 일단 적당히 큰 값으로 잡고, 부족하다 싶을 때 세분화하는 식으로 접근하고 있어요. 정도현: 큰 데이터를 갖고 분석을 시작하면 당연히 토픽 개수에 욕심 날 것 같아요. 그럼 이제 분석해 도출된 주제(topic)들은 어떻게 시각화하고 해석하는지 소개해주시겠어요? BERTopic 분석 결과 시각화하고 해석하기 정우준: BERTopic을 활용해 특허 요약문 데이터를 주제별로 분류하고 나면 분석 결과를 시각화하고 해석하는 단계로 들어가요. 주제 모델링의 목적은 단순히 군집을 나누는 데 그치지 않고, 각 토픽이 어떻게 구성되어 있고, 어떤 관계를 가지며, 어떤 흐름을 보이는지를 이해하는 것에 있습니다. 이를 위해 저는 토픽 단어 점수, 토픽 간 거리 지도 같은 다양한 시각화 도구를 활용하였어요. 하나씩 좀더 구체적으로 설명드릴게요. Step 4.1 토픽 단어 점수(Topic word score)로 시각화하기 정우준: BERTopic 결과에서 생성한 토픽 단어 점수는 각 토픽을 대표하는 주요 키워드를 그래프로 시각화하여, 해당 주제의 중심 내용을 직관적으로 보여주는 방식이예요. 이를 통해 토픽 간의 차이를 한눈에 비교할 수 있고, 숫자나 표만으로는 파악하기 어려운 주제의 분위기나 흐름을 쉽게 이해할 수 있습니다. 아래 토픽 그래프를 보시면, X축은 각 단어의 중요도를 나타내며, BERTopic이 토픽별로 단어의 대표성을 수치화한 값입니다. 이 값은 class-based TF-IDF(c-TF-IDF) 방식으로 계산되며, 해당 단어가 특정 토픽에 속한 문서들에서 얼마나 자주 등장하고, 동시에 다른 토픽에서는 얼마나 드물게 나타나는지를 반영합니다. 따라서 X축 값이 높을수록 그 단어는 해당 토픽을 특징짓는 핵심 키워드로 작용하며, 토픽 해석 시 중심 개념으로 활용될 수 있습니다. 정도현: 오, ‘토픽 단어 점수’ 시각화를 통해 토픽을 대표하는 주요키워드를 한눈에 볼 수 있군요. Step 4.2. 토픽간 거리 지도로 시각화하기 정우준: 다음으로 제가 시각화 자료로 활용한 것은 전체 코퍼스 내 주제들 간의 관계를 2차원 공간상에 시각화하는 ‘토픽 간 거리 지도(Intertopic Distance Map)’예요. 아래 그래프에서 각 원은 하나의 주제를 나타내며, 원의 크기는 데이터셋 내에서 토픽의 비중을 의미하고, D1 축과 D2 축에서 원의 위치는 의미론적 구조에 따른 토픽 간에 유사한 정도와 차이가 나는 정도를 보여줍니다. 정도현: 이 거리지도를 통해 위에서 언급하였던 min_cluster_size 등을 통한 분석 설정이 최적화되었음을 확인할 수 있는건가요? 분석이 잘 된 경우와 그렇지 않은 경우를 비교해볼 수 있으면 좋을 것 같아요. 정우준: 예, 맞습니다. Intertopic Distance Map은 주제 간의 의미론적 유사도를 시각적으로 보여주는 도구로서, 토픽 개수 선정이 적절했는지를 판단하는 데 유용하게 활용될 수 있어요. 토픽 개수 선정이 잘 된 경우, 아래 왼쪽 그림과 같이 ‘토픽 간 거리 지도’에서 서로 의미가 겹치지 않는 토픽들이 일정한 간격을 두고 고르게 분포하며, 의미적으로 중복되지 않는 주제들이 분리된 군집 형태로 나타납니다. 이는 min_cluster_size 등 클러스터링 파라미터 설정이 적절했음을 시사하며, 분석자가 각 토픽을 명확히 해석할 수 있는 상태라고 할 수 있지요. 그에 반해, 잘못된 경우에는 아래 오른쪽 그림과 같이 여러 개의 토픽 원이 한곳에 겹쳐 있거나 지나치게 가까운 거리로 뭉쳐 있는 경우가 많습니다. 이는 서로 유사한 문장들이 지나치게 세분화되어 다수의 중복된 토픽으로 나뉘었거나, 반대로 이질적인 내용이 하나의 큰 토픽으로 묶였다는 의미일 수 있습니다. 이 경우 토픽 간 구분이 불명확해지고 해석의 의미도 희석되기 때문에, 파라미터 재조정 또는 토픽 수 재설정이 필요합니다. 정우준: 한가지 예시를 더 보여드릴게요. 아래 지도를 살펴보면, Topic 0과 Topic 1같은 주제는 서로 명확하게 구분되는데 반해, 다른 주제들은 서로 가까이 위치하므로 주제 간에 중복될 가능성이 있음을 시사해요. 예를 들어, 중앙에 위치한 Topic 0은 가장 큰 원으로 나타나며, 이는 해당 주제가 전체 데이터셋에서 중심적 역할을 한다는 것을 의미합니다. 반면, 그래프의 왼쪽 아래에 있는 Topic 1, Topic 2, Topic 3 은 서로 가까이 클러스터링되어 있어 유사한 주제 구조를 가짐을 보여줍니다. 한편 오른쪽 아래에 떨어져있는 Topic 6과 7은 데이터셋 내에서 주제적 독립성이 높다는 것을 시사합니다. 이러한 분포는 데이터셋 내 주제적 다양성을 강조하며, c-TF-IDF 접근 방식이 유의미한 주제 구조를 포착하는 데 효과적임을 보여줍니다. 다음 단계의 분석에서 주제 수를 정교하게 조정함으로써 해석 용이성과 모델 견고성을 더욱 향상시킬 수 있을 것입니다. 정도현: ‘토픽 간 거리 지도’를 통해 토픽 간의 유사성과 차이점을 파악 할 수 있는 거군요. 이것도 역시 ChatGPT가 짜준 시각화 코드를 버전에 맞는 BERTopic에 입력해 생성하는 것이지요? 정우준: 네, 맞아요. 토픽 간 거리 지도(Intertopic Distance Map)는 BERTopic 모델의 내장 함수인 visualize_barchart() 또는 visualize_topics() 등을 활용해 생성되며, 이는 ChatGPT가 제공한 시각화 코드와 함께 현재 사용 중인 BERTopic 버전에 맞춰 실행하면 자동으로 생성됩니다. Step 4.3 계층적 주제 분류로 시각화하기 정우준: 마지막으로 제가 소개할 시각화 방법은 계층적 주제 분류예요. 단순한 주제 분류를 넘어 주제 간의 관계와 구조를 파악하고자 할 때 계층적 군집분석(Hierarchical Clustering)을 하며, 이 결과를 시각적으로 보여주는 도식이 주제 간 계층적 관계를 나타내는 덴드로그램(dendrogram)입니다. x축은 주제 간 비유사성 거리(dissimilarity)를, y축은 대표 키워드를 기준으로 라벨링된 주제를 나타냅니다. 이 계층 구조는 유사한 주제를 반복적으로 병합하여 구성되며, 주제 간 의미론적 유사성 기반의 그룹화를 제공하지요. 예시로 제 BERTopic 분석에서 나온 계층적 군집분석 결과를 살펴보면, 두 개의 주요 가지로 나뉘는 구조를 보여주었어요. 첫 번째 녹색 클러스터는 microled, etching, actuator, sensor 관련 주제들을 포함하며, 이는 전자공학, 센서 기술, 마이크로 가공 기술과 관련된 공통된 테마를 지닙니다. 두 번째 빨간색 클러스터는 electrochemical, corrosion, discharge, environmental 관련 주제들을 포함하고 있으며, 이는 재료과학, 방전 공정, 저항률 측정 등의 연구와 관련되어 있습니다. 낮은 비유사성 값에서 병합된 주제일수록 강한 유사성을 가지며, 높은 값에서 병합된 주제는 주제 간 뚜렷한 차이를 나타내어요. 이러한 클러스터 구조는 주제 간 숨겨진 관계를 발견하는 데 효과적이며, 연구자에게 유의미한 주제 연결성과 구조적 통찰을 제공하지요. 정도현: 계층적 주제 분류 결과는 앞서 살펴본 Step 4.1과 4.2 시각화결과와 어떤 관련이 있는건가요? 정우준: 4.1 토픽 단어 점수, 4.2 토픽 간 거리 지도, 4.3 계층적 군집 분석은 각각 독립적인 시각화 도구처럼 보이지만, 실제로는 의미 있는 분석 순서를 따르는 구조적 관계가 있어요. 먼저 ‘토픽 단어 점수’는 각 토픽을 구성하는 핵심 키워드의 중요도를 보여주며, 개별 토픽의 내용을 해석하는 데 초점을 맞춥니다. 그다음으로 ‘토픽 간 거리 지도’는 이처럼 해석된 토픽들이 전체 의미 공간에서 얼마나 유사하거나 다른지를 시각적으로 보여주며, 주제 간 관계성을 탐색하는 데 유용합니다. 마지막으로 ‘계층적 군집 분석’은 거리 기반의 유사도를 바탕으로 토픽들을 반복적으로 병합해나가며, 전체 주제 구조를 계층적으로 정리해 주는 것이지요. 정도현: BERTopic 을 사용해 자연어 데이터를 분석해 주제를 뽑아내고, 여러가지 시각화까지 가능하다니 놀랍네요. 시각화한 분석결과를 해석하는데 ChatGPT를 어떻게 활용하셨는지 조금 더 구체적으로 설명해 주시겠어요? 정우준: 네, 시각화한 BERTopic 분석 결과를 해석할 때 ChatGPT는 매우 유용한 보조도구였어요. 예를 들어, 토픽 단어 점수에서 각 토픽에 포함된 키워드들을 ChatGPT에 입력하면, 이 키워드 조합이 어떤 기술이나 개념을 의미할 수 있는지 전문적인 배경지식을 바탕으로 해석해줬거든요. 또한 토픽 간 거리 지도(Intertopic Distance Map)이나 덴드로그램처럼 복잡한 구조를 가진 시각화에서는 토픽 간 의미론적 유사성, 토픽 간 중복 여부, 분석 파라미터 설정의 적절성(min_cluster_size 등) 등을 설명해주며, 결과 해석의 방향성을 제시합니다. 특히, 의미가 애매하거나 겹치는 토픽이 나올 경우, ChatGPT는 키워드 기반으로 해당 토픽의 잠재적 의미를 명확히 정리해주는 역할을 하여 해석의 신뢰도와 일관성을 높일 수 있었다는 점에서 정말 유용한 도구였어요. 맺으며 이번 러닝팁에서는 특허라는 독특하고 복합적인 자연어 데이터를 BERTopic이라는 문맥 기반 토픽 모델링 기법을 활용해 어떻게 구조화할 수 있는지를 다뤘습니다. 특히 제1저자의 실제 분석 경험을 중심으로, ChatGPT와의 상호작용을 통해 분석 초기 단계부터 결과 해석에 이르기까지 생성형 AI가 어떤 방식으로 분석 전 과정을 지원할 수 있었는지를 상세히 소개드렸습니다. 기존의 LDA 모델이 단어의 동시 출현 빈도를 기반으로 주제를 찾았다면, BERTopic은 문장의 의미 자체를 이해하고 문맥적으로 유사한 내용을 묶어주는 방식이라는 점에서, 보다 정교한 주제 구조 파악이 가능했습니다. 특히 기술적 맥락이 중요한 특허 데이터에 BERTopic을 적용한 것은 기술 흐름과 산업 전략의 방향을 탐색하는 데 매우 효과적인 접근이었으며, 문장 수준의 의미 해석이 핵심이 되는 분석에 적합한 방법론임을 확인할 수 있었습니다. 이러한 분석을 수행하는 데 있어, 생성형 AI인 ChatGPT는 단순히 프로그래밍을 도와주는 보조도구를 넘어서, 연구자의 생각을 정리하고 분석 방향을 설계하는 데 실질적인 ‘지적 파트너’로 작용했습니다. 키워드 탐색, 기술 분류 코드 매핑, 검색식 설계, 전처리 및 모델링 코드 작성, 그리고 최종 해석에 이르기까지 모든 단계에서 GPT는 빠르고 유연하게 대응하며 연구자의 시간을 절약해주었고, 분석의 일관성과 깊이를 동시에 확보할 수 있도록 도와주었습니다. 뿐만 아니라, 오류 메시지의 원인을 파악하거나 모델의 동작 방식을 설명받는 과정에서도 GPT의 피드백은 시행착오의 부담을 줄이고 학습의 밀도를 높이는 데 기여했습니다. 결국 이러한 경험은 단지 하나의 분석 사례를 넘어서, 각 분야 전문성이 중요한 복잡한 데이터도 비교적 낮은 진입장벽으로 접근할 수 있으며, 학제 간 융합연구도 훨씬 더 실험적이고 독립적으로 수행할 수 있게 되었음을 보여줍니다. 데이터의 양이 많아질수록 중요한 것은 '무엇을 읽을 것인가'와 '어떻게 해석할 것인가'입니다. BERTopic과 ChatGPT는 이 두 질문에 대한 유용한 도구이자 파트너로, 앞으로의 연구자들에게 더 많은 기회를 제공해줄 것입니다.
-
- 작성일 2025-06-13
- 조회수 5921
- 좋아요17
- 첨부파일 (0)
-
- [CTL Learning Tips #8] 자연어 데이터인 뉴스 분석을 위해 ChatGPT 활용하기
- 교수학습혁신센터-20250509 <출처표기방법>이상은, 정도현, 이승원(2025).자연어 데이터인 뉴스 분석을 위해 ChatGPT 활용하기(CTL Learning Tips #8).서울: 성균관대학교 교수학습혁신센터 자연어 데이터인 뉴스 분석을 위해 ChatGPT활용하기 이승원(성균관대 행정학과 박사과정) 정도현(성균관대 신소재공학과 박사과정), 이상은(성균관대 교수학습혁신센터 교육학박사) 들어가며 이승원: 정도현 선생님, 드디어 자연어 처리(NLP)를 함께 다룰 차례네요! 이미지 분석하실 때 Chat GPT로 복잡한 코드 부담을 줄이셨다고 하셨죠? 정도현: 맞아요. 덕분에 기술 장벽이 확 낮아졌죠. 그런데 텍스트 데이터는 또 다른 도전일 것 같아요. 이승원: 특히 사회과학 분야에서는 이미지 데이터 뿐만 아니라 텍스트, 그 중에서도 뉴스 텍스트가 중요하답니다. 뉴스는 단순한 사건 기록이 아니라 여론과 정책 변화의 방향, 더 나아가 권력 구조까지 보여주는 정보의 보고(寶庫)거든요. 이러한 텍스트를 분석하는 과정은 매우 복잡하지만, 요즘은 Chat GPT와 같은 생성형 AI를 활용하여 기술적 구현에 구애받지 않고 연구에만 집중할 수 있답니다. 이승원: 예를 들어 ‘뉴스 프레이밍(framing)’은 뉴스가 어떤 시각으로 전달하는지를 분석하는 건데, 정책에 대한 표현에 따라 그에 대한 인식, 태도, 행동이 달라질 수 있기 때문에 정책 수용성 연구나 여론 분석에서 프레이밍 분석은 아주 중요해요. 정도현: 개념적으로 흥미롭네요. 그런데 이런 담론이나 프레임 같은 개념적 요소를 어떻게 정량적으로 분석하나요? 이승원: 좋은 질문이에요! 사회과학에서의 데이터 분석은 주로 언어의 맥락과 그로 인한 사회적 영향까지 고려해요. '프레이밍'에서는 단어들의 빈도, 감성 표현, 강조되는 주제 등을 파악하여 정보를 입체적으로 분석하는 과정을 거쳐요. 이를 바탕으로 연구자의 해석이 더해져 복합적인 분석이 이루어지는데, 그 균형을 잡아주는 것이 바로 AI 도구들이라고 할 수 있지요. 생성형 AI를 활용하여 대량 데이터의 반복적인 작업은 덜고, 연구자는 결과에 대한 해석, 이론화, 사회적 맥락 분석에 더 집중할 수 있답니다. 뉴스 텍스트 분석을 위한 필수 5단계 가이드 정도현: 구체적인 분석 절차도 궁금한데요? 이승원: 보통 다섯 단계로 나뉘어요. 먼저 웹 스크래핑을 활용하여 분석할 뉴스 데이터를 수집하고(Data Collection), 텍스트 전처리 과정(Text Preprocessing)을 거쳐서 토큰화나 불용어 제거 등을 해요. 그 다음 감성 분석 등의 기초 분석(Basic Analysis)을 하고, 토픽 모델링(LDA)이나 네트워크 분석 같은 심화 분석으로 들어가죠. 마지막은 시각화와 보고서 작성(Interpretation, Visualization & Reporting)인데, 이때 단어 구름(Word Cloud)나 토픽 시각화 도구(pyLDAvis 등)를 활용해 설득력 있게 전달해요. 분석 과정은 실험처럼 유연하고 반복적이기 때문에, 전체 흐름을 이해하고 있는 게 정말 중요하답니다. GPT와 함께 뉴스 데이터 수집하고 전처리하기 이승원: 자, 이제 이론적인 단계를 넘어, 실제로 GPT의 도움을 받아 분석을 진행하는 예시를 살펴볼까요? GPT는 특히 코드를 처음 작성하거나, 특정 라이브러리 사용법을 익힐 때 아주 유용한 출발점을 제공해줄 수 있어요. 아까 데이터 수집 단계에서 웹 스크래핑(Web Scraping)을 언급했죠? 예를 들어, 특정 뉴스 웹사이트의 정치 섹션에서 기사 제목, 본문 첫 문단, 발행 날짜를 가져오고 싶다고 해봅시다. 그런데 코드를 처음부터 혼자 작성하긴 막막할 수 있어요. 이럴 때 GPT에게 이렇게 물어보면 됩니다. GPT에게 이렇게 프롬프트를 주세요. GPT는 이렇게 기본 구조의 코드를 제안해줘요. 예를 들어 이런 식이죠. [부록 code 1] 참고 “파이썬과 BeautifulSoup을 이용해서 특정 뉴스 웹사이트(예: ‘OO뉴스’)의 정치 섹션에 있는 기사들의 제목, 본문 첫 문단, 발행 날짜를 가져오는 코드를 작성해줘. 각 기사 정보를 딕셔너리 형태로 리스트에 담아줘. 웹사이트 구조는 일반적인 뉴스 목록 형태라고 가정해줘.” 정도현: 오, 정말 코드의 뼈대를 잘 잡아주네요! 그런데 요즘 뉴스 사이트들은 구조가 자주 바뀌거나, 클릭해야 보이는 동적 콘텐츠도 많잖아요? GPT가 준 코드가 항상 잘 작동하나요? 이승원: 아주 중요한 지적이에요! GPT가 만들어준 코드는 출발점일 뿐, 실제 웹사이트 구조에 맞춰서 선택자(selector)나 태그를 직접 수정해줘야 해요. 그리고 JavaScript로 로딩되는 동적인 페이지는 BeautifulSoup만으로는 힘들고, Selenium 같은 도구가 필요할 수도 있어요. 이승원: 또 중요한 건 스크래핑 윤리예요. 반드시 해당 사이트의 robots.txt 파일이나 이용약관을 확인해서, 허용된 범위 내에서 수집하고 서버에 무리를 줘서는 안됩니다. GPT가 만들어준 코드라고 해도 법적, 윤리적 책임은 사용자에게 있다는 점, 잊지 마세요! 이승원: 데이터를 수집했으면 이제 전처리(preprocessing) 단계죠. 특히 한국어는 영어와 달리 더 까다로울 수 있어요. 조사, 어미가 붙고 띄어쓰기 오류도 많아서, 단순한 분리로는 정확한 분석이 어렵거든요. 정도현: 아, ‘정부정책연구원’처럼 붙여 쓰는 경우도 많고, ‘정부가’, ‘정부는’처럼 조사가 다 붙잖아요. 영어처럼 공백만으로 단어를 나누는 게 힘들겠네요. 이승원: 맞아요. 그래서 형태소 분석기를 사용하는데요, 대표적으로 KoNLPy, Mecab, Okt 같은 라이브러리가 있어요. 어떤 걸 써야 할지 모를 때도 GPT에게 물어보면 돼요.GPT에게 이렇게 프롬프트를 주세요. 그럼, (예를 들어) Okt를 사용한 기본 예시를 이렇게 알려줍니다. [부록 code 2] 참고 “파이썬으로 한국어 뉴스 텍스트를 전처리하려고 해. KoNLPy 라이브러리(또는 Mecab, Okt 등)를 사용해서 문장을 형태소 단위로 토큰화하고, 명사만 추출하는 방법을 알려줘. 불용어 리스트 예시도 보여주고, 불용어 제거 코드도 포함해줘.” 정도현: 그럼 어떤 형태소 분석기를 사용하는 게 가장 좋을까요? 이승원: GPT는 각각의 장단점을 설명해주지만, 정답은 없어요. 예를 들어 Mecab은 성능이 뛰어나지만 설치가 까다롭고, Okt는 간단하지만 성능은 다소 떨어질 수 있어요. 내 데이터가 신조어 많나, 오탈자가 많나 같은 특성과 내 분석 환경이 윈도우냐, 맥이냐와 같은 맥락에 따라 직접 테스트해보는 게 중요해요. 불용어 사전도 그냥 가져다 쓰는 게 아니라, 내 연구 주제에 맞게 직접 구성하면 훨씬 좋은 결과가 나와요. 자연어 뉴스 데이터 기초분석하고, 심화분석하기 이승원: 이제 데이터 감성 분석 단계입니다. 감성분석은 특정 정책이나 이슈에 대한 뉴스의 전반적인 논조, 그러니까 긍정인지 부정인지 중립인지를 파악하는 것입니다. Hugging Face의 transformers 라이브러리를 사용하면 비교적 쉽게 구현할 수 있는데요, 여기서도 언어가 핵심적인 문제예요. 정도현: 아, 그 얘기! 아까 영어 기반 모델이 많다고 하셨죠? 이승원: 맞아요. transformers에서 기본적으로 제공하는 감성분석(sentiment-analysis) 파이프라인은 주로 영어 데이터로 학습된 모델을 사용해요. 그래서 한국어 뉴스에 바로 적용하면 성능이 잘 안 나오는 경우가 많아요. 제가 직접 테스트해봤는데요, 예를 들어 "이 정책은 시민들에게 큰 도움이 될 것이다"라는 문장을 넣었더니, GPT가 연결된 기본 영어 모델로도 긍정(POSITIVE)이라는 결과가 나왔어요. 신뢰도도 92% 정도로 꽤 높게 나왔고요. 정도현: 오, 그럼 잘 작동하는 것 같은데요? 이승원: 네, 간단한 문장에서는 그런 것 같아요. 하지만 복잡한 뉴스 문장이나 정치적 표현이 섞이면 잘못 분류될 가능성이 높아져요. 그래서 한국어 뉴스 분석을 본격적으로 하려면, 한국어에 특화된 모델을 따로 불러와서 적용하는 게 훨씬 정확하죠. 정도현: 그럼 한국어는 어떻게 해야 하나요? 이승원: 다행히 Hugging Face Hub에는 한국어 감성분석에 특화된 사전훈련 모델들이 꽤 많아요. 예를 들면 monologg/kobert-finetuned-sentiment, beomi/kcbert-base, matthewburke/korean_sentiment 같은 모델들이 있죠. 어떤 걸 골라야 할지 잘 모를 땐 GPT에게 이렇게 물어볼 수 있어요. 그러면 GPT가 모델 이름과 함께 코드까지 보여줘요. [부록 Code 3] 참고 “Hugging Face의 transformers 라이브러리를 사용해서 한국어 뉴스 기사의 긍정/부정 감성 분석을 하고 싶어. 추천할 만한 pretrained model과 사용 예시 코드를 알려줘.” 이승원: 이 결과를 보면, 한국어로 된 문장 “이 정책은 시민들에게 큰 도움이 될 것이다.”를 높은 확률로 긍정적인 감성으로 분류하고 있어요. LABEL_1은 일반적으로 ‘긍정’을 의미하고, 신뢰도(score)가 0.97 수준이니 모델이 꽤 확신을 가지고 판단했다는 뜻이에요. 다만 라벨 이름이 그대로 출력되다 보니 처음 보는 분들에겐 해석이 어려울 수 있어서, LABEL_0 = 부정, LABEL_1 = 긍정처럼 사람이 이해하기 쉬운 이름으로 바꿔주는 후처리를 함께 해주면 더 좋습니다. 정도현: 와, 이번엔 제대로 분석되네요! 그런데 이런 모델들이 정말 신뢰할 만한가요? 모든 뉴스에 잘 맞을까요? 이승원: 아주 중요한 질문이에요. 감성 분석 모델은 데이터 도메인에 따라 성능이 달라져요. 그러니까 정치 뉴스에 맞는 모델이 연예 뉴스에는 어색할 수도 있죠. 그래서 반드시 검증(validation)을 해봐야 해요. 예를 들어 뉴스 샘플을 직접 몇 개 읽고, GPT 분석 결과와 비교해보는 거죠. 필요하다면 파인튜닝(fine-tuning)도 고려해야 하고요. 정도현: 흥미롭네요! 그럼 감성 분석 다음으로 추천하는 기법은 뭔가요? 이승원: 바로 토픽 모델링이에요. 여러 뉴스 기사에서 공통적으로 다루는 숨겨진 주제들을 찾아내는 분석이죠. 수백, 수천 건의 뉴스를 사람이 직접 분류하는 건 사실상 불가능하니까요. 토픽 모델링을 하는 가장 대표적인 방법은 LDA(Latent Dirichlet Allocation: 잠재 디리클레 할당)입니다. 정도현: 저도 이름은 들어봤어요. 어떻게 시작하나요? 이승원: Python의 gensim 라이브러리를 사용하면 비교적 쉽게 시작할 수 있어요. 마찬가지로 GPT에게 이렇게 물어보면 되죠. GPT는 이런 코드를 만들어줄 거예요. [부록 Code 4] 참고 “파이썬 gensim 라이브러리를 사용해서 LDA 토픽 모델링 코드를 짜줘. 입력은 전처리된 단어 리스트들이 들어 있는 processed_docs라고 가정하고, 토픽은 5개로 설정해줘.” 정도현: 그럼 num_topics나 passes 같은 값들은 그냥 임의로 정하는 건가요? 이승원: 그렇지는 않습니다. 이런 설정값들을 하이퍼파라미터라고 부르는데요, 성능에 아주 큰 영향을 줘요. 그래서 토픽 모델링에서도 이 값들을 튜닝(Tuning)해야 해요. 정도현: 어떻게 튜닝하죠? 어떤 기준으로 “이게 좋다”를 판단하나요? 이승원: 좋은 질문이에요. 여기서 Coherence Score라는 점수를 써요. 각 토픽 내 단어들이 서로 얼마나 연관성 있고 일관적인지를 수치로 보여주는데, 점수가 높을수록 사람이 보기에도 해석이 잘 되는 좋은 토픽이라는 뜻이에요. 게다가 여러 토픽 수별로 Coherence Score를 비교해서 그래프로 시각화하면 최적 지점을 훨씬 직관적으로 찾을 수 있어요. 다만 그래프의 제목, 축 이름을 한글로 넣고 싶다면 폰트 설정을 따로 해줘야 해요. Colab에서는 나눔고딕 같은 폰트를 설치해서 적용해야 한글이 깨지지 않거든요. 이럴 때 GPT에게 이렇게 물어볼 수 있어요. 그럼 GPT는 아래처럼 한글 폰트 설정 → LDA 튜닝 → 그래프 출력까지 한 번에 해결되는 코드를 알려줘요. [부록 Code 5] 참고 “LDA 토픽 모델에서 토픽 수를 3부터 15까지 바꿔가며 Coherence Score를 측정하고, 최적 점수를 가진 토픽 수를 알려주는 코드를 작성해줘. 그래프도 포함해줘. Colab에서 한글 안 깨지도록 폰트 설치도 포함해줘.” 정도현: 마치 실험 데이터의 온도나 압력처럼, 최적 조건을 찾는 거군요? 이승원: 딩동댕! 정확한 비유예요. 실제로는 num_topics를 3부터 15까지 쭉 바꿔가면서 각각의 Coherence Score를 측정하고, 그래프를 그려서 최적의 지점을 찾는 방식이에요. 이번 실습에서도 토픽 수 12개일 때 Coherence Score가 가장 높게 나왔죠, 0.4764로요. GPT에게 “LDA 최적 토픽 수 찾는 반복 코드 작성해줘”라고 요청하면, 이런 반복문까지 포함된 자동 튜닝 코드도 아주 쉽게 생성해줘요. 정도현: 와, 진짜 실험 설계 같아요! 자연과학에서 변수 바꿔가며 최적 조건 찾는 과정이랑 똑같네요. AI가 이런 복잡한 과정의 도우미가 될 수 있다니 신기합니다. 이승원: 그렇죠? GPT는 단순한 코드 생성기를 넘어서, 학습의 징검다리 역할을 해줘요. 특히 처음 시작하는 학생들에겐 구조를 잡아주고 두려움을 줄여주는 아주 든든한 조력자죠. ChatGPT를 활용하여 디버깅하기: 실제 디버깅 사례로 배우는 ChatGPT 활용법과 주의점 정도현: 그럼 이렇게 GPT가 짜준 코드를 Colab 같은 데서 돌리면 바로 멋진 결과가 딱 나오나요? 이승원: (웃음) 그랬으면 좋겠지만… 현실은 에러와의 전쟁이죠. 저도 처음에 LDA 코드 돌릴 때 바로 이런 오류를 만났어요. "ValueError: cannot compute LDA transformations on a sparse matrix..." 이런 거요. 정도현: 저도 그런 거 보면 머리가 하얘지던데요. 특히 저 에러 메시지는 뭔가 말은 많은데 무슨 뜻인지 모르겠는 경우가 많아요. 이승원: 맞아요. 예전 같으면 저런 에러 메시지를 복사해서 구글에 붙여넣고, 스택오버플로우를 뒤지면서 비슷한 사례를 찾느라 한참을 보냈을 거예요. 그런데 지금은 GPT가 있으니까! 그냥 메시지를 통째로 GPT에게 물어보면 되죠. 정도현: 그런 식으로도 질문이 되나요? 이승원: 물론이죠. GPT에게 “이런 에러가 났는데 왜 그런지, 어떻게 고치면 되는지 알려줘”라고 하면, 보통은 꽤 그럴듯한 설명과 함께 수정 방향까지 알려줘요. 예를 들어 제가 겪은 오류는 corpus 형식이 잘못된 경우였는데, GPT가 "doc2bow 형식이 맞는지 확인해보세요"라고 바로 짚어주더라고요. 정도현: 정말 디버깅 파트너네요. 말 그대로 질문하면 답해주는 고수 한 명이 옆에 있는 느낌이네요. 이승원: 그렇죠! 여기서 정말 중요한 포인트가 있어요. GPT가 알려주는 답이 항상 맞는 건 아니라는 점이에요. 정도현: 그럴듯한 말 같아도 잘못된 정보를 줄 수도 있다는 거예요? 이승원: 잘 아시겠지만, 그걸 ‘할루시네이션’이라고 하죠. GPT는 진짜로 아는 게 아니라, 맥락상 그럴듯해 보이는 답을 만들어내는 것이니까요. 가끔 실제로 존재하지 않는 함수나 옵션을 제시하기도 하고요, 최신 라이브러리 기준이랑 안 맞는 경우도 있어요. 정도현: 아, 무조건 믿으면 안 되겠네요. 그럼 어떻게 해야 할까요? 이승원: 그래서 제가 정리해둔 GPT 디버깅 4원칙이 있어요. 저처럼 혼란스러웠던 분들께 꼭 공유해드리고 싶은 꿀팁이죠. 1. 왜(Why)?를 이해하기 GPT가 알려준 해결책이 왜 통하는지 원리를 이해하려고 해야 해요. 그냥 복사해서 붙여넣는 건 임시방편일 뿐, 실력이 되려면 '왜 이런 방식이 맞는지' 꼭 고민해봐야 하죠. 2. 단계적 테스트 (Incremental Testing) 코드를 한 번에 다 바꾸면 어디서 문제가 생겼는지 알기 힘들어요. 그래서 저는 꼭 한 줄씩, 또는 기능별로 나눠서 조금씩 실행해보면서 확인해요. 그래야 다른 오류나 예상 못한 부작용도 같이 잡을 수 있어요. 3. 교차 확인 (Cross-Referencing) GPT 답변이 뭔가 이상하거나 생소하게 느껴질 땐, 꼭 공식 문서나 스택오버플로우, GitHub 이슈 등에서 한 번 더 확인하는 습관이 필요해요. GPT도 완벽하진 않거든요. 4. 책임은 나에게 마지막으로, GPT는 어디까지나 보조 도구일 뿐이에요. 결국 내가 돌린 코드고, 그 분석 결과로 논문을 쓰는 것도 나잖아요? 그러니까 GPT가 알려준 내용이라 해도, 그 결과에 대한 최종 책임은 연구자 본인에게 있다는 걸 항상 기억해야 해요. 정도현: 저도 정말 공감돼요. 디버깅이라는 게 단순히 오류 고치는 것에 그치는게 아니라, 내가 코드를 더 잘 이해하게 되는 과정이네요. GPT 덕분에 디버깅 속도가 빨라지더라도, 연구자가 더 깊이 생각해야겠어요. 이승원: 바로 그거예요. GPT와 함께하는 디버깅은 단순히 '시간 절약'이 아니라, 더 깊이 배우고 연구를 더 잘하게 도와주는 계기라고 생각해요. 정도현: 와… 오늘 이 대화 하나로 진짜 실전 감각이 생긴 것 같아요. 그저 코드를 짜는 게 아니라, 에러와 디버깅까지도 학습의 일부로 받아들이게 됐어요. 이승원: 그런 태도면 앞으로 어떤 분석이든 두려움 없이 도전하실 수 있을 거예요. GPT와 함께, 더 똑똑하고 깊이 있는 연구 해봅시다! ChatGPT로 분석 결과 시각화하고 해석하기 이승원: 분석이 끝나면 그 결과를 어떻게 시각적으로 표현하고 해석할지도 중요하죠. GPT는 이 부분에서도 유용한 조언자예요. 먼저, 대표적인 시각화 방법 중 하나인 워드클라우드부터 예를 들어볼게요. GPT에게 이렇게 물어보면 되죠. 그러면 GPT는 이런 식의 코드를 만들어줄 거예요. [부록 Code 6] 참고 “워드클라우드로 감성 분석 결과를 시각화하고 싶어. 긍정적 단어 리스트와 부정적 단어 리스트가 따로 있는데, 각 리스트에서 단어 빈도를 계산해서 시각화해줘. matplotlib과 wordcloud 라이브러리를 사용해서 긍정/부정 워드클라우드를 따로 출력하는 코드 짜줘.” 정도현: 뉴스 텍스트에서 어떤 감정 단어들이 자주 등장했는지 한눈에 보이네요! 전체적인 분위기를 직관적으로 이해할 수 있겠어요. 이승원: 맞아요. 이렇게 단어의 ‘형태’를 시각화하는 방식도 좋지만, 조금 더 정량적인 감성 분석도 가능해요. 예를 들어, 각 뉴스 문장에 대한 감성 점수를 먼저 계산한 뒤, 그 점수를 해당 문장에 등장한 단어들과 연결하면 “이 단어가 자주 등장하는 문장은 감성 점수가 높았다” 또는 “낮았다” 같은 분석이 가능하죠. GPT에게 이렇게 요청해보세요. 그러면 GPT는 다음처럼 코드를 만들어줍니다. [부록 Code 7] 참고 “뉴스 문장별 감성 점수를 기반으로, 자주 등장한 단어들의 평균 감성 점수를 계산하고, 감성 점수가 높은 상위 10개 단어와 낮은 하위 10개 단어를 막대그래프로 시각화해줘.” 정도현: 그런데 말이에요, ‘탈취’, ‘주가조작’ 같은 단어들이 감성 점수가 높게 나오는 건 좀 이상하지 않나요? 오히려 ‘청소년’이라는 단어가 부정적으로 분류된 것도 의아하고요. 이승원: 아주 중요한 포인트예요. 감성분석 결과는 모델이 문장의 분위기를 어떻게 해석했느냐에 따라 달라지는데, 이때 사회적 맥락이나 이슈의 본질이 모델에 그대로 반영되지 않을 수 있어요. 예를 들어 ‘청소년’이 주로 복지 확대, 지원 정책과 관련된 뉴스에서 등장했다면 감성 점수가 높게 나올 수 있어요. 반대로, ‘탈취’, ‘주가조작’ 같은 단어가 들어 있는 문장이 “수사가 진행 중이다”, “의혹은 제기되었지만 사실 여부는 명확하지 않다”처럼 중립적 서술이 많았다면 모델은 이를 부정적으로 해석하지 않을 수 있죠. 그래서 감성 점수는 단어 자체의 부정성이나 이슈의 심각성을 직접적으로 반영한다기보다, 해당 단어가 사용된 문장의 ‘표현 방식’과 ‘정서적 뉘앙스’를 바탕으로 계산된다는 점을 꼭 기억해야 합니다. 정도현: 그러고 보니, 단어 하나하나가 아니라 그 단어가 어떤 문맥에서, 어떤 시점에, 어떤 방식으로 사용됐는지까지 봐야 진짜 의미를 파악할 수 있겠네요. 이승원: 맞아요. 이건 단순히 감성 분석의 정밀도 문제를 넘어서, 텍스트 분석 결과를 어떻게 해석하고, 정책연구에 어떻게 연결할 것인지와도 직결된 문제예요. 실제로 분석 결과를 그대로 믿기보다는, 뉴스의 전체 맥락, 주변 키워드, 시기별 보도 흐름과 함께 입체적으로 해석하는 노력이 필요합니다. 생성형 AI, 학제 간 연구의 든든한 연결고리 정도현: 텍스트 분석도 공학 실험처럼 체계적이란 게 인상 깊었어요. 요즘엔 이미지랑 텍스트를 같이 분석하는 경우도 많다면서요? 이승원: 맞아요. 그래서 멀티모달 분석이 중요해지고 있는데, 모든 연구자가 두 분야를 다 알긴 어렵잖아요. 이럴 때 생성형 AI가 연결고리 역할을 해줘요. 정도현: 혼자서도 다른 분야를 시도해볼 수 있다는 거네요! 이승원: 그렇죠. 이제는 AI 덕분에 협업이 필수였던 융합 연구도 혼자 시작할 수 있어요. 하지만 AI가 주는 결과를 그대로 믿지 말고, 왜 이 분석을 하는지, 결과가 뭘 의미하는지 스스로 점검하는 태도가 중요하죠. 정도현: 오늘 배운 내용을 실습해보고 싶은데, 좋은 자료가 있을까요? 이승원: 물론이죠. 뉴스 기사 제목, 본문 일부, 날짜가 담긴 news_data_sample.csv는 데이터 구조를 익히기에 적당하고, 감성 분석과 토픽 모델링 코드가 담긴 colab_news_nlp_template.ipynb는 구글 코랩에서 바로 실행해볼 수 있어요. 파일만 복사해서 자기 데이터에 맞게 수정하면 되고, GPT를 어느 지점에서 활용하고 어떤 부분은 스스로 판단해야 하는지도 안내돼 있어서 실습용으로 아주 좋아요. 처음이더라도 너무 겁먹지 말고 일단 해보는 게 가장 중요해요! [부록 code 1.] import requests from bs4 import BeautifulSoup url = "https://news.naver.com/main/list.naver?mode=LSD&mid=sec&sid1=100" headers = {"User-Agent": "Mozilla/5.0"} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') articles = soup.find_all('li') news_list = [] for article in articles: title_tag = article.select_one("dt:not(.photo) > a") snippet_tag = article.select_one("span.lede") date_tag = article.select_one("span.date") title = title_tag.get_text(strip=True) if title_tag else "" snippet = snippet_tag.get_text(strip=True) if snippet_tag else "본문 없음" date = date_tag.get_text(strip=True) if date_tag else "날짜 없음" if title: news_item = { 'title': title, 'snippet': snippet, 'date': date } news_list.append(news_item) print(news_list[:5]) [부록 code 2.] import pandas as pd from konlpy.tag import Okt # CSV 불러오기 df = pd.read_csv("news_data_sample.csv") # 형태소 분석기 초기화 okt = Okt() # 불용어 정의 (예시는 확장 가능) stopwords = ['정책', '발표', '정부', '보도', '기자', '내용', '이날', '위해', '대한', '등', '에서', '으로', '하고'] # 전처리 함수 정의 def preprocess_text(text): try: morphs = okt.pos(str(text), stem=True) nouns = [word for word, tag in morphs if tag == 'Noun'] nouns_filtered = [noun for noun in nouns if noun not in stopwords] return ' '.join(nouns_filtered) except: return '' # 전처리 적용 df['processed_snippet'] = df['snippet'].apply(preprocess_text) # 결과 확인 print(df[['snippet', 'processed_snippet']].head()) [부록 Code 3.] from transformers import pipeline sentiment_analyzer_default = pipeline("sentiment-analysis") text_ko = "이 정책은 시민들에게 큰 도움이 될 것이다." result_ko_default = sentiment_analyzer_default(text_ko) print(f"기본 모델 결과: '{text_ko}' -> {result_ko_default}") from transformers import pipeline korean_sentiment_analyzer = pipeline("sentiment-analysis", model="matthewburke/korean_sentiment") text_ko = "이 정책은 시민들에게 큰 도움이 될 것이다." result_ko_tuned = korean_sentiment_analyzer(text_ko) print(f"한국어 모델 결과: '{text_ko}' -> {result_ko_tuned}") [부록 Code 4.] from gensim import corpora, models # 전처리 실행 → processed_docs 생성 df['processed_snippet'] = df['snippet'].apply(preprocess_text) # Split each preprocessed snippet into a list of words processed_docs = [doc.split() for doc in df['processed_snippet'].tolist()] # 리스트 of 리스트 # Gensim용 사전(dictionary) 및 말뭉치(corpus) 생성 dictionary = corpora.Dictionary(processed_docs) corpus = [dictionary.doc2bow(doc) for doc in processed_docs] # LDA 모델 학습 lda_model = models.LdaModel( corpus=corpus, num_topics=5, id2word=dictionary, passes=15, random_state=42 ) # 주제 출력 topics = lda_model.print_topics(num_words=10) for i, topic in enumerate(topics): print(f"Topic #{i+1}: {topic}") [부록 Code 5.] # 나눔고딕 폰트 설치 (Colab 전용, 처음 한 번만) !apt-get -qq install -y fonts-nanum # 폰트 설정 import matplotlib.pyplot as plt import matplotlib.font_manager as fm import matplotlib as mpl # Colab font cache refresh (important for newly installed fonts) # fm._rebuild() <- Remove or comment out this line # Instead, try this for font cache refresh: fm.findSystemFonts(fontpaths=None, fontext='ttf') # Manually register the font: font_dirs = ['/usr/share/fonts/truetype/nanum'] font_files = fm.findSystemFonts(fontpaths=font_dirs) for font_file in font_files: fm.fontManager.addfont(font_file) # Set font properties font_path = '/usr/share/fonts/truetype/nanum/NanumGothic.ttf' fontprop = fm.FontProperties(fname=font_path) # Apply font settings mpl.rc('font', family=fontprop.get_name()) mpl.rcParams['axes.unicode_minus'] = False # 마이너스 깨짐 방지 # 확인용 print(f"현재 설정된 폰트: {fontprop.get_name()}") # LDA 및 Coherence Score 측정 from gensim.models import CoherenceModel, LdaModel from gensim import corpora # 토픽 수 범위 설정 topic_range = range(3, 16) coherence_scores = [] for num_topics in topic_range: lda = LdaModel( corpus=corpus, id2word=dictionary, num_topics=num_topics, passes=15, random_state=42 ) coherence_model = CoherenceModel( model=lda, texts=processed_docs, dictionary=dictionary, coherence='c_v' ) score = coherence_model.get_coherence() coherence_scores.append(score) # 최적 토픽 수 출력 optimal_topics = topic_range[coherence_scores.index(max(coherence_scores))] print(f"최적의 토픽 수: {optimal_topics} (Coherence Score: {max(coherence_scores):.4f})") # 한글이 깨지지 않는 Coherence Score 그래프 출력 plt.figure(figsize=(10, 5)) plt.plot(topic_range, coherence_scores, marker='o') plt.xlabel("토픽 수") plt.ylabel("Coherence Score (c_v)") plt.title("토픽 수에 따른 Coherence Score") plt.grid(True) plt.xticks(topic_range) plt.show() [부록 Code 6.] # 1. 필요한 라이브러리 불러오기 from wordcloud import WordCloud from collections import Counter import matplotlib.pyplot as plt # 2. 긍정/부정별 단어 수집 # 긍정 단어와 부정 단어를 담을 리스트 준비 positive_words = [] negative_words = [] # processed_snippet을 토큰화하여 긍정/부정 분류 for i in range(len(df)): label = df.loc[i, 'sentiment_label'] words = df.loc[i, 'processed_snippet'].split() # 전처리된 텍스트를 띄어쓰기 단위로 나눔 if label == '긍정': positive_words.extend(words) elif label == '부정': negative_words.extend(words) # 3. 단어 빈도 계산 pos_freq = Counter(positive_words) neg_freq = Counter(negative_words) # 4. 워드클라우드 생성 # 긍정 워드클라우드 생성 pos_wc = WordCloud(font_path='NanumGothic.ttf', background_color='white').generate_from_frequencies(pos_freq) # 부정 워드클라우드 생성 neg_wc = WordCloud(font_path='NanumGothic.ttf', background_color='white').generate_from_frequencies(neg_freq) # 5. 워드클라우드 시각화 plt.figure(figsize=(12, 6)) # 긍정 단어 워드클라우드 plt.subplot(1, 2, 1) plt.imshow(pos_wc, interpolation='bilinear') plt.axis('off') plt.title('긍정 단어 워드클라우드') # 부정 단어 워드클라우드 plt.subplot(1, 2, 2) plt.imshow(neg_wc, interpolation='bilinear') plt.axis('off') plt.title('부정 단어 워드클라우드') plt.tight_layout() plt.show() [부록 Code 7.] from transformers import pipeline from konlpy.tag import Okt from collections import defaultdict import pandas as pd import matplotlib.pyplot as plt # 1. 데이터 불러오기 df = pd.read_csv("news_data_sample.csv") # 2. 도구 초기화 okt = Okt() korean_sentiment_analyzer = pipeline("sentiment-analysis", model="matthewburke/korean_sentiment") stopwords = ['정책', '발표', '정부', '보도', '기자', '내용', '이날', '위해', '대한', '등', '에서', '으로', '하고'] # 3. 단어별 감성 점수 수집 word_sentiments = defaultdict(list) for snippet in df['snippet']: # 형태소 분석 try: morphs = okt.pos(str(snippet), stem=True) nouns = [word for word, tag in morphs if tag == 'Noun' and word not in stopwords] except: continue # 감성 분석 try: result = korean_sentiment_analyzer(snippet) score = result[0]['score'] except: score = 0.0 for noun in nouns: if noun.strip(): word_sentiments[noun].append(score) # 4. 단어별 평균 감성 점수 계산 word_sentiment_avg = { word: sum(scores) / len(scores) for word, scores in word_sentiments.items() if len(scores) >= 3 } # 5. DataFrame 변환 및 정렬 word_df = pd.DataFrame(list(word_sentiment_avg.items()), columns=['word', 'avg_sentiment']) top10 = word_df.sort_values(by='avg_sentiment', ascending=False).head(10) bottom10 = word_df.sort_values(by='avg_sentiment', ascending=True).head(10) # 6. 시각화 plt.figure(figsize=(12, 6)) # 긍정 단어 plt.subplot(1, 2, 1) plt.barh(top10['word'], top10['avg_sentiment'], color='skyblue') plt.title('긍정 단어 Top 10') plt.xlabel('평균 감성 점수') plt.gca().invert_yaxis() # 부정 단어 plt.subplot(1, 2, 2) plt.barh(bottom10['word'], bottom10['avg_sentiment'], color='salmon') plt.title('부정 단어 Top 10') plt.xlabel('평균 감성 점수') plt.gca().invert_yaxis() plt.tight_layout() plt.show(
-
- 작성일 2025-05-09
- 조회수 2423
- 좋아요15
- 첨부파일 (0)
-
- [CTL Learning Tips #7] 이미지 데이터 분석을 위해 ChatGPT를 활용한 이야기 (1)
- 교수학습혁신센터-20250404 <출처표기방법>이상은, 정도현(2025).이미지 데이터 분석을 위해 ChatGPT를 활용한 이야기(CTL Learning Tips #7).서울: 성균관대학교 교수학습혁신센터 이미지 데이터 분석을 위해 ChatGPT를 활용한 이야기 정도현(성균관대 신소재공학과 박사과정), 이상은(성균관대 교수학습혁신센터 교육학박사) 서문 이 글은 대학원생들이 이미지 데이터 분석을 출발하는 것을 돕기 위하여 필자가 ChatGPT를 활용했던 경험을 정리한 기록입니다. ChatGPT 외에 Gemini, Claude 등 다양한 생성형 AI 도구들도 있으므로, 비슷한 방식으로 다른 생성형AI 도구들을 활용하는 것도 충분히 가능할 것입니다. Summary 생성형 AI는 연구자의 이미지 데이터 분석을 위한 프로그래밍 진입장벽을 낮추고, 분석의 효율성을 크게 향상시킴. 신소재공학 전공 필자가 이미지 데이터 분석을 수행하며 ChatGPT를 활용한 실제 사례를 소개함 - 1단계: 이미지 분석을 위한 전처리 과정에서 Mask R-CNN 등의 모델에서는 ChatGPT를 활용하지 않았음 - 2단계: 이미지 데이터의 RGB와 2D 히스토그램 분석 알고리즘을 ChatGPT의 코드 생성 기능을 통해 구현함 - 3단계: Google Colab에서 생성한 코드를 실행하고 ChatGPT로 오류 발생 시 디버깅하고 수정함 - 4단계: 이미지 분석 결과를 Excel, CSV 등 형식으로 추출해 연구 보고서나 논문 작성을 위해 재편집 가능하도록 저장함 연구 분야에도 생성형 AI 기술이 활발하게 도입되면서, 연구자들은 보다 효율적으로 연구를 수행하는 도구로써 생성형 AI를 사용하고 있습니다. 생성형 AI는 방대한 데이터베이스를 기반으로 연구 아이디어를 제안하고, 관련 지식을 제공해 전반적인 연구방향을 설정해줄 뿐만 아니라, 프로그래밍을 활용한 분석 과정에서도 강력한 도구로 사용되고 있습니다. 예전에는 연구자가 C언어, Python과 같은 컴퓨터프로그래밍 언어를 직접 배우고 알고리즘을 구현해야 복잡한 연구 데이터의 처리를 해낼 수 있었습니다. 그러나 이러한 알고리즘은 논리적으로 복잡한 체계를 요구하는 경우가 많아서, 어쩌다 오류라도 발생하면 이를 수정하고 자신이 원하는 알고리즘을 다시 만드는데 꽤 많은 시간과 에너지를 써야하는 어려움이 있었습니다. 즉, 연구자가 비전공자로서 컴퓨터프로그래밍을 통해 데이터 분석을 하는데는 분명한 진입장벽이 있었다 할 수 있습니다. 생성형 AI기술이 도입되면서, 이제 연구자는 컴퓨터프로그래밍 언어를 직접 배우지 않고도 원하는 데이터분석 알고리즘을 대화를 통해 쉽게 알아낼 수 있게 되었습니다. (컴퓨터 프로그래밍과 무관한) 신소재공학을 전공한 필자는 최근 실험을 통해 얻은 이미지 데이터를 분석 해야하는 상황에서 생성형 AI를 활용해 효과적으로 알고리즘을 만들고 분석을 해내는 경험을 하였습니다. 이번 러닝팁은 필자의 경험을 바탕으로 연구에서 수집한 이미지 데이터의 색상을 분석했던 사례를 소개하고자 합니다. 이를 통해 다양한 분야의 전공자들이 생성형 AI를 활용하여 이미지 데이터를 분석할 수 있는 가능성을 보여주고, 연구에서 데이터 분석을 보다 효율적으로 수행하는데 도움을 드리고자 합니다. 1. (ChatGPT를 활용하지 않고) 이미지 데이터 전처리하기 이미지 데이터 분석을 하기 위해서는 분석 대상에 따라 적절한 전처리 과정이 필요할 수 있습니다. 예를 들어, 이미지 전체가 아닌 특정 영역만을 분석하려면, 불필요한 배경 요소를 제거하고 관심 영역(Region of Interest, ROI)을 추출하는 과정을 거치는 것이 필수적입니다. 이를 통해 이미지 분석의 정확도를 높이고, 불필요한 색상 정보로 인해 발생할 수 있는 오류를 최소화할 수 있습니다. 가령, 아래 그림과 같이 실험을 통해 촬영한 샘플 이미지에서 아래쪽에 있는 Microtube의 색상만을 분석한다고 가정해 보겠습니다. 이미지의 배경이 색상 정보에 영향을 줄 수 있으므로, 먼저 ROI를 추출하는 전처리하는 과정이 필요합니다. 전처리 방법은 추출하려는 영역이 얼마나 복잡하냐에 따라 달라집니다. 만약 이미지에 휘어진 부분이 있는 형태로 정확하게 분리해야 한다면, Mask R-CNN과 같은 딥러닝 기반의 객체 검출 모델을 활용하여 ROI를 자동으로 추출할 수 있습니다. 필자는 그림 (a)와 같이 ROI를 얻기 위해 MASK R-CNN에 해당하는 코드를 오픈소스에서 검색하고 수정하여 이용하였습니다. ChatGPT에게 관련 코드를 요청하면, 이미지 전체를 학습시키는 코드가 포함돼 길이가 길고 오류가 생기는 경우가 꽤 있어 필자는 이 단계에서 코드를 얻을 목적으로 ChatGPT를 사용하지는 않았습니다. 한편, 그림 (b)처럼 단순한 이미지의 경우, Mask R-CNN 같은 복잡한 모델을 사용할 필요 없이, ImageJ 같은 이미지 처리 소프트웨어를 활용하여 간단한 편집을 수행할 수도 있습니다. 이미지 데이터 분석을 위해서는 연구의 목적과 이미지의 복잡성에 따라 전처리를 위한 적절한 접근 방식을 선택하는 것이 중요합니다. 필자가 분석하고자 하는 이미지 데이터의 특징에 맞게 위 두가지 방법을 활용하여 ROI를 추출하고, 데이터를 효과적으로 전처리하였습니다. 2. ChatGPT를 활용하여 데이터 분석 알고리즘 만들기 전처리가 끝난 후, 필자가 데이터 분석을 위해 원했던 알고리즘은 아래와 같이 이미지가 보여주는 색상 변화를 정량적으로 평가하여 3차원 구형 시스템의 반응 진행 정도로 시각적으로 해석해내는 것이었습니다. 그림에서 보는 것처럼, 이 시스템은 일정 크기의 3차원 구로 이루어져 있고, 타겟 물질이 내부로 확산되고 화학 반응이 일어남에 따라 가장자리부터 붉은색에서 파란색 계열로 색상이 변하게 됩니다. 이러한 색상 변화를 통해 타겟 물질과 얼마나 반응을 진행하였는지 확인할 수 있는 정량적 분석 결과로 활용될 수 있습니다. 필자는 광학현미경으로 얻은 샘플 이미지에서 두 가지 결과를 얻고자 하였습니다. 첫번째는, 전처리 된 이미지의 RGB 색상 정보를 분석하여, 색상이 어떻게 변화하는지 시각적·수치적으로 확인하는 것이었고, 두번째는 타겟물질로 인해 달라지는 색상의 R채널과 B채널의 변화 경향성을 정량적으로 평가하는 것이었습니다. R채널 값이 감소하고 B채널 값이 증가하는 패턴을 분석함으로써, 반응의 진행 정도를 보다 명확하게 파악할 수 있을 것이라 예상하였습니다. 필자의 예상을 확인하기 위한 데이터 분석 알고리즘을 만들기 위하여, 먼저 ChatGPT에 ‘이미지를 구글 Colab에 불러서 openCV로 이미지와 함께 RGB채널별 히스토그램 분석결과를 한 그래프에 보여주는 코드를 알려줘’ 라고 요청습니다. 그 다음으로 ‘이미지의 R채널과 B채널의 수치 관계를 2D 히스토그램으로 시각화 할 수 있는 코드를 이미지와 함께 보여줘’ 라고 요청을 하였습니다. 그랬더니 ChatGPT는 아래 그림과 같이 각 프롬프트에 부합하는 코드를 제시해주었습니다. 필자가 분석을 위해 원하는 바를 더 구체적으로 제시할수록 더 상세한 코드를 제안해주었고, 이 코드를 Google Colab 또는 Python 환경에서 직접 실행하면서 데이터 분석을 진행할 수 있었습니다. 이를 통해 시행착오를 줄이고, 보다 빠르게 원하는 결과를 얻을 수 있습니다. 만약 ChatGPT가 없는 상황에서 이런 분석을 진행하고자 했다면, 먼저 관련 배경지식에 대해서 공부하고, 필요한 분석 방법을 직접 오픈소스에서 검색해야 했을 것입니다. 또한, RGB 히스토그램을 한 그래프에 그리려면 어떤 라이브러리를 써야 하는지 알아야 하고, 적절한 함수와 그 사용법도 익혀야 합니다. OpenCV 같은 라이브러리에 여러 기능이 있지만, 이를 처음 접하는 연구자는 익숙하게 활용하는데 시간이 많이 써야할 수 있습니다. 특히 2D 히스토그램처럼 조금 복잡한 시각화를 하려면, 배열 다루는 법이나 색상 설정, 그래프 옵션까지 알아야 해서 시행착오도 많았을 것입니다. 그러나, ChatGPT를 사용하게 되면 연구자가 분석 알고리즘을 구현하는데 궁금한 점을 우리말로 물어보고 적절한 코드를 얻어 바로 받아서 실행할 수 있게 해주므로 훨씬 빠르게 분석을 진행할수 있습니다. 3. Google Colab에서 알고리즘 실행하고, ChatGPT로 오류 수정하기 ChatGPT와의 대화를 통해 원하는 알고리즘을 제안받았다면, 다음 단계로 그 코드가 실제로 정상적으로 작동하는지 확인해야 합니다. 일반적으로 프로그래밍을 위해 자주 사용하는 Python 또는 Google Colab 환경에서 제공된 코드를 실행하면 됩니다. Google Colab을 활용하는 경우, 아래 그림과 같이 먼저 Google 드라이브에 접속한 후 Google Colaboratory를 실행하면 새로운 코드 실행 창을 생성할 수 있습니다. 생성형 AI가 제시한 코드를 해당 창에 입력하고 실행하면, 아래 그림과 같이 주어진 코드가 실제 상황에 맞게 동작하는지 확인할 수 있습니다. ChatGPT가 제공하는 코드는 연구자의 자연어 프롬프트를 기반으로 만들어진 것이므로, 코드가 정상적으로 실행되는지 원하는 결과를 정확히 도출하는지 꼭 직접 확인하고, 필요한 경우 코드를 수정하고 연구자의 의도에 맞도록 최적화하는 것이 중요합니다. 연구자들이 프로그래밍 언어를 어려워하는 가장 큰 이유 중 하나는, 코드 실행 중 발생하는 오류 메시지를 해석하는 것이 쉽지 않다는 데 있습니다. 코드 실행 후 오류가 발생하면, 어떤 부분에서 문제가 생겼는지, 어떤 명령어가 잘못되었는지, 수정해야 할 변수나 함수가 무엇인지를 명확하게 알아내는 것이 어렵기 때문입니다. 예를 들어, 다음과 같이 Google Colab에서 이미지를 불러오는 명령어를 실행했을 때, 이미지와 함께 결과 값이 출력되지 않고 오류 메시지가 표시될 수 있습니다. 이 경우, 코드 오류를 복사하여 ChatGPT에 입력하면, 오류의 원인을 분석하고 적절한 해결 방법을 제안해 줍니다. 만약 ChatGPT를 쓰지 않았다면, 필자도 이미지를 불러오는 코드에서 에러가 났을 때, 뭐가 문제인지를 알아내는 것이 많이 어려웠을 것입니다. 예전 같으면 오류 메시지를 검색하고, 여러 글을 찾아보면서 비슷한 사례를 찾는데 시간을 허비했을 것입니다. 하지만 ChatGPT에 오류 메시지를 붙여넣고 “이거 왜 이런 거야?”라고 물으면, 문제 원인을 설명해주고 어떤 부분을 어떻게 고치면 되는지를 바로 알려줍니다. 결국, ChatGPT는 코드 생성 도구이면서 에러 상황에서 함께 해결해주는 디버깅 파트너 역할을 해주었습니다. 4. ChatGPT를 활용하여 분석결과 이미지의 Raw 데이터 추출하고 재편집하기 Google Colab에서 실행한 코드의 결과로 얻은 이미지를 그대로 활용할 수도 있지만, 연구 보고서, 논문 등 다양한 문서에 보다 체계적으로 서술하기 위해서는 편집이 가능한 형태로 데이터를 추출하는 것이 바람직합니다. 화면상에서 분석 결과를 확인하는 것만으로는 한계가 있을 수 있으며, 연구자가 원하는 방식으로 데이터를 가공하고 시각적으로 표현하려면 다양한 파일 형식으로 저장하는 과정이 필요하기 때문입니다. 따라서 연구의 신뢰도를 높이고 보다 체계적인 데이터 분석을 수행하기 위해서는 코드로 실행한 결과 데이터를 Excel 파일, 이미지 파일, CSV 파일 등의 형식으로 저장하여 활용하는 것이 중요합니다. 이러한 형식의 파일로 저장하는 명령어들이 일부 있으나, 연구자 입장에서 상세한 명령어를 기억하고 있지 못하는 경우가 많아, ChatGPT에게 상황에 맞는 관련 내용에 관한 코드를 요청할 수 있습니다. ChatGPT가 제공한 Excel 파일로 저장하는 코드가 오류가 생겨 한 번에 Excel 데이터로 저장하지 못할 수 있지만, ChatGPT로 오류를 수정하는 과정을 거치면 해결할 수 있습니다. 이 과정을 거쳐 아래와 같이 구글드라이브에 원하는 Excel파일(구글스프레드시트)을 얻게 되고, Origin, excel, ppt 등 다양한 편집작업이 가능한 소프트웨어에서 원하는 형식으로 분석 결과를 재구성 할 수 있습니다. 이번 러닝팁에서는 연구자가 생성형 AI를 활용하여 이미지 데이터를 효과적으로 분석한 실제 사례를 소개하였습니다. 과거 생성형 AI가 등장하기 전에 연구자들은 이미지와 같은 시각적 데이터를 다른 형태로 변환하고 분석하기 위해 복잡한 프로그래밍을 할 수 있는 기술이 필요했으며, 이는 프로그래밍에 익숙하지 않은 연구자들에게 큰 진입장벽이 되었습니다. 그러나 이제 연구자가 프로그래밍 언어를 깊이 학습하지 않아도 자연어로 질문하고 피드백을 받으며 알고리즘을 설계하고 오류를 수정하여 원하는 결과를 도출할 수 있게 되었습니다. 필자의 경험은 생성형 AI가 연구를 수행하는데 있어 유용하고 중요한 도구로 자리매김할 수 있음을 보여줍니다. 물론, 생성형 AI가 제안한 코드를 무조건적으로 실행하기보다 연구자가 그 원리를 어느정도 이해하고, 어디에 어떻게 적용할지 판단하며, 결과를 검증하는 과정이 반드시 필요합니다. 이번 러닝팁 필자의 사례가 이미지 데이터 분석에 대한 두려움을 줄이고 앞으로 다양한 분야의 연구자들이 생성형 AI를 활용해 보다 쉽고 정교하게 이미지 데이터 분석을 수행하는 데에 도움이 되기를 바랍니다. [교수학습혁신센터] 대학원 Learning tips 공동집필 대학원생 모집 교수학습혁신센터는 대학원생을 위한 학습 및 연구 노하우를 담은 「Learning tips」을 정기적으로 발간하고 있습니다. 이번 학기는 생성형 AI를 활용하여 연구논문 데이터 분석에 관한 Learning tips를 발간할 예정이며, 자신의 경험을 중심으로 Learning tips 원고 초안을 작성하고 공동집필에 참여할 대학원생을 아래와 같이 모집합니다. 모집인원: 0명 자격 및 우대사항: 우리 대학 대학원생(재학생, 수료생, 학위수여자 모두 가능) ※ 아래 요건 중 일부만 충족해도 지원 가능합니다. - (연구의 시작부터 논문출판까지 경험한) 논문작성 경험이 있는 학생 - 생성형 AI 도구를 연구 데이터 분석에 활용한 경험이 있는 학생 - 간단한 이미지 편집이 가능한 학생 근무 시간 및 업무내용 가. 근무 시간: Learning tips 1회당 약 20시간 내외 (4월 초, 5월 초, 6월 초 총 3회 발간 예정이며, 1회 또는 그 이상 참여 가능) 나. 근무장소: 주로 원격(재택) 근무, 필요 시 Zoom을 통한 업무 오리엔테이션 및 회의 진행 다. 업무내용: Learning tips 자료 조사 및 원고 초안 작성 라. 주제 후보: 4월 초: 이미지 데이터 분석을 위해 ChatGPT를 활용한 이야기(Learning tips #7 발간) 5월 초: 생성형 AI를 활용하여 자연어 데이터 분석하기 6월 초: 엑셀/CSV 등 구조화된 데이터 분석하기, 시계열 데이터(Timeseries)나 로그 데이터 분석하기, 설문지/학습 데이터 분석하기 등 (예정) 급여: 발간 1회당 20만 원 내외 지원방법: 온라인 지원 https://forms.gle/9xVENhPhCeBNyP7h9 신청접수 마감: ~4. 9.(수) (합격자 개별연락) 문의: 교수학습혁신센터 02-760-0974, hisisi17@skku.edu 많은 관심과 참여 부탁드립니다. 감사합니다. References [1] Song, H., Jung, D. H., Jeong, S. Y., Kim, S. H., Cho, H. H., Khadka, R., ... & Lee, J. H. (2024). Dynamically interactive nanoparticles in three-dimensional microbeads for enhanced sensitivity, stability, and filtration in colorimetric sensing. Advanced Composites and Hybrid Materials, 7(6), 1-13 [2] Jung, D. H., Kim, Y., Cho, H. H., Lee, B., Suh, S. J., Heo, J. H., & Lee, J. H. (2022). Automatic quantification of living cells via a non-invasive achromatic colorimetric sensor through machine learning-assisted image analysis using a smartphone. Chemical Engineering Journal, 450, 138281
-
- 작성일 2025-04-04
- 조회수 2891
- 좋아요4
- 첨부파일 (0)
-
- '러닝팁 시리즈: AI와 함께하는 대학원 연구 학습 팁' e-book 공개
- 교수학습혁신센터에서는 2024학년도 동안 센터 홈페이지를 통해 제공한 러닝팁을 하나로 묶어, 전자책(이북, e-book) 형태로 발간하였습니다. 이번 이북은 대학원생들이 연구 과정에서 실질적으로 활용할 수 있는 팁을 제공하며, 연구 효율성을 높이는데 도움을 줄 것으로 기대됩니다. ▲러닝팁 리시즈 e-book 목차 이북은 대학원 학위 연구 과정 전반을 고려해 구성되었습니다. 연구 논문을 시작할 때 겪는 어려움과 극복 방법을 비롯해, 생성형 AI를 활용한 연구문제 탐색, 문헌 검토 방법, 논문 작성에 유용한 AI 도구 소개, AI 활용에 대한 연구 윤리 문제까지 폭넓은 내용을 담고 있습니다. 또한, 독자들이 필요한 정보를 쉽게 찾아볼 수 있도록 핵심 키워드를 색인으로 정리하였습니다. ▲러닝팁 시리즈 e-book에서 다룬 러닝팁 1호 ▲러닝팁 시리즈 e-book에서 다룬 러닝팁 4호 특히, 이번 이북에서는 생성형 AI와 같은 최신 기술을 연구에 효과적으로 활용하는 방법을 집중적으로 다루면서도, 연구 윤리에 대한 고민을 함께 제시했습니다. AI를 연구 도구로 활용하는 과정에서 대학원생들이 연구자로서의 주도성과 창의성을 유지하는 방법과 반드시 준수해야 할 윤리적 기준을 안내하여, 책임 있는 연구 수행을 돕습니다. 교수학습혁신센터는 이번 이북이 대학원 신입생부터 학위논문을 준비하는 연구자까지, 연구의 각 단계에서 실질적인 도움이 되는 자료가 될 것으로 기대합니다. ※이북 링크: https://ibook.skku.edu/Viewer/UEBOR5MA1T3T PDF다운로드: https://drive.google.com/file/d/1rO73sAyKDpg9dUwHqD8F8Z-x4Y9L6zbN/view?usp=sharing
-
- 작성일 2025-03-07
- 조회수 2726
- 좋아요4
- 첨부파일 (0)
-
- [CTL Learning Tips #6] 생성형 AI 도구의 활용에 따르는 고민과 연구윤리 (1)
- 교수학습혁신센터-20250110 <출처표기방법>이상은, 정도현(2025).생성형 AI 도구의 활용에 따르는 고민과 연구윤리(CTL Learning Tips #6).서울: 성균관대학교 교수학습혁신센터 생성형 AI 도구의 활용에 따르는 고민과 연구윤리 이상은(성균관대 교수학습혁신센터 교육학박사), 정도현(성균관대 신소재공학과 박사과정) 인공지능 기술의 발전은 연구 환경에 큰 변화를 가져왔습니다. 앞서 대학원 러닝팁 4호와 5호에서 소개한 생성형 AI과 같은 기술들이 급속도로 발전하면서, 연구를 돕는 효율적인 도구로 이용되고 있습니다. 연구에 쓰이는 생성형 AI 서비스는 방대한 데이터베이스 기반으로 아이디어를 제안하고 지식을 제공하는 등의 대화를 통해 연구의 완성도를 높일 수 있고, 이를 통해 기존 연구과정과 비교하여 훨씬 짧은 시간을 들여 연구를 진척시킬 수 있는 효율성과 간편성을 가져다 주었습니다. 하지만, 이러한 편리함은 동시에 지나친 의존성과 연구윤리의 이슈를 초래할 수도 있습니다. 예를 들어, 연구자가 생성형 AI에 전체 실험설계나 데이터분석을 요청하고 그 결과에 지나치게 의존한다면, 이는 연구자가 주도적으로 진행한 연구라고 보기 어려운 상황이 됩니다. 생성형 AI는 문헌고찰이나 아이디어 검증에 도움을 줄 수 있는 유용한 도구이기는 하나, 연구자가 갖추어야할 주도성과 창의력을 떨어뜨릴 수 있는 위험도 동시에 있습니다. 따라서 생성형 AI는 연구자의 주도 하에 연구를 돕는 도구로 활용되어야 하며 연구자는 그 결과물을 비판적으로 검토할 수 있어야 하고 연구자 자신이 가지고 있는 전문성과 창의성을 바탕으로 연구를 수행하는 것이 중요합니다. 이번 러닝팁에서는 연구에서 생성형 AI 도구를 활용하는데 대한 다양한 입장과 고민, 그리고 이 상황에서 지켜야할 연구윤리에는 어떤 것들이 있는지 알아보고자 합니다. 1. 주요 저널은 생성형 AI 도구의 사용을 어떻게 규제하고 있나 생성형 AI는 미술, 음악 등 인간의 창의성을 요구하는 예술 영역에서도 뛰어난 수행 능력을 보여주었고, 국제 사진전에서 1등을 수상한 작가의 작품이 AI 작품이었던 사건 [1]과 같이 크고 작은 논란도 있었습니다. 그 중 가장 큰 쟁점이 되었던 것은 생성형 AI가 만들어낸 지적 재산은 저작권이 인정될 수 있는가였습니다. 우리나라 저작권법은 제2조 1항에서 저작물은 인간의 창작물로 한정하고 있기 때문에 [2], AI가 생성한 창작물은 저작권을 인정받지 못합니다. 이는 우리나라에 국한되는 것이 아니라 대부분 국가에서 생성형 AI를 통해 만들어낸 저작물은 그 저작권을 인정하지 않고 있습니다. 연구 분야에서도 이와 유사한 사례가 있습니다. 실제로 ChatGPT를 공저자로 이름을 올린 논문이 MedRxiv라는 사전 공개사이트에서 발표된 바가 있는데 [3], ChatGPT가 서술한 연구 논문의 내용은 매우 정교 했으며, 실제로 의학 관련 연구자들은 ChatGPT가 서술한 논문 초록의 10편 중 불과 3편정도 밖에 걸러내지 못했다고 미국 노스웨스턴대 연구진이보도한 바 있습니다 [4]. 이 사건을 계기로 학계에서 생성형 AI가 공저자로서 자격을 가질 수 있는가에 대한 논의가 활발히 이루어졌습니다. 이후에 세계적으로 영향력있는 Nature 저널은 ChatGPT를 포함한 대규모 언어모델을 논문 저자로 인정하지 않겠다라는 가이드라인을 공식적으로 발표했습니다 [5]. 생성형 AI는 어디까지나 도구로 사용될 뿐이지, 논문을 작성하는데 주도적으로 참여한 연구자가 될 수 없다고 결론내린 것으로 해석할 수 있습니다. Nature 뿐만 아니라 다른 여러 저널에서도 유사한 입장의 가이드라인을 제시하였습니다. 또다른 유명한 저널인 Science 저널에서도 AI를 통해 제작된 내용물은 저자뿐만 아니라 인용될 수 없음을 밝혔고 [6], Elsevier 출판사도 AI 기술이 적용된 제작물은 사용 목적의 적절성과 사용된 AI기술 내용 공개를 전제하에 부분적으로 허용하겠다는 가이드라인을 제시하였습니다 [7]. 이처럼 대부분의 학술저널은 대규모 언어모델기반 생성형 AI의 사용에 대해 민감하게 생각하고 있으며, 생성형 AI를 인간 연구자와 동등하거나 그 이상의 자격을 부여할 수 없다는 입장을 유지하고 있습니다. 2. 생성형 AI가 제공하는 지식은 충분히 신뢰로운가 생성형 AI는 우리가 입력하는 프롬프트에 따라 텍스트나 이미지 등의 다양한 결과물을 생성하는 시스템으로, ChatGPT를 포함하여 대부분의 생성형 AI는 대규모 언어모델 (Large Language Model, LLM)을 기반으로 하고 있습니다. LLM의 상세한 원리는 상당히 복잡하지만 이해를 돕기 위해 간단하게 설명하자면 아래 그림처럼 방대한 사전학습 데이터를 바탕으로 인간이 구사하는 자연스러운 언어 패턴과 구조를 학습한 후, 입력된 프롬프트에 부합하도록 출력을 예측해 자연스러운 답변을 생성하는 방식입니다. ChatGPT의 대략적인 작동 원리 (확률은 0부터 1 사이의 값을 가짐) 이미지 출처 : https://m.blog.naver.com/1strider/223015532860 LLM 기반의 생성형 AI는 기존 인공지능에 비해 획기적인 성능을 보여주며 다양한 분야에서 응용가능성으로 주목을 받았으나, 한계점도 존재합니다. Emily M.Bender 연구팀은 논문에서 LLM은 의미를 고려하지 않고 자연스러운 문장을 확률적으로 연결한다며, 이를 ‘확률적 앵무새’ 로 비유하였습니다 [8]. 마찬가지로, 메타 AI 연구를 진행하고 있는 Yann Lecun 교수 또한 현재 LLM 모델은 엄청난 컴퓨팅 및 인적 자원을 요구하고 있으며 그 비용은 너무 크다며 LLM의 한계를 뉴욕대 세미나 강연에서 지적한 바 있습니다 [9]. 실제로 토론토 연구팀에서 ChatGPT를 포함한 LLM기반 생성형 AI가 허위 정보를 전문성 있게 포장해서 대답하는 점이 허위 정보를 신뢰성 있게 유포할 수 있다라는 우려를 지적한 바 있습니다 [10]. 이들이 주장한 주된 이유는 바로 ‘할루시네이션’ 이라는 생성형 AI의 치명적 오류인데요, 이는 생성형 AI가 잘 모르는 내용에도 출처가 불분명한 대답을 내놓거나 오답을 정답인 것처럼 얘기하는 현상을 말합니다. 예시로 다음과 같이 매우 기본적인 내용을 질문을 해보았습니다. 3글자로 하는 끝말잇기를 하자고 대화를 하였을 때 맥락을 이해하지 못하여 설명을 해주어도, 대화만 자연스럽게 이어질 뿐 주고 받고 있는 내용은 이해를 기반으로 한 대화가 아님을 확인할 수 있습니다. 특히, 3글자의 정의에 대해 질문하였을 때, 완전히 틀린 내용을 전달하고 있는 것을 확인할 수 있습니다. 이 같은 할루시네이션은 일반적인 주제에서는 비교적 쉽게 감지하고 의심할 수 있지만, 보다 지엽적이거나 전문적인 주제에서는 잘못된 정보를 쉽게 인지하지 못하고 신뢰할 가능성이 높습니다. 또한, 생성형 AI는 질문 내용에 따라 편향성을 가지고 있는데요, 대화를 하면서 자연스러운 대화를 확률적으로 제시하는 모델이기 때문에 어떤 질문을 하냐에 따라 제공하는 답변 또한 달라집니다. 예시로, 13 nm 금나노입자의 색상이 무슨 색이냐고 ChatGPT에게 물어보았습니다. 실제로는 520 nm 파장대의 붉은색 계열의 색상이며 이와 일치하는 대답을 제공하고 있습니다. 하지만 그와 다르게 먼저 13 nm의 금나노입자 색상이 초록색이라는 사전 상황을 입력 시킨 뒤에 나중에 다시 13 nm 금나노입자의 색상이 무엇이냐고 질문했을 때는 초록색이라고 대답하게 됩니다. 이는 생성형 AI가 이전 입력된 정보를 필터링하지 않고, 대화의 맥락에 맞춰 자연스럽게 답변하고자 하는 경향에서 비롯됩니다. 이러한 한계점은 생성형 AI가 제공하는 결과물을 그대로 신뢰하기 보다는 비판적으로 보고, 재확인을 해야하는 과정을 반드시 해야함을 의미합니다. 3. 연구의 무결성을 입증하는 것은 연구자의 책임 연구자는 연구를 진행하는 과정에서 연구자로서 윤리적 기준을 준수하고, 신뢰성이 있는 방식으로 연구를 진행할 필요가 있습니다. 연구결과와 과정은 왜곡되거나 조작되지 않아야 하며, 연구자는 이를 토대로 결과를 객관적으로 해석하고 보고해야할 책임이 있습니다. 특히 이에 대한 연구결과의 책임은 연구자가 실질적으로 기여한 만큼 나누어지며, 이는 연구의 투명성과 신뢰성을 보장하는 중요한 요소로 작용합니다. 그러나 앞서 설명한 것처럼 생성형 AI는, 할루시네이션이라는 단점을 가지고 있으며, 이는 연구의 투명성에 위협적인 요소로 작용합니다. 꽤나 그럴듯한 거짓 정보가 논리적으로 결과에 포함될 가능성이 높아 생성형 AI가 생성한 결과물은 객관성을 보장하기 어렵고 신뢰성이 낮아질 수 있습니다. 따라서 대부분의 저널에서는 생성형 AI의 지나친 사용을 엄격히 규제하고, 연구자가 이를 사용하였다면 전반적인 사용 출처를 밝히도록 요구하고 있습니다. 이러한 규제에도 불구하고, 생성형 AI를 사용한 사실을 논문 안에서 밝히지 않아 논문이 철회된 사례가 있었습니다 [11]. 이 사례에서는 연구자가 논문 초안을 작성하는 과정에서 ChatGPT를 사용하였고, 이 사용과정에서 생기는 문구인 ‘Regenerate Response’가 우연히 논문의 본문에 함께 포함되었습니다. ‘Regenerate Response’는 ChatGPT의 예전 메뉴로서 사용자가 ChatGPT의 답변에 만족하지 못했거나 새로운 방식의 답변을 원할 때, 이전 응답을 기반으로 다른 방식으로 답변을 생성하도록 요청하는 기능입니다. 이 논문이 저널에 게재된 후에야 사전에 명시하지 않은 ChatGPT를 사용했다는 점이 드러났고, 이는 저널의 윤리정책 위반이기 때문에 논문은 결국 철회됐습니다. 생성형 AI는 연구를 보조하는 도구로는 매우 유용할 수 있으나, 연구자는 생성형 AI의 한계를 인지하고 연구 결과의 신뢰성을 보장할 필요가 있습니다. 4. 그래서 대학원생이 생성형 AI를 연구의 도구로 활용할 때 지켜야할 연구윤리는 무엇인가 연구자는 연구 논문을 작성할 때 공신력을 인정받은 자료를 바탕으로 자신의 연구 데이터를 수집하고 분석하고 가설에 비추어 검증할 책임이 있습니다. 생성형 AI는 연구 과정에서 유용한 도구가 될 수 있으나, 생성형 AI가 제공하는 정보와 결과를 연구자가 스스로 사실 여부를 반드시 확인해야 신뢰성이 있는 연구 결과로 얻을 수 있습니다. 또한, 생성형 AI는 주로 인터넷 상에 있는 오픈소스 데이터를 기반으로 결과물을 생성하며, 기존에 웹 상에 존재하는 내용을 재구성하거나 그대로 출력하는 방식으로 결과를 제공함을 기억해야 합니다. 생성형 AI가 만들어낸 텍스트나 코드가 기존에 존재하는 원본을 단순히 재출력한 결과일 가능성이 있음을 모른채, 연구자가 이를 그대로 사용한다면, 표절 문제가 발생할 수도 있습니다. 표절로 인해 발생하는 문제는 연구자 본인에게 책임이 있으니 주의할 필요가 있습니다. 또한, 실제로 대부분 저널에서는 생성형 AI가 제공하는 내용을 직접적으로 인용하거나 그대로 사용하는 것은 인정하고 있지 않기 때문에 어디까지나 참고자료로만 활용되어야 합니다. 생성형 AI의 결과를 연구에 활용하려면, 반드시 해당 내용과 관련된 내용을 재확인하여 적합한 출처를 인용해야 합니다. 이러한 과정을 통해 연구의 투명성을 확보할 수 있습니다. 마지막으로, 생성형 AI는 최근 급격하게 다양한 분야에 도입된 기술이기 때문에, 아직 이에 대한 윤리적 가이드라인은 체계적으로 정립되지 않은 상태입니다. LLM 기반의 생성형 AI 이용에 관한 대부분의 저널 가이드라인은 보수적인 입장을 취하고 있으며, 생성형 AI의 오남용에 엄격한 제한을 두고 있습니다. 한편 새로운 AI 모델이 도입되거나, LLM 모델이 가지고 있던 한계가 극복됨에 따라 연구 가이드라인 또한 변경될 가능성도 있습니다. 따라서, 연구자는 생성형 AI 활용에 관한 윤리 규정과 가이드라인에 지속적으로 관심 가져야 합니다. 이러한 연구 윤리를 지킴으로써 책임의식을 가지고 신뢰받는 연구자로서 성장할 수 있을 것입니다. References [1] https://www.etnews.com/20230419000095 [2] https://www.law.go.kr/%EB%B2%95%EB%A0%B9/%EC%A0%80%EC%9E%91%EA%B6%8C%EB%B2%95/%EC%A0%9C2%EC%A1%B0 [3] https://biz.chosun.com/science-chosun/science/2023/01/26/EUTPVKN5IFFXVEAHUXXCXMFNXE/ [4] https://economychosun.com/site/data/html_dir/2023/01/30/2023013000029.html [5] https://www.nature.com/nature/for-authors/initial-submission [6] https://www.science.org/content/page/science-journals-editorial-policies [7] https://www.elsevier.com/about/policies-and-standards/the-use-of-generative-ai-and-ai-assisted-technologies-in-writing-for-elsevier [8] BENDER, Emily M., et al. On the dangers of stochastic parrots: Can language models be too big?. In: Proceedings of the 2021 ACM conference on fairness, accountability, and transparency. 2021. p. 610-623. [9] https://biz.chosun.com/science-chosun/technology/2023/03/30/YNMTZCAZ3FBADJVU3ZENHVGOZI/ [10] https://www.docdocdoc.co.kr/news/articleView.html?idxno=3006015 [11] https://iopscience.iop.org/article/10.1088/1402-4896/acf6b8
-
- 작성일 2025-01-10
- 조회수 4015
- 좋아요4
- 첨부파일 (0)
-
- [CTL Learning Tips #5] 생성형 AI 도구로 체계적인 문헌검토(literature review)하기 (2)
- 교수학습혁신센터-20241204 <출처표기방법>이상은, 정도현(2024).생성형 AI 도구로 체계적인 문헌검토(literature review)하기(CTL Learning Tips #5).서울: 성균관대학교 교수학습혁신센터 생성형 AI 도구로 체계적인 문헌검토(literature review)하기 이상은(성균관대 교수학습혁신센터 교육학박사), 정도현(성균관대 신소재공학과 박사과정) Summary 대학원 러닝팁 5호는 연구자들이 문헌검토를 보다 효율적으로 하는 것을 돕는 생성형 AI 도구인 Scispace와 Consensus의 활용법을 소개합니다. 문헌검토는 연구의 배경과 필요성을 명확히 하고, 기존 연구와의 차별성을 강조하며, 학문적 신뢰도를 확보하기 위한 필수적인 과정입니다. Scispace와 Consensus는 연구자가 필요로 하는 정보를 빠르게 검색하고 요약하며, 논문 간의 비교와 세부 내용 확인을 효율적으로 도와줍니다. 또한, 연관 질문 생성, 필터 기능, 논문과의 대화 기능 등을 통해 기존의 검색 방식을 대체하거나 보완하여 연구 과정의 생산성과 신뢰성을 높일 수 있습니다. 러닝팁 5호는 실제 연구사례에 Scispace와 Consensus 기능을 적용하여 문헌검토를 어떻게 개선했는지를 구체적으로 소개합니다. —--------------------------------------------------------------------------------------------------------------------------------------------- 대학원에 진학하여 연구프로젝트에 참여하면, 연구주제와 관련된 내용을 보고서나 연구논문에 맞게 서술하는 일이 생깁니다. 이러한 글을 작성할 때, 연구자는 독자들이 연구의 필요성이나 연구주제에 대해 더 잘 이해할 수 있도록 배경 지식이나 관련된 이론들을 잘 검토하고 소개하는 것이 중요합니다. 연구자들은 연구주제와 관련된 문헌이나 서적 자료를 조사하고, 이를 검토하여 연구의 취지에 맞게 그 내용을 기술하는데, 이 전반적인 과정을 ‘문헌 검토(Literature review)’ 라고 부릅니다. 문헌 검토는 특정 연구주제와 관련된 기존 연구 결과나 학문적 자료들을 체계적으로 조사하고 검증하는 전반적인 과정이라고 할 수 있습니다. 이를 통해 연구의 방향과 초점을 잃지 않고, 자신의 연구가 기존 지식에 어떤 가치를 추가하는지 명확히 하게 되며, 학문적 신뢰도를 확보할 수 있습니다. 또한, 연구자는 자신의 연구가 기존 연구와 어떻게 연관이 있으며, 어떤 차별성을 갖는지도 강조할 수 있습니다. 결국 문헌 검토는 학문적 연구에서 기존 지식을 기반으로 자신의 연구를 설계하고 발전시키기 위한 필수적인 과정입니다. 문헌 검토는 일반적으로 인터넷 검색을 통해 이루어져왔는데, 연구논문을 쓸 때는 신뢰 할 수 있는 참고 문헌을 인용하는 것이 중요하므로, Google Scholar나 Web of Science 등과 같은 학술 데이터베이스를 검색할 수 있는 사이트를 주로 활용합니다. 이들 웹사이트에서 핵심 키워드를 검색해 원하는 연구 논문이나 서적을 효율적으로 찾을 수 있습니다. 하지만 찾고자 하는 내용이 다소 복잡하거나 구체적인 경우에, 단순 키워드를 통해 원하는 자료를 찾는 데 한계가 있을 수 있습니다. 또한, 검색결과로 얻은 많은 문헌에서 필요로 하는 자료를 선별하는 일은 꽤 시간이 많이 소요되기도 합니다. 이러한 한계점을 극복하고 보다 효율적으로 문헌 검토를 하기 위해 생성형 AI 도구를 활용할 수 있습니다. 특히, Scispace(https://typeset.io/)와 Consensus(https://consensus.app/)와 같은 생성형 AI 도구는 연구자가 입력한 질문의 답변과 결과를 빠르게 찾아주고, 정보를 요약하거나 비교할 수 있는 기능을 제공합니다. 이번 러닝팁은 필자가 게재했던 연구논문의 문헌검토를 Scispace와 Consensus를 활용하여 다시한번 해봄으로써, 두 생성형 AI 도구가 제공하는 기능을 소개하고자 합니다. Scispace의 활용 1: 여러 문헌들의 구체적인 내용까지 체계적으로 접근해가기 필자는 2022년도에 발표한 세포정량법에 관한 연구에서 문헌 검토를 통해 기존 세포정량법의 한계와 새로운 방법의 필요성을 제시하고자 하였습니다. 생명과학 연구에서 세포 실험의 기본은 실험에 필요한 Cell line을 배양하는 것이지만, 단순히 세포를 키우는 것에 그치지 않고, 세포 수를 정확히 측정하는 것 또한 필수적입니다. 이는 실험결과의 신뢰성과 재현성을 위해 반드시 필요한 과정이므로, 세포정량법의 정확성과 효율성은 연구 성과에 직접적인 영향을 미칩니다. 현재까지 다양한 세포정량법 방법들이 제안되었으나, 아직 많은 실험장면에서 Hemocytometer(혈구계수기)를 이용한 수동적인 세포 계산 방식을 여전히 이용하고 있습니다. 이 방법은 비용면에서 저렴하나 개인의 숙련정도에 따라 측정결과에 편차가 생기며, 세포 정량에 시간이 오래 걸린다는 점에서 비효율적이기도 합니다. 따라서 필자는 문헌검토를 통해 기존 세포정량법의 한계를 지적하고, 이를 보완할 새로운 방법의 필요성을 제안하기로 하였습니다. 먼저 필자는 Google Scholar에서 “limitation of cell counting using hemocytometer” 라는 키워드검색으로 문헌검토를 시작하였습니다. 이렇게 하면 Google scholar가 연관성이 있다고 판단하는 여러 논문들을 제안해줍니다. 이 결과를 두고 연구자는 논문 제목을 중심으로 필요한 내용을 유추하고, 일일이 논문을 검토하여 목적에 부합하는 정보를 확인하는 과정을 거쳐야 합니다. 본 연구에서 찾고자 했던 키워드, ‘limitation’, ‘cell counting’, ‘hemocytometer’ 는 생명과학 분야 연구에서 일반적으로 사용될 수 있는 단어이면서, 실험방법을 기술할 때도 언급될 수 있는 단어이기 때문에, 본문을 보지 않고 스크린에 뜬 간단한 내용으로만 제 연구와의 관련성을 파악하기란 어렵습니다. 입력한 키워드와 관련성이 낮은 문헌들이 상당수 포함되어 있어 꽤 시간이 들여 살펴보아야 합니다. 필자는 Google Scholar 검색결과 화면의 첫번째 논문부터 하나씩 클릭해 들어가 좀더 구체적인 논문내용을 확인하기 시작하였습니다. 상단 3개 연구논문은 필자가 찾고자 하는 세포정량법의 한계에 대한 내용을 담고 있지 않았고, 결국 “limitation of cell counting using hemocytometer”에 대해 제가 기대했던 결과는 네 번째 논문에서 가장 잘 설명한다는 것을 알게 되었습니다. 나아가 연구결과에 대한 구체적인 내용은 여러 번의 클릭을 거쳐 들어가야 파악할 수 있었습니다. 한편, 생성형 AI 도구인 Scispace에서 동일한 키워드 “Limitation of hemocytometer cell counting”을 검색해보았습니다. Scispace는 방대한 데이터베이스를 바탕으로 질문에 대한 요약 답변을 먼저 제공하고, 연관 논문의 목록과 함께 각 논문의 주요 내용을 테이블 형식으로 요약하여 제시해줍니다. 이를 통해 연구자는 논문의 제목과 요약된 내용을 한눈에 비교할 수 있고, 관련 논문을 빠르게 선별할 수 있습니다. 특히, Scispace는 AI 알고리즘을 활용하여 연관성이 높은 순으로 논문을 선별하여 추천합니다. Scispace를 활용해 검색한 결과로 얻는 상위 10개의 논문 중 3개는 필자의 실제 연구논문에서 인용한 문헌들과 일치하는 것이었습니다. 필자는 Scispace의 논문추천 시스템이 상당히 효과적이라고 보게 되었습니다. Google Scholar로 문헌을 검색하면, 동일한 키워드에서 시작하더라도 추가적인 검색을 반복적으로 할 때가 많았습니다. 예를 들어, 세포 정량법의 단점을 더 폭넓게 찾아보기 위해 ‘novel cell counting’이나, ‘automated cell counting’ 등 기존 세포정량법의 단점을 언급했을만한 연구를 찾기 위하여 구체적인 키워드를 넣어 검색범위를 확장하고, 그 결과를 일일이 검토하는 과정은 꽤 고되었습니다. 그러나 Scispace는 이런 반복적인 검색 과정을 생략하고, 사용자가 처음 입력한 키워드와 연관된 연구내용과 논문들을 인공지능을 활용하여 매칭시켜준다는 점에서 효율적으로 보였습니다. 이러한 AI 기반의 문헌검토는 기존의 수작업 검토와 비교했을 때 시간과 노력을 절약하게 해주며 보다 효율적으로 연구를 진행할 수 있도록 도와줍니다. Scispace의 활용 2: 생성형 AI를 이용하여 논문과 대화(Chat)하기 Scispace는 검색결과로 제시된 논문 가운데 하나를 선택한 후, 생성형 AI를 이용하여 이 논문에 대해 대화를 할 수 있다는 장점이 있습니다. Google scholar를 통해 문헌검토를 하고 어떤 문헌을 필자의 연구에 인용하는 경우, 논문 전체가 인용되는 경우도 있지만, 대개는 길어야 한 문단, 짧게는 2-3줄에 불과한 경우들이 많았습니다. 기존 연구논문에서 인용이 필요한 내용을 확보하기 위하여 논문의 전체를 빠르게 읽고 검토하는 과정이 필요한데, 정해진 시간 내에서 많은 양의 문헌을 살펴봐야 하는 연구자에게 상당한 시간과 노력을 요구하는 일이 됩니다. Scispace의 논문과의 대화(Chat) 기능은 이 과정을 개선시킨다는 장점이 있습니다. 다시 필자의 연구로 돌아가, 필자는 기존 세포정량법의 성능을 비교하기 위하여, 최소 몇 개의 세포부터 검출이 가능한지를 성능의 기준으로 삼고자 하였습니다. 이를 위해 Scispace에서 Cell counting 이라는 키워드로 논문을 검색하고 그 결과로 얻은 논문 리스트에서 각 논문 제목 아래에 있는 [Chat]을 클릭하면 새 브라우저가 열리면서, [Chat with Paper]라는 채팅 창이 화면의 오른쪽에서 나타납니다. 필자는 ‘Cell Density Detector Based on Light Beam Focusing’ 논문과의 대화 창에 “본 연구의 세포 한계검출 농도는 몇이야?” 라고 질문했더니, 논문의 본문을 찾고 요약하여 답변을 해줍니다. 테스트를 위하여 같은 질문에 대한 답을 포함하지 않는 논문인, ‘Cell Detection and Counting Method Based on Connected Domain of Binary Image’과의 대화 창에 질문을 했더니 오른쪽 이미지에서 보듯이, “검출농도를 명시적으로 언급하지 않았습니다.”라고 답을 해줍니다. Scispace가 제공하는 논문과의 대화(Chat) 기능은 논문의 전체를 살펴보지 않더라도 연구자가 필요로 하는 내용이 포함되어 있는지 그렇지 않은지를 대화를 통해 빠르게 판단할 수 있도록 도와줍니다. Consensus의 활용 1: 연관(Related) 질문을 통해 논문검토의 범위를 한정하거나 더 넓은 정보에 접근하기 논문 검토를 위한 두번째 생성형 AI 도구인 Consensus는 연구자가 제시한 질문과 관련된 추천 연관 질문을 제공함으로써 연구 과정에서 보다 폭넓고 심층적인 정보를 얻을 수 있도록 돕습니다. 예를 들어, Consensus에서 ‘새로운 세포 정량법’을 검색하면, AI가 자동으로 생성한 연관 질문 목록을 살펴볼 수 있습니다. 질문 목록에서 ‘새로운 세포 정량법이 암 치료에 효과적인가?’를 선택하여 인공지능이 추천해준 새로운 질문에 대한 정리된 답변을 살펴보니, 기존의 세포정량법과 암 치료를 목적으로 사용하는 세포정량법은 명확히 구분된다는 점을 알 수 있었습니다. 필자는 자신의 연구에서 다루고자 하는 세포 정량법이 암 치료와 직접적인 연관이 없음을 깨닫고, 암 치료와 관련된 세포정량법을 다룬 논문은 검토 과정에서 제외하기로 하였습니다. Consensus의 연관(Related) 질문 기능은 논문 검토의 범위를 명확히 설정해주고, 연구 방향을 보다 구체적으로 정의하는데 도움을 줍니다. 새로운 연관(Related) 질문은 연구자가 미처 생각하지 못했던 새로운 관점을 제시하거나, 보다 깊이 있는 탐구를 하도록 유도하기도 합니다. AI 기반 연관 질문 기능은 연구자의 단순한 검색 결과에만 의존하지 않고, 관련성 높은 추가 정보를 제공하여 문헌 검토의 신뢰성을 높이고, 풍부한 내용 기반의 분석을 가능하게 합니다. 결과적으로, 연구자는 보다 체계적이고 폭넓은 방식으로 문헌 검토를 할 수 있으며, 연구의 완성도를 높이는 데 기여할 수 있습니다. Consensus의 활용 2: 필터기능(Apply filters)을 활용하여 선별된 논문들을 추천 받기 연구자들은 논문을 인용할 때, 자신의 연구의 신뢰성을 높이기 위해 인지도가 높고 공신력있는 출판사의 저널에 게재된 연구를 인용하고자 하는 경우가 많습니다. Consensus는 AI 알고리즘을 통해 사용자가 입력한 키워드와 가장 관련성이 높은 논문을 선별할 뿐만 아니라, 필터 기능(Apply filters)을 통해 보다 구체적이고 신뢰할 수 있는 논문을 선택할 수 있도록 도와줍니다. 예를 들어, 필자의 연구에서 ‘색상을 이용한 세포분석법’에 관한 논문을 인용하고자, Consensus에서 ‘색상을 이용한 세포 분석법’ 이라는 키워드로 검색한 뒤, 필터 기능을 이용하여 특정 기준을 설정하였습니다. 필자는 검색결과 연구논문들이 실린 저널의 신뢰성을 보장하기 위해 SJR quartile 지표 Q1에 속하는 논문, 논문의 인용 횟수 100회 이상, 2020년 이후 게재된 논문과 같은 필터를 적용하여 검색 결과를 제한할 수 있었습니다. 이 과정을 거친 후, 필자가 찾고있는 논문들 가운데 JACS, Nano letter, Cell, Nature 자매지와 같은 영향력 있는 학술 저널에 실린 연구자들 사이에서 신뢰도가 높은 논문들이 포함된 것을 확인할 수 있었습니다. 따라서 Consensus가 제공하는 필터기능은 연구자가 문헌검토에서 인용하고자 하는 논문들의 신뢰성을 고려하여 논문검토를 할 수 있도록 도와줍니다. 생성형 AI 도구는 기존의 문헌검토 과정에서 발생할 수 있는 시간적, 인적 자원의 소모를 줄이고, 보다 효율적이고 체계적으로 연구를 할 수 있도록 지원해줍니다. Scispace와 Consensus는 각각의 고유한 기능을 통해 연구자가 키워드 검색, 논문 요약, 논문과의 대화, 연관 질문 제안, 필터 기능 등을 활용할 수 있도록 제공하며, 이를 통해 문헌검토의 정확성과 신뢰성을 높입니다. 특히, Scispace의 요약 및 대화 기능은 필요한 정보를 빠르게 얻을 수 있도록 돕고, Consensus의 연관 질문 및 필터 기능은 연구의 범위와 방향을 보다 구체화할 수 있게 합니다. 이러한 도구들은 연구자의 부담을 줄이고, 연구의 새로운 관점과 방향성을 제시하는 잠재력을 가지고 있습니다. 본 러닝팁이 우리 대학 대학원생들의 연구와 문헌검토에 생성형 AI 도구를 이용하는 일에 도움이 되기를 바랍니다.
-
- 작성일 2024-12-04
- 조회수 4836
- 좋아요11
- 첨부파일 (0)


