다중 에이전트 세마틱 코어 자동화: 앙상블 투표 기반 최적화
이 스크립트는 세마틱 데이터 수집을 자동화합니다: 마스크 입력 → 빈도 데이터 획득 → 테이블로 내보내기. 복잡한 워드스타트 → 엑셀 작업 흐름을 대체합니다. 두 가지 데이터 소스를 활용합니다: 무료인 부크바릭스 API(광범위한 동의어 커버리지, 월간 지연 있음)와 유료 XMLRiver(프록시를 통해 야후 XML에 접속, CAPTCHA 없음)를 사용해 실시간 데이터 확보.
XMLRiver는 세 가지 빈도 유형을 지원합니다:
- 기본:
아파트 수리→ 45,661 - 정확:
"아파트 수리"→ 12,340 - 세부 조정:
[!아파트 !수리]→ 8,912
쿼리는 10개 스레드에서 병렬 실행되며 재시도 로직 포함. 경쟁력 히우리스틱 공식은 다음과 같습니다: 점수 = (단어 수 × 1000) / (빈도 + 1). 결과는 색상으로 구분됩니다:
- 🟢 쉬움 (>50)
- 🟡 보통 (10–50)
- 🔴 어려움 (<10)
최적화된 키워드 처리 파이프라인
직접 접근 방식은 3,000개 이상의 키워드에서 실패합니다. 중복 SERP 쿼리 문제 발생. 파이프라인은 단계별 필터링을 수행합니다:
- 수집: 부크바릭스 또는 XMLRiver → 약 3,000개 키워드.
- 정규식 보호막: 불필요한 정보 제거 (구인 광고, 아비토 조각, 완성되지 않은 용어).
- 퍼지 중복 제거: pymorphy2 형태소 분석 + rapidfuzz (token_sort_ratio ≥82%, 첫 번째 단어 기준 그룹화) → 약 1,500~2,000개 고유 키워드.
- SERP 수집: 고유 키워드당 10개 스레드.
- 클러스터링: NLP + SERP 거부 정책.
- **의도 및 메트릭 분석.
82% 임계값은 경험적으로 조정되었습니다: 형태학적 중복 30~40% 제거 가능하지만, '아파트 수리 가격'과 '아파트 수리 비용'처럼 의미가 다른 표현은 혼합하지 않습니다.
SERP 거부 정책을 통한 클러스터링
SentenceTransformers (paraphrase-multilingual-MiniLM-L12-v2)가 임베딩 생성. NLP 도전 과제: 의미적으로 유사한 용어(예: "아파트 수리 모스크바" vs. "아파트 수리 보론체즈")는 경쟁하지 않음.
SERP 거부 정책: 상위 10개 야후 결과에서 겹치는 URL이 2개 미만이면 별도 클러스터로 간주:
overlap = len(urls_core.intersection(urls_cand))
if urls_core and urls_cand and overlap < 2:
continue # 별도 클러스터
모드:
- NLP 전용: 빠르지만 임베딩 기반.
- SERP 전용: 정확하나 느림, URL 기반.
- 하이브리드: NLP + 거부 정책 — 최적 균형.
지역 격리: 서로 다른 도시의 키워드는 함께 클러스터링되지 않음.
다중 에이전트 AI 필터링: 앙상블 투표 기반
LLM(딥시크)이 적합/무관/감점/확인 필요로 분류. 도전 과제: 불안정성(3회 실행 시 38% 안정), 담론 특화 정보 부족.
플래너 에이전트
피팅샷 프롬프팅, 함정 탐지, 지역 필터링을 활용해 담론 특화 계획 생성.
예시:
- 적합: "아파트 수리 완공형 모스크바"
- 무관: "아파트 수리 구인"
토큰 최적화
ID 번호 부여: 모델은 텍스트가 아닌 ID만 반환. 20개 키워드 배치 → 약 80토큰 (이전 400토큰 대비).
앙상블 투표
세 번의 병렬 실행(온도=0), 다수결(임계값=2/3). 동률 시 심판 에이전트 개입.
def single_vote(_):
response = ai_client.call(system_prompt, user_message, temperature=0)
return ai_client.parse_json(response)
with ThreadPoolExecutor(max_workers=votes) as vote_pool:
vote_results = list(vote_pool.map(single_vote, range(votes)))
counts = Counter(votes_for_keyword)
threshold = votes // 2 + 1
결과: 안정성 ~85%. 비용: 3,000개 키워드당 $0.3.
경계 모드: 브랜드용 화이트리스트(서브스트링이 아닌 정확한 토큰 일치) → AI 전체 회피.
추가 모듈
SERP 모듈: 유기적 결과, 관련 검색어, 광고, 신경망 응답 파싱.
AI 어시스턴트: 데이터프레임 위에서 pandas.query()를 사용하는 챗 인터페이스.
핵심 요약
- Fuzzy Dedup(빠른퓨즈 + pymorphy2)을 통해 SERP 요청 수를 3,000에서 1,500으로 감소.
- 하이브리드 클러스터링은 NLP 속도와 SERP 거부 정책의 정확성을 결합.
- 앙상블 투표(3회)로 AI 필터링 안정성 85%까지 향상.
- 토큰 절약: ID 번호 부여 + 배치 처리 → 전체 실행당 $0.3.
- 처리 시간: 20~30분 (수동 처리 3~4시간 대비).
기술 스택: Python 3.11, 딥시크 API, XMLRiver, SentenceTransformers, rapidfuzz, pymorphy2, pandas, customtkinter.
— Editorial Team
아직 댓글이 없습니다.