|
|
# 연구 방법론 — 자료 수집 및 전처리 (초안)
작성 기준일: 2026-10-23. 수치는 전부 현재 DB를 직접 조회한 실측값이며,
스크립트/DB 경로를 함께 표기해 재현·검증이 가능하도록 함.
---
## 1. 연구 설계와 자료 선정 근거
본 연구는 말리(Mali)를 중심 사례로 하여, 2021년 쿠데타 이후 수립된 군사정권이
선행 민간정부의 실패(치안 붕괴, 민생 불안)를 명분으로 삼아 자신의 통치를 정당화하는
방식을 신문 보도 분석을 통해 추적한다. 분석 대상 매체는 다음 두 축으로 구성했다.
**(1) 중심 사례 — Mali Web (`maliweb.net`)**
말리 국내 최대 포털형 뉴스사이트로, 정치·경제·치안·사회 전 영역에 걸쳐 가장 많은
보도량을 생산하여 군정의 치안 회복·민생 안정화 담론을 추적하기에 가장 적합한
1차 자료원으로 선정했다.
**(2) 대조군 — 5개 매체**
Mali Web 단독 분석의 한계(단일 매체 편향, own/재수록 혼재로 인한 과대추정 위험)를
보완하기 위해 다음 5개 매체를 대조군으로 함께 수집했다.
- **L'Essor** (`lessor.ml`) — 말리 국영(공보부 산하 AMAP) 매체. 군정의 '공식 입장'이
가장 직접적으로 드러나는 매체로서 Mali Web(민간)과의 국영/민간 대조에 사용.
- **Le Faso** (`lefaso.net`) — 부르키나파소 민간지. AES(사헬국가연합) 소속 타 회원국의
유사 담론 재현 여부를 확인하는 국가 간 대조군.
- **ActuNiger** (`actuniger.com`) — 니제르 민간지. 위와 동일한 목적의 3국 비교축 완성.
- **RFI Afrique** (`rfi.fr`) — 프랑스 공영 국제방송의 아프리카 지면. 서구/구 종주국
시각에서 AES 3국을 어떻게 보도하는지 확인하는 외부 관찰자 축.
- **RT en Français** (`rtenfrancais.tv`) — 러시아 국영 매체의 프랑스어판. 반서구·
다극주의 성향 매체가 동일 사건을 어떻게 프레이밍하는지 확인하는 또 다른 외부
관찰자 축(RFI와의 대조).
이 6개 매체는 매체 소유구조(국영/민간/국영국제방송/외국국영방송) 및 지정학적 입장
(AES 역내/서구/비서구 외부)이 서로 다르도록 설계적으로 선택되었으며, 이로써
"군정의 자기정당화 서사가 매체 성격에 따라 어떻게 다르게 재현·검증·반박되는가"를
비교할 수 있는 구조를 갖춘다.
## 2. 수집 기간 및 수집 방식
### 2.1 수집 기간
전 매체 공통으로 **2025년 12월 1일 이후** 보도를 수집 대상으로 한정했다. 이는
매체 간 보도 분량의 공정한 비교를 위해 설정한 공통 하한선으로, 매체별로 창간/
전산화 시점이 다르거나 과거 기사 접근성이 다른 데서 발생하는 비교 왜곡을
방지하기 위함이다.
### 2.2 수집 방식 (자동 크롤링)
전 매체 공통으로 Python 기반 자동 수집 스크립트를 구축했다. 수집은 매체별로
독립된 스크립트로 운영하며(공유 모듈에 의존하지 않고 매체별 사이트 구조 변경에
서로 영향받지 않도록 설계), 공통 분류 로직(토픽 분류, 개체명 추출, 관련성 필터
등)만 별도 공용 모듈(`sahel_extractor.py`)로 분리해 재사용한다.
매체별 수집 기술은 해당 사이트의 접근 제약에 따라 달리 적용했다(아래 표).
| 매체 | 수집 기술 | 비고 |
| Mali Web | HTTP 요청(requests) | 접근 제약 없음 |
| L'Essor | HTTP 요청(requests) | 접근 제약 없음, 목록 페이지 페이지네이션 없음(1페이지만 존재) |
| Le Faso | HTTP 요청(requests) | SPIP CMS, 목록 페이지에 날짜 정보가 없어 상세 페이지를 전부 열어 날짜 판별 |
| ActuNiger | HTTP 요청(requests) | Joomla CMS, 목록 페이지에 날짜 메타데이터 존재(효율적 수집 가능) |
| RFI Afrique | 브라우저 자동화(Playwright) | 매체사 자체 방화벽(WAF)이 일반 HTTP 요청을 차단(403)하여 실제 브라우저 렌더링 경로 필요 |
| RT en Français | HTTP 요청(requests) | 접근 제약 없음. 검색 페이지는 `robots.txt`로 차단되어 있어 이를 준수해 사이트맵(`sitemap.xml`)을 통한 기사 URL 수집 방식을 사용 |
모든 수집기는 날짜 조기종료(해당 매체의 목록이 최신→과거 정렬임을 이용해
설정 하한선 도달 시 탐색을 중단) 및 중복 URL 재방문 방지 로직을 포함한다.
### 2.3 운영 체계: 1회성 전체백필 → 주간 단기백필
각 매체는 먼저 1회성 전체 백필(설정된 하한선까지 전량 수집)을 수행한 뒤,
이후로는 주 1회 주기로 "최근 수집분 이후 신규 기사만" 확인하는 단기백필
스크립트를 운영해 데이터셋을 최신 상태로 유지한다. 이 단기백필 스크립트는
이미 DB에 존재하는 URL을 만나면 탐색을 중단하는 방식으로 신규 기사만 선별
적재한다.
## 3. 저장 구조
매체별로 독립된 SQLite DB 파일에 저장하며, 공통 스키마(`articles` 테이블)를
기본으로 하되 매체별 특성에 따라 일부 컬럼을 추가했다.
| 매체 | DB 파일 | 전체 건수(2026-10-23 기준) | 수집 날짜범위 |
| Mali Web | `mali/maliweb_backfill.db` | 3,048건 | 2025-12-01 ~ 2026-10-21* |
| L'Essor | `mali/lessor_gov.db` | 1,510건 | 2025-12-03 ~ 2026-10-21 |
| Le Faso | `burkina_faso/lefaso_pri.db` | 3,544건 | 2025-12-02 ~ 2026-10-21 |
| ActuNiger | `niger/actuniger_pri.db` | 724건 | 2025-12-01 ~ 2026-10-21 |
| RFI Afrique | `international/rfi_occ.db` | 657건 (Mali 345 / Burkina Faso 187 / Niger 125) | 2025-12-02 ~ 2026-10-21 |
| RT en Français | `international/rt_ori.db` | 453건 (Mali 218 / Burkina Faso 124 / Niger 111) | 2025-12-01 ~ 2026-10-21 |
\* Mali Web DB에 날짜 파싱 오류로 추정되는 미래 날짜(2027-07-28) 1건이 포함되어
있음을 발견함(전수 3,048건 중 1건, 0.03%). 해당 기사 자체는 실재하는 기사이나
발행일 메타데이터 파싱 과정의 결함으로 추정되며, 날짜 기반 분석 시 이상치로
식별·제외 처리가 필요함(분석 결과에는 영향이 미미한 수준).
공통 저장 필드: 기사ID(URL 해시), 원문 URL, 수집일시, 발행일시, 국가, 매체명,
매체유형(국영/민간/해외공영/해외국영-비서구), 매체성향, 제목, 요약, 본문
전문, 사이트 자체 카테고리, 중요도, 감성(초기 설계, 신뢰도 낮아 분석에는
미사용), 개체명/수치/담론프레임 추출 결과(JSON), 학술 주제 분류 결과.
## 4. 카테고리 정리 — 두 단계 분류 체계
### 4.1 1단계: 매체 자체 카테고리 (원형 보존)
각 매체가 사이트 자체적으로 사용하는 카테고리 체계를 그대로 보존해 저장했다
(매체별 명명 방식의 차이 자체도 비교 대상이 될 수 있다는 판단).
- **Mali Web**: Politique(658) / Economie(913) / Insécurité(357) / International(777) /
Faits_divers(202) / Sante(141)
- **L'Essor**: POLITIQUE(103) / ECONOMIE(85) / SOCIETE(118) / ACTUALITES(1,072) /
FAITS_DIVERS(37) / AES(95) — ACTUALITES(일반속보)가 압도적 비중을 차지하는 것이
특징적이며, 이는 국영매체 특유의 "속보형 1차 공지" 보도 비중이 큼을 시사
- **Le Faso**: Societe(2,656) / Economie(305) / Culture(171) / Cooperation(146) /
International(119) / Politique(105) / General(41) / ONG(1)
- **ActuNiger**: Societe(444) / Politique(144) / International(116) / Economie(14) /
General(3) / Culture(3)
- **RFI / RT en Français**: 사이트 자체 카테고리 대신 국가 태그(Mali/Burkina Faso/
Niger) 단위로 수집되어 category 필드에 국가명이 저장됨(두 매체 모두 자체
뉴스 분류 체계가 지역/주제 교차형이라 말리 3국 공통 비교축에 그대로 대응하지 않음)
### 4.2 2단계: 공통 비교축(mapped_category) — 7종
매체 간 직접 비교를 위해 Politique(정치)·Economie(경제)·Insécurité(치안/안보)·
Societe(사회)·International(국제)·Faits_divers(사건사고)·Cooperation(국제협력)
7종의 공통 축을 설계하고, 4개 매체(Mali Web/L'Essor/Le Faso/ActuNiger)의 자체
카테고리를 이 축으로 매핑했다. 매핑이 불가능한 카테고리(예: Mali Web의 Sante,
L'Essor의 ACTUALITES, Le Faso의 Culture/ONG)는 임의로 유사 카테고리에 끼워
맞추지 않고 결측(NULL)으로 명시해, "매체에 대응 카테고리가 원래 없음"과
"분류 실패"를 구분했다.
**치안(Insécurité) 재분류의 방법론적 보완**: Societe(사회) 카테고리 안에
안보 사건이 혼재되어 있음을 발견하여, 안보 관련 키워드(테러·지하디스트·무장단체·
군사작전 등)를 포함한 기사를 Societe에서 Insécurité로 재분류하는 2차 작업을
수행했다. 이 과정에서 지명(예: Kidal) 또는 조직명 약어(예: FAMA) 단독 일치로
인한 과다매칭 문제를 발견·수정했다(예: "FAMA"가 "diffamation(명예훼손)" 단어
내부에서 잘못 매칭되는 사례 — 단어경계(`\b`) 정규식 적용으로 해결). 수정 전/후
매칭 건수 차이가 커(Le Faso: 289건→118건, L'Essor는 사이드바 오염 버그와 중첩되어
재작업), 이 보완이 분석 신뢰도에 실질적 영향을 미쳤음을 확인했다.
## 5. 자체 기사(own) / 외부 기사(wire) 분류 방법론
### 5.1 문제의식
매체가 스스로 생산한 보도(own)와 통신사·타 매체 기사를 재수록한 보도(wire)를
구분하는 것은 "그 매체가 실제로 어떤 입장을 생산하는가"를 보기 위한 전제조건이다.
단, 매체 자체의 "own" 라벨(또는 그에 준하는 단순 휴리스틱)은 재수록 사실을
은폐하거나 메타데이터에 반영하지 않는 경우가 있어, 그대로 신뢰할 수 없다는
문제가 있다.
### 5.2 1차 분류: ContentTypeClassifier
본문 특징(통신사 표기 "avec AFP/Reuters" 등 관용구, 공식 성명 형식, 논평 형식)을
기준으로 own/wire/opinion/official_statement 4유형으로 1차 분류하는 규칙 기반
분류기(`ContentTypeClassifier`)를 전 매체 공통으로 적용했다. 단, 이 분류기는
"판별 순위" 방식으로 작동하여(wire/opinion/official_statement 중 하나로 분류되지
않으면 나머지 전부가 own으로 분류됨) own이 "자체 생산을 적극적으로 확인한 결과"가
아니라 "소거법의 나머지"라는 한계가 있다.
| 매체 | own | wire/wire_mixed | opinion | official_statement |
| Mali Web | 2,716 | 25 | 249 | 58 |
| L'Essor | 1,481 | 2 | 2 | 25 |
| Le Faso | 3,099 | 49 | 16 | 380 |
| ActuNiger | 691 | 8 | 4 | 21 |
| RFI | 656 | 1 | — | — |
| RT en Français | 445 | 8 | — | — |
### 5.3 2차 검증: ByLineExtractor — 바이라인 메타데이터 기반 원출처 추적
Mali Web에 대해 위 1차 분류의 한계를 보완하기 위해, HTML 메타데이터
(`article:author` meta 태그 및 JSON-LD 구조화데이터)에 원 출처 매체명이
그대로 기록되어 있음을 발견하고, 이를 추출하는 `ByLineExtractor`를 구현해
2,716건의 "own" 분류 기사 전체를 재검증했다.
**핵심 발견**: Mali Web "own" 2,716건 중 상당수가 실제로는 타 매체(L'Essor,
Mali Tribune, L'Aube, Le Challenger 등 22개 이상의 매체)의 재수록이었다.
실제 바이라인 분포 상위:
| 바이라인 | 건수 | 해석 |
| maliweb / maliweb.net | 1,075 + 516 = 1,591 | Mali Web 자체 생산(진정한 own) |
| L'Essor | 309 | 재수록(국영매체발) |
| Aujourd'hui-Mali | 296 | 재수록(민간매체발) |
| Mali Tribune | 211 | 재수록 |
| L'Aube | 181 | 재수록 |
| Le Challenger | 136 | 재수록 |
| (기타 17개+ 매체) | 다수 | 재수록 |
이에 따라 `source_is_self`(바이라인이 Mali Web 자신인지 여부, 1=자신)와
`is_true_own`(1차 분류 own이면서 바이라인도 자신인 "진정한 own") 2개의
검증 컬럼을 추가했다. 현재 Mali Web DB 기준 `is_true_own=1`은 1,495건,
`is_true_own=0`(1차 분류상 own이었으나 실제로는 재수록)은 1,542건으로,
**1차 분류만 사용했을 경우 Mali Web의 자체 생산 비중을 실제보다 과대추정할
위험이 있었음을 확인했다.** 이는 본 연구의 방법론적 기여 중 하나로,
단순 매체명 라벨이 아니라 메타데이터 교차검증을 통해 콘텐츠 생산 주체를
식별하는 절차를 마련한 것이다.
L'Essor/Le Faso/ActuNiger/RFI/RT en Français에는 이 바이라인 기반 2차
검증을 아직 전면 적용하지 않았으며(향후 확장 과제), 현재는 1차 분류
(ContentTypeClassifier) 결과만 보유한다.
## 6. 관련성 필터 — 키워드 오탐 문제와 수정
국제(International) 카테고리처럼 "전세계 뉴스 창고" 성격이 강한 카테고리에는
사헬/AES 관련성이 낮은 기사가 혼입될 위험이 있어, 국가명·기구명 키워드 매칭
기반 관련성 필터(`RelevanceFilter`)를 적용했다. 적용 초기, 단어경계 없는
부분문자열 매칭으로 인해 "mali"가 "Somalie/Somaliland/Maliki" 등 무관 단어
내부에서 오매칭되는 버그를 발견했다. 이를 단어경계(`\b`) 정규식으로 수정한 뒤
재검증한 결과:
- Mali Web International 773건 중 76건(9.8%)이 구필터 오탐으로 판명되어
`relevance_recheck=0`으로 표시(행 삭제 없이 플래그만 추가, 분석 시 제외 권장)
- L'Essor International(관련 매핑) 94건은 재검증 결과 재분류 0건(이미 안전)
이 수정은 "매체가 실제로 AES/사헬 관련 국제뉴스를 어떻게 다루는가"를 분석할 때
무관 뉴스(예: 소말리아 관련 기사가 "mali" 부분일치로 혼입)가 끼어들어 분석
결론을 왜곡할 위험을 제거한 것으로, 자료의 내용 타당도(content validity)를
높이는 절차로 기술할 수 있다.
## 7. 본문 추출 오염 문제와 수정 (텍스트 품질 관리)
본문(full_text) 분석(토픽분류, 개체명추출 등)의 전제가 되는 본문 추출 과정에서
두 매체에 걸쳐 구조적 오염이 발견되어 수정했다. 심사 과정에서 자료의 신뢰도
관련 질의가 있을 경우를 대비해 기록한다.
- **L'Essor**: 기사 본문 블록과 "관련기사 미리보기" 위젯이 동일한 CSS 클래스로
렌더링되어, 무관한 타 기사 내용이 본문에 통째로 섞여 들어가는 문제를 발견
(수정 전 평균 본문 길이 약 10,000자, 수정 후 약 2,900자로 정상화). 기자명
단독 줄을 경계 마커로 삼아 위젯 구간을 식별·제거하는 방식으로 1,510건
전체를 재추출했다.
- **ActuNiger**: 사이트 템플릿(Joomla)의 HTML 태그 미closure로 사이드바 위젯이
본문에 흡수되는 문제를 발견, 위젯 전용 타임스탬프 패턴을 종료 마커로 삼아
제거했다.
두 경우 모두 "삭제 대신 격리" 원칙에 따라 수정 전 데이터를 타임스탬프가 포함된
백업 파일로 보존했으며, 수정 전후 평균 본문 길이·오염 마커 검출 건수를 비교해
수정 효과를 정량적으로 검증했다.
## 8. 사건 동일성 확인 (close-reading을 위한 전처리)
매체 간 동일 사건에 대한 보도 비교(close-reading)를 수행할 때, 날짜·카테고리
자동매칭만으로는 "날짜만 같을 뿐 실제로는 다른 사건"이 가짜 매칭쌍으로
혼입될 위험이 실측으로 확인되었다(10개 이상 사건 클러스터 검증 중 2개 클러스터가
가짜쌍으로 판명). 따라서 자동매칭 이후 반드시 연구자가 "동일 사건 여부"를
1차 확인하는 수동 검토 단계를 방법론에 명시적으로 포함했다.
## 9. 현재까지의 한계 및 향후 보완 과제 (심사 대비)
1. 바이라인 기반 2차 own/wire 검증(5.3)은 현재 Mali Web에만 적용되어 있어,
대조군 5개 매체의 "own" 비중에는 같은 수준의 과대추정 위험이 아직 잠재함.
확장 적용이 필요함을 한계로 명시.
2. International/Cooperation 카테고리를 AES 역내/ECOWAS/비동맹 인근국/
신흥 파트너(러시아·중국 등)/서구로 세분하는 작업은 설계만 되어 있고
아직 미착수.
3. Mali Web의 날짜 이상치 1건(2027-07-28)은 발견했으나 원인(날짜 파싱 로직의
구체적 결함 지점)은 아직 특정하지 않음 — 추가 조사 필요.
4. 감성분석(SentimentAnalyzer)은 초기 설계에 포함되었으나 신뢰도가 낮아 실제
분석에는 사용하지 않기로 함(방법론 포기 과정 자체를 기술할 가치가 있음 —
왜 포기했는지의 근거가 "더 엄밀한 방법으로 교체" 서사를 지지함).
===
10월 23일 actuniger 접속 중단 지속. 처음에는 Site en maintenance라고 나오다가 서비스가 되었다가 아래와 같이 중단.
