PoliLog LLM 분석 - AI로 정치인의 입장 변화를 찾다
문제 정의
의원 A가 2023년에 "탄핵은 민주주의 파괴"라고 했는데, 2024년에 "탄핵은 헌법이 보장한 권리"라고 했다면? 입장이 바뀐 건가?
단순 키워드 매칭으론 못 찾는다. "탄핵"이라는 단어만으로는 찬성인지 반대인지 알 수 없다. 문맥을 이해해야 한다.
LLM이 필요한 이유
발언 1: "탄핵은 국정 혼란을 야기합니다."
발언 2: "탄핵은 헌법이 보장한 정당한 절차입니다."
같은 사람이 이 두 발언을 했다면? 입장이 바뀐 거다.
하지만 이걸 프로그래밍으로 판단하려면? 거의 불가능하다. "국정 혼란"은 부정적, "정당한 절차"는 긍정적... 이런 뉘앙스를 코드로 잡을 수 없다.
LLM은 할 수 있다.
분석 파이프라인
1. 키워드별 발언 추출 (예: "탄핵" 관련 발언)
2. 의원별 그룹화
3. 시간순 정렬
4. LLM에게 입장 분석 요청
5. 이전 발언과 비교
6. 변화 감지 시 리포트 생성
QwQ-32B 선택 이유
여러 모델을 테스트했다:
| 모델 | 장점 | 단점 |
|---|---|---|
| GPT-4 | 품질 최고 | 비용 (62만 건이면...) |
| Claude | 품질 좋음 | 역시 비용 |
| Qwen2.5-1.5B | 빠름, 로컬 | 뉘앙스 못 잡음 |
| QwQ-32B | 로컬, 무료, 품질 양호 | 느림 (15초/건) |
결론: QwQ-32B. 느려도 무료가 답이다. 배치 처리하면 된다.
프롬프트 설계
다음은 동일 의원의 "[키워드]" 관련 발언들입니다.
시간순으로 정렬되어 있습니다.
[발언 목록]
이 의원의 [키워드]에 대한 입장이 시간에 따라 변화했는지 분석해주세요.
분석 기준:
1. 각 발언에서 표현된 입장 (찬성/반대/중립/조건부)
2. 시간에 따른 입장 변화 여부
3. 변화가 있다면, 어떤 발언에서 어떻게 바뀌었는지
JSON 형식으로 응답:
{
"has_change": true/false,
"summary": "입장 변화 요약",
"positions": [
{"date": "YYYY-MM-DD", "stance": "찬성/반대/중립", "evidence": "근거 발언"}
]
}
실제 분석 결과 예시
{
"has_change": true,
"summary": "2023년에는 탄핵에 반대하는 입장이었으나, 2024년 12월 이후 찬성으로 전환",
"positions": [
{
"date": "2023-05-15",
"stance": "반대",
"evidence": "탄핵은 정치 보복의 도구로 전락했습니다"
},
{
"date": "2024-12-10",
"stance": "찬성",
"evidence": "헌법이 보장한 탄핵 절차를 존중해야 합니다"
}
]
}
주의: 판단은 안 한다
LLM이 "변절", "거짓말", "위선" 같은 표현을 쓰지 않도록 프롬프트에 명시했다.
주의사항:
- 가치 판단을 하지 마세요
- "변절", "거짓말", "위선" 같은 표현 금지
- 입장 변화의 사실만 기술하세요
- 왜 바뀌었는지 추측하지 마세요
판단은 사용자 몫이다. 우리는 데이터만 제공한다.
현재 진행 상황
- 수집된 발언: 626,750건
- 분석 대상 키워드: 30개 (예산, 탄핵, 교육, 연금...)
- 분석 완료: 진행 중
2025년 상반기까지 전체 분석 완료 목표. 선거 시즌 전에 서비스 런칭.