분노를 코드로, 사회 문제 해결 사이드 프로젝트

by DD
3개월 전
조회수 214

사회 문제 해결을 목표로 한 사이드 프로젝트 개발 경험을 공유하며, 문제 정의의 중요성을 강조

데이터 수집, 가공, 분석, 시각화를 위한 파이썬 기반의 데이터 엔지니어링 파이프라인 구축

웹 스크래핑(Web Scraping), 자연어 처리(NLP), 벡터 임베딩(Vector Embedding) 등 다양한 기술 활용

Anthropic APILangChain을 활용하여 LLM 기반의 데이터 필터링 및 범주화 수행

1인 프로젝트를 통해 문제 해결 능력, 기술 습득, 커뮤니티 참여의 중요성을 강조

RDD(Rage-Driven Development)의 개념과 가치

본 발표는 사회 문제에 대한 분노를 동기로 삼아 사이드 프로젝트를 개발하는 RDD(Rage-Driven Development)를 소개한다. 김혜원 엔지니어는 프로그래밍의 본질을 문제 해결로 정의하고, 해결하고 싶은 문제를 명확히 하는 것이 프로젝트 성공의 핵심이라고 강조한다.

문제 정의(Problem Definition): 해결하고자 하는 사회 문제를 명확히 인식하고, 데이터 기반으로 문제의 심각성을 가시화

지속 가능한 개발(Sustainable Development): 분노를 동력으로 삼아 프로젝트를 지속하고, 긍정적인 피드백과 커뮤니티의 지원을 통해 동기 부여

시빅 테크(Civic Tech) 관심 유도: 기술을 활용하여 사회 문제 해결에 기여하는 시빅 테크 분야에 대한 관심을 촉구

데이터 엔지니어링 파이프라인 구축

프로젝트 Leave Her Alone은 여성혐오 관련 뉴스 기사를 수집, 분석, 시각화하는 데이터 엔지니어링 파이프라인을 구축했다. 데이터 엔지니어는 데이터 수집(Data Collection), 데이터 가공(Data Processing), 데이터 분석(Data Analysis), 데이터 시각화(Data Visualization)의 4단계로 파이프라인을 구성했다.

웹 스크래핑(Web Scraping): requests와 BeautifulSoup을 활용하여 웹 스크래핑 스크립트를 작성, 기사 제목, 요약문, URL, 언론사 정보 수집

LLM 기반 필터링(LLM-based Filtering): KoNLPy와 Mecab을 활용한 키워드 기반 필터링 후, Anthropic API와 LangChain을 활용하여 의미 기반 필터링 수행

중복 기사 처리(Duplicate Article Handling): 벡터 임베딩 모델(jhgan/ko-sroberta-multitask)과 OpenSearch를 활용하여 중복 기사 식별 및 대표 기사 선정

LLM(Large Language Model) 활용의 기술적 측면

발표자는 LLM을 활용하여 데이터 필터링 및 범주화 작업을 수행하며, LangChain(LangChain)을 통해 파이프라인을 확장했다. 텍스트가 기사 제목과 요약문으로 짧고 고도의 추론이 필요하지 않기 때문에, 앤스로픽(Anthropic) API의 claude-3-5-haiku 모델을 선택했다.

모델 선택(Model Selection): 텍스트 길이와 추론의 난이도를 고려하여 claude-3-5-haiku 모델 선택

LangChain 활용(LangChain Utilization): LangChain을 통해 LLM 파이프라인을 구축하고, 손쉽게 기능을 확장

범주화(Categorization): 앤스로픽 API와 랭체인을 활용하여, 상위 범주(범죄/정책/실태/사회 반응) 및 하위 범주(친밀한 파트너 폭력/성폭력 등)로 분류

오픈소스 기반의 데이터 시각화

프로젝트 Leave Her Alone은 수집된 데이터를 효과적으로 시각화하여 사용자에게 정보를 전달한다. 발표자는 오픈서치(OpenSearch)를 활용하여 중복 기사를 묶고, 대표 기사를 선정하여 정보의 효율성을 높였다.

벡터 임베딩(Vector Embedding): 허깅페이스(Hugging Face)에서 한국어 문장 유사도 판별에 특화된 임베딩 모델(jhgan/ko-sroberta-multitask) 사용

유사도 비교(Similarity Comparison): 오픈서치를 활용하여 벡터 임베딩 간 유사도를 비교, 중복 기사 판별

대표 기사 선정(Representative Article Selection): 컨텐츠 길이, 언론사 신뢰도, 시간순을 기준으로 대표 기사 선정

사이드 프로젝트 개발을 위한 조언

발표자는 1인 프로젝트를 진행하며 얻은 경험을 바탕으로, 사이드 프로젝트를 시작하고 지속하기 위한 조언을 제시한다. 문제 해결 중심의 개발(Problem-Solving-Oriented Development), 지속 가능한 프로젝트 운영(Sustainable Project Operation), 커뮤니티 참여(Community Engagement)의 중요성을 강조한다.

작은 시작(Start Small): 완성된 모습에 대한 부담감을 버리고, 당장 할 수 있는 일부터 시작

주변에 알리기(Share with Others): MVP를 공유하고, 가족, 친구, 동료의 피드백과 응원을 적극 활용

커뮤니티 활용(Community Utilization): 개발자 커뮤니티를 통해 기술적 조언과 정서적 지지를 얻음

분노 주도 개발(RDD)로 시작하는 사이드 프로젝트