2024년 8월 28일 수요일

ChatGPT로 워드 클라우드 만들기

마음이 급하신 분들은 아래에 소개한 이상훈 님의 유튜브 영상을 참조하시길 바란다. 이를 통해서 충분한 정보를 얻었다면, 이 블로그 포스트의 나머지 부분은 건너 뛰어도 무방하다. 

현존 최고 AI ChatGPT-4o에서 한글 깨진 문제 해결 및 워드 클라우드 만들기

갑자기 워드 클라우드를 만들 필요가 생겨서 아무런 사전 정보 없이 ChatGPT를 이용하여 약간의 '삽질'을 시도하다가, 잘 안 되는 한글 관련 문제는 위에 소개한 동영상으로 어렵지 않게 극복하였다. 그 짧은 경험과 약간의 조사 결과를 덧붙여 이번 글에 공개하고자 한다. 이 글을 읽으시는 분들의 ChatGPT 활용에 조금이라도 도움이 된다면 영광일 것이다.

한국정보통신기술협회(TTA)의 정보통신용어사전에 의하면, 워드 클라우드(word cloud)란 문서의 문구와 단어를 분석하여 중요도나 사용 빈도를 직관적으로 파악할 수 있도록 시각화하는 표현 기법을 뜻한다(링크). 글씨로 이루어진 그림 한 장을 통해 문서 '빅데이터'의 키워드나 중요도를 한눈에 보고 이해할 수 있지만, 단어 간의 관계를 표현하지 못하고 정보가 편향될 수 있다는 단점이 있다. 정보 편향은 사실 대단히 중요한 문제이다.

바로 어제 오후까지만 해도 워드 클라우드 생성은 프로그래밍을 잘 하는 사람들의 전유물이라고 생각했었다. 왜 그런가 하면...

  1. 일단 분석할 텍스트를 긁어 모으는 것이 큰 일이고
  2. 이를 대상으로 핵심어를 뽑아서 워드 클라우드를 만드는 것도 어려운 일이라고 느껴졌다. 특히 우리말의 경우 교착어로서 인공지능에 의한 자연어 분석이 매우 어려운 것으로 알려져 있다. 

[패스트캠퍼스 미디어] - 자연어처리(NLP)가 한국어에서 특히 어려운 4가지 이유

국어 고유의 특성에서 나타나는 문제는 전문가에게 맡기도록 하고, 일반인이 아주 쉽게 워드 클라우드를 만드는 방법을 고민해 보았다. 문득 ChatGPT를 쓰면 혹시 특정 웹사이트에 있는 글을 전부 가져다가 알아서 워드 클라우드를 만들 수 있지 않을까 하는 생각이 들었다. 직접 이를 테스트해 보고 문제점 해결 방법을 찾기 전까지는 이런 기법이 이미 동영상 강좌 수준으로 인터넷에 널려 있다는 것을 알지 못하였다.

ChatGPT에서 내 블로그의 URL을 지정해 준 뒤 '이 사이트에서 2018-2020년에 포스팅한 글을 전부 모아서 분석한 뒤 워드 클라우드를 만들어 줘'라고 프롬프트를 날렸더니 진짜 뭔가 일이 벌어지기 시작하였다. 글을 자동으로 가져다가 대략 어떤 주제의 글이 많았는지 요약을 해서 출력한 다음, 영어로 워드 클라우드를 뚝딱 만들어 내었다. 오, 놀랍군. 그러면 한글로 만들어 달라고 하면? 여기에서 그림 속 한글이 제대로 표시되지 않는 문제가 발생하였다. 

구글을 검색해 보았다. ChatGPT로 워드 클라우드를 만들 때 한글이 깨지는 문제와 관련한 정보를 찾아 보니, 다음과 같이 아주 쉽게 만들어진 동영상 설명(네이버 블로그에서 찾음)이 있었다. 프레젠테이션 전문 강사 이상훈 님이 제작한 것이었다. 유튜브 동영상은 맨 위에 이미 소개해 두었다.

ChatGPT에서 한글 깨짐 문제 해결 및 워드 클라우드 만들기(2024.6.8.)

3분이 조금 넘는 간결한 동영상에서 필요한 모든 것을 다 설명하고 있었다. 유튜브 동영상에 고맙다는 코멘트를 달았다. 네 줄로 요약하면 다음과 같다.

  1. 분석에 사용할 샘플 뉴스기사는 공공데이터포털에서 검색하여 엑셀파일을 다운로드 - 실제 상황에서는 가장 많은 수고가 들어가는 단계일지도 모르며, 정성과 창의력도 필요함
  2. ChatGPT에 한글을 처리할 수 있는 koreanize-matplotlib을 설치(ChatGPT 창에 밀어 넣고 '이 파일을 이용해서 처리해 줘'라고 치면 됨 - 유효기간은 3시간이며... 3년 아님! 그리고 현재 열린 창에서만 유효함)
  3. 제어판을 열고 설치된 글꼴 파일 중 마음에 드는 것을 ChatGPT 창에 밀어 넣기
  4. [고급 기능] 색깔을 입맛대로 바꾸기

