← Back to Projects

텍스트마이닝 자동화 도구 — 정량분석 파이프라인 (EXE)

2026-09-01 · 전처리부터 감성분석까지 한 번에. 리서치 워크플로를 9개 탭으로 고정한 PyQt5 데스크톱 앱

PyQt5텍스트마이닝감성분석네트워크 분석자동화

개요

소셜·온라인 버즈 데이터를 엑셀로 받아 전처리, 빈도 분석, 워드클라우드, 동시출현 네트워크, 감성분석까지 창 하나에서 끝내고 결과를 엑셀 한 파일로 내보내는 데스크톱 앱입니다. 한국어판 kor.py(Kiwi 형태소분석)와 영어판 eng.py(VADER + 표제어 추출) 두 벌로 배포합니다.

문제

  • 소셜 버즈 분석을 할 때마다 전처리·토큰화·시각화를 매번 새로 코딩해야 했습니다.
  • 담당자마다 불용어와 품사 기준이 달라, 같은 데이터를 넣어도 결과가 달라졌습니다.
  • 파이썬을 쓰지 못하면 원본 데이터에 접근하는 것조차 어려웠습니다.

접근

  • 리서치 워크플로를 9개 탭으로 고정했습니다. 로드 → 전처리 → 마이닝 → 감성 → 저장 순서대로만 따라가면 분석이 끝납니다.
  • Kiwi 형태소분석 위에 동의어·대표어·불용어 사전을 파일로 저장·재사용하도록 만들어, 기준을 사람이 아니라 파일이 들고 있게 했습니다.
  • 동시출현 네트워크는 count와 PMI 중에 고르고, 감성은 KNU 감성사전에 룰 보정 5종을 얹어 한국어 특유의 부정·대조 표현을 잡아냅니다.

화면

워드클라우드 — 기간·Top N·감성 필터를 걸고 뽑은 상위 토큰. 오른쪽 표에서 우클릭하면 그 단어가 바로 불용어로 들어갑니다.

워드클라우드 탭 — 상위 토큰 표와 워드클라우드

네트워크 — 동시출현을 count 또는 PMI로 가중한 그래프. 노드를 검색해 n-hop으로 넓히고, 위치는 드래그로 정리합니다.

네트워크 탭 — 동시출현 그래프와 Edges/Nodes 표

감성분석 — KNU 감성사전 점수를 5단계로 자른 분포. 위쪽 체크박스 5개가 룰 보정입니다.

감성분석 탭 — 룰 보정 옵션과 감성 분포 차트

9개 탭

  • 데이터 로드 — 첫 시트를 읽어 컬럼명을 정규화하고 날짜 / 채널 / 본문 / 국가코드 역할을 자동 매핑, page_type과 키워드 제외 필터 제공, 본문 컬럼 인식이 빗나가면 직접 지정
  • 버즈량 분석 — 연·월·주·일 단위 집계, 그룹별 스택 막대, count/%, 막대를 클릭하면 해당 구간 원문 탐색
  • 텍스트마이닝 — 숫자·특수문자·길이1·한글만 필터, 불용어 입력, 토큰 샘플 확인, AS-IS → TO-BE 수동 토큰 수정
  • 전처리 — 토큰화 전 치환 규칙과 토큰화 후 병합·동의어·대표어·모델명 규칙, 품사 선택(명사 / 명사+형용사 / 명사+동사 / 전체), 규칙 세트 저장·불러오기
  • 워드클라우드 — 기간·Top N·감성(전체/긍정/부정/중립) 필터, 랜덤 팔레트와 마스크 모양, Top N 표에서 우클릭하면 해당 단어를 바로 불용어로 추가
  • 네트워크 — 문서 또는 문장 단위 동시출현, count 또는 PMI 가중치, 노드 검색 후 n-hop 확장, 노드 드래그 편집, Edges/Nodes 표
  • 감성분석 — KNU 감성사전(KnuSentiLex) 매칭 점수를 −1.5 / −0.5 / 0.5 / 1.5 경계로 잘라 매우부정~매우긍정 5단계로 변환, 부정어 스코프·대조 접속어 뒤 절 가중·이모티콘 보정·비속어 긍정 강화·앞 문장 부정 전파 5종 룰 보정
  • 감성 상세 — 기간·채널·주제·국가·그룹 축 교차 집계, count/%, VoC 요약
  • 저장 — 시트 7종과 화면에서 고른 차트 PNG(150dpi)를 엑셀 한 파일로 내보내기

건수가 가장 적은 달에 맞춘 월별 랜덤 다운샘플링은 한 탭에서 켜면 다른 탭에도 동일하게 걸립니다.

기술 스택

Python · PyQt5 · kiwipiepy · vaderSentiment · pandas · NumPy · matplotlib · networkx · wordcloud · openpyxl · PyInstaller(EXE 패키징)

결과 · 의의

  • 코드 없이 실행 — PyInstaller EXE로 배포해 파이썬을 쓰지 않는 리서처도 바로 분석에 들어갑니다.
  • 결과 재현성 확보 — 전처리 규칙을 파일로 공유하니 담당자가 바뀌어도 같은 데이터에서 같은 결과가 나옵니다.
  • 보고서 직결clean_data, buzz_summary, word_freq_topN, network_nodes/network_edges, sentiment_records, sentiment_summary 시트 7종과 차트 이미지가 엑셀 1파일로 나와 장표에 그대로 붙습니다.

배포

PyInstaller로 TextMiningTool_KOR.exe, TextMiningTool_ENG.exe 윈도우 실행파일 패키징, 소스 실행은 macOS·Linux에서도 동작합니다. Apache License 2.0.