한글 문제를 해결해 놓은 뒤 다시 내 블로그의 글을 이용한 워드 클라우드 작성을 해 보았다. 프롬프트는 다음과 같이 입력하였다.

"blog.genoglobe.com 에서 2018-2022년 등록한 글을 대상으로 워드 클라우드를 만들어 줘."

URL 뒤에 한글 조사를 바로 붙이면 인식을 못하므로 국문법에는 어긋나지만 띄어쓰기를 해 주어야 한다. ChatGPT는 먼저 다음과 같은 요약을 출력하였다. 이보다 더 훌륭한 비서가 있을까?

To create a word cloud from the blog posts on blog.genoglobe.com from 2018 to 2022, I've extracted key topics and terms frequently discussed across the blog during those years. These include a mix of technical topics related to bioinformatics, scientific research methodologies, and personal projects related to electronics and programming. The blog also touches on general tech trends, scientific policies, and specific case studies in fields like genomics and sequencing.

Main Themes for Word Cloud:

  1. Bioinformatics and Genomics: Terms like Nanopore sequencing, MinION, Guppy, and FASTQ files frequently appear, reflecting the blog's focus on advanced sequencing technologies and bioinformatics tools.
  2. Programming: Discussions often involve Perl, Python, and scripting for data analysis, as well as specific programming challenges and solutions.
  3. Electronics Projects: Posts frequently mention DIY electronics projects using Raspberry Pi, Arduino, and related components.
  4. Scientific Research and Publication: The blog covers topics like preventing scooping in publications, the Revised Common Rule, and discussions on scientific ethics and best practices.
  5. Technology Reviews and How-Tos: Various posts provide insights and reviews on using different software tools and platforms, especially in a scientific research context.

곧 이어서 영문으로 된 워드 클라우드가 나타났다.


"한글로 워드 클라우드를 만들어 줘"라고 다시 지시하였다.

여기서 '미니온'이라고 표시된 것은 Oxford Nanopore Technologies의 DNA 시퀀싱용 flow cell을 물리는 장비인 MinION(보통 '민아이온'이라고 부름)을 뜻한다. <슈퍼배드> 시리즈 영화에 등장하는 귀여운 생명체 Minion이 아니다!

제법인걸?

나는 GPT-4를 활용하는 ChatGPT Plus(유료 플랜)을 사용한다. 따라서 무료 버전에서도 워드 클라우드를 손쉽게 만들 수 있는지는 잘 모르겠다.

어제와 오늘 아침에 걸친 짧은 경험을 통해 ChatGPT가 정말 여러가지 일을 한다는 것을 느꼈다. 그러나 더욱 중요한 것은 워드 클라우드를 작성하기 위해 입력물로 사용할 고품질의 데이터를 긁어 모으는 일이라고 생각한다. 예를 들어 공공데이터포털에 올라 온 뉴스 자료는 실습용으로는 적당하나, '특정 기간에 발행된 모든 뉴스'와 같은 진짜 빅데이터는 아니기 때문이다. 뉴스 빅데이터를 이용하여 이미 분석된 정보와 관심거리를 알아보고 싶다면, 한국언론진흥재단에서 운영하는 빅카인즈(사용자 매뉴얼 링크)를 둘러 보는 것이 좋을 것이다. 이 힌트는 텍스트 마이닝(1) 뉴스 빅 데이터 수집하기에서 얻었다.

이번에는 genoglobe.com 하위의 모든 글에 대해서 영문 워드 클라우드를 만들어 보라고 하였다.


이렇게 프롬프트를 날릴 때마다 태평양 건너편에 있는 서버에서는 전력을 소모할 것이고, 그 전력을 공급하기 위해 화력발전소가 되었든, 원자력발전소가 되었든 열심히 불을 지피면서 지구 온난화에 조금씩 기여하고 있을 것이다.

(사족) 후술하였듯이 내 개인 도메인인 genoglobe.com의 구조는 약간 복잡하다. 단순히 최상위 도메인(genoglobe.com)에 위치한 문서를 분석하라고 ChatGPT에 명령을 내리면 blog.genoglobe.com(이 블로그)과 생명정보 콘텐츠에 특화된 genoglobe.com/kribb을 전부 다 뒤질 것이기 때문이다. 실제로 나의 대표 웹사이트에 해당하는 genoglobe.com으로 접속하면 개인 소개와 더불어 취미에 특화된 또 다른 위키 사이트가 나온다. 여기에 있는 글만 가져다 분석하도록 이번에는 다음과 같이 명령을 해 보았다.

"genoglobe.com 의 글을 이용하여 워드 클라우드를 만들어 줘. 단, genoglobe.com/kribb 하위의 것과 blog.genoglobe.com 의 것은 제외해 줘."

ChatGPT는 내가 내린 명령을 100% 이해하였다.


워드 클라우드 작성 연습을 통해 평소에 내가 무엇에 관심을 갖고 있는지 만천하에 전부 드러내고 말았다.


댓글 없음: