HFC(2025)Research A
CNUDH
송하영(팀장), 정윤환(팀장), 조우빈, 김성산, 왕즈옌
목차
Contents
연구배경
첫째. 기존 정보 접근성의 한계와 파편화: 태평천국운동을 인터넷이나 문헌에서 검색해보면, 대개 ‘금전기의’나 ‘천경 함락’과 같은 주요 사건들이 단편적인 사실 위주로 나열되어 있다. 그러나 이러한 텍스트 중심의 자료만으로는 각 사건이 시간과 공간 속에서 어떻게 유기적으로 연결되었는지, 그리고 사건 내부의 복잡한 인과관계가 어떠했는지를 파악하기에는 자료들이 텍스트 위주의 평면적인 서술에 머물러 있어, 역동적으로 변화하는 사건의 인과관계를 입체적으로 파악하기 불가능했다.
둘째. 통합된 시각화 자료의 부재: 심층 조사 과정에서 우리는 ‘서구 열강의 개입’이나 ‘지도부 내 권력 다툼(천경사변)’과 같은 구체적이고 중요한 역사적 사실들을 확인할 수 있었다. 하지만 이러한 개별적 사실들을 넘어, 태평천국의 시작인 금전기의부터 멸망에 이르기까지 핵심적인 8대 사건을 관통하며 인물(Person), 장소(Place), 사물(Object)이 얽힌 복합적인 관계망을 한눈에 볼 수 있도록 정리된 통합 시각화 자료는 전무했다.
셋째. 역사적 중요성 대비 이해의 한계: 태평천국운동은 청나라의 몰락을 가속화하고 동아시아 정세에 막대한 파장을 일으킨 결정적인 사건이다. 중국 근대사나 동아시아 역사를 공부할 때 그 중요성을 자주 접하게 되지만, 앞서 언급한 연대기적 서술과 시각화 자료의 부재로 인해 당시의 급박했던 전개 양상이나 거대한 청 제국을 뒤흔든 운동의 실체적인 동력을 입체적으로 이해하는 데에는 분명한 한계가 존재했다.
연구목적
첫째. 8개의 핵심 사건 데이터 편찬 및 통합: 이에 우리 팀은 흩어져 있는 태평천국운동의 자료를 수집하여, 운동의 전개 과정을 가장 잘 보여주는 주요 8개 사건(금전기의, 남경함락, 북벌, 1차 강남대영, 천경사변, 2차 강남대영, 상하이 전투, 천경공방전 및 멸망)을 중심으로 데이터를 한곳에 모아 체계적으로 편찬하고 정리하는 작업을 선행하고자 한다.
둘째. 인과관계의 구조화 및 시각적 분석: 나아가, 단순한 정보 수집을 넘어 앞서 편찬된 데이터를 바탕으로 사건 간의 인과관계를 구조화한다. 이를 그래프 데이터베이스(Neo4j)를 통해 시각화함으로써, 텍스트로는 보이지 않던 태평천국운동의 복합적인 전개 양상을 파악하고, 텍스트 너머에 존재하는 역사적 실체를 입체적으로 재구성하여 이를 실증적으로 규명하는 데 주력하고자 한다.
연구방법
본 연구는 파편화된 역사 정보를 데이터로 재구성하고 입체적으로 분석하기 위해 다음과 같은 3단계의 체계적인 절차를 수행하였다.
첫째. '’멀티미디어 기초 자원의 확보이다. 위키데이터(Wikidata) 및 중국의 바이두(Baidu) 등 웹상에 분산된 다양한 멀티미디어 콘텐츠를 수집하여 연구의 기반이 되는 기초 데이터를 확보하였다.
둘째. '’데이터 모델링(Data Modeling) 및 클래스 분류이다. 수집된 방대한 자료를 정형화된 데이터 구조로 설계하기 위해, 태평천국운동을 구성하는 핵심 요소를 인물(Person), 단체(Group), 사건(Event), 장소(Place), 사물(Object), 기록(Record), 시간(Time) 등의 클래스(Class)로 체계적으로 분류하였다.
셋째. '’관계성(Relationship) 규명 및 시각화이다.
단순한 정보의 나열을 넘어 각 요소가 맺고 있는 유기적인 연결고리를 규명하기 위해 ‘사건이 발생한 장소(OccurredAt)’, ‘인물의 소속(BelongsTo)’, ‘무기의 사용(UsedIn)’ 등 구체적인 관계성을 설정하였다. 이렇게 편찬된 데이터는 그래프 데이터베이스인 Neo4j를 활용하여 시각화함으로써, 텍스트로는 보이지 않던 사건의 흐름과 인물 간의 복잡한 관계망을 구현하였다.
데이터 수집과 편찬 및 활용의 큰 맥락
본 연구는 태평천국운동을 구성하는 주요 역사적 사건들을 분석 대상으로 삼아, 이들을 하나의 서사로 설명하는 것이 아니라 분석 가능한 데이터 집합으로 재구성하는 데 목적을 둔다. 이를 위해 사건 관련 정보를 체계적으로 수집하고, 해당 데이터를 활용하여 태평천국운동의 전개 양상과 변곡점을 규명하고자 한다. 본 연구에서 설정한 연구 절차는 다음과 같다.
첫째, 사건 구성 요소 단위의 데이터 수집을 진행한다.
각 사건을 하나의 분석 단위로 설정하고, 사건을 구성하는 핵심 요소를 세분화하여 자료를 수집한다. 구체적으로 사건의 발생 연도와 시기(Time), 공간적 배경(Place), 사건에 관여한 주요 인물(Person), 사건과 직접적으로 연관된 물적 요소(Object), 그리고 이를 전하는 기록 자료(Record)를 중심으로 문헌 조사를 수행한다. 이렇게 수집된 정보는 서술형 텍스트가 아닌, 이후 재조합과 비교가 가능한 데이터 형태로 정리된다.
둘째, 사건 구성 요소들 간의 관계를 고려하여 데이터를 정리하고, 사건 간 구조를 형성한다.
인물과 사건 간의 관계, 사건과 장소·시간 간의 연결 관계를 중심으로 데이터를 구조화하고, 이를 그래프 구조로 변환한다. 이 과정에서 사건들은 단순한 연대기적 배열이 아니라, 공통 인물과 활동을 매개로 서로 연결된 하나의 구조적 네트워크로 재구성된다.
셋째, 정리된 데이터를 활용하여 태평천국운동의 동적 변화를 분석한다.
구축된 관계형 데이터를 바탕으로, 인물의 활동 밀집도와 사건 발생의 시공간적 분포를 분석한다. 특히 특정 시기와 특정 지역에 데이터가 집중되는 양상을 시각화함으로써, 태평천국운동의 전성기와 이후 붕괴로 이어지는 전환 국면을 도출한다. 이러한 분석은 태평천국운동을 단순한 흥망사로 서술하는 것을 넘어, 역사적 변화가 발생한 지점을 데이터 차원에서 설명하고자 하는 본 연구의 궁극적인 활용 단계에 해당한다.
기존 데이터 형식 검토: WikiData Review
1.금전기의(1850~1851년)
: 1850년 12월경 청군 측 반군 지휘관 위창휘와 이극탄포가 태평군에 의해 사살되면서, 태평군은 지역 내 군사적 주도권을 확보하는 동시에 내부 조직 정비와 통합을 본격적으로 추진하게 되었다. 이러한 초기 군사적 성과를 바탕으로 1851년 1월 11일 홍수전 일행은 광서성 금전촌에서 반란을 정식으로 선포하였고, 반청(反清) 세력은 조직적인 형태를 갖추며 태평천국운동의 기반을 마련하였다. 이어 1851년 3월 23일 홍수전은 천왕(天王)으로 공식 등극하고 태평천국 정권 수립을 선언함으로써, 태평천국은 단순한 민란 단계를 넘어 실질적인 독립 정권으로 출범하였다. 이후 1852년 6월 5일 남왕 풍운산이 영안(사의도)에서 청군의 대포에 맞아 사망하는 사건이 발생하여 초기 지도부는 큰 손실을 입었으나, 이는 동시에 태평천국이 보다 적극적인 군사 행동에 나서는 계기가 되었다. 같은 해 서양 선교사 테오도어 햄버그(Theodor Hamberg)가 홍수전의 일대기를 담은 『The Visions of Hung-Siu-Tsuen』의 집필을 시작하면서, 태평천국운동은 중국 내부를 넘어 서구권에도 알려지기 시작하였다.
2.남경함락(1853년)
: 금전촌기 이후 세력을 확장한 태평천국은 장강 유역을 향한 본격적인 진군에 나섰으며, 이 과정에서 1852년 9월 25일 서왕 소조귀가 장사(長沙) 공방전에서 청군에 의해 사망하는 손실을 입었다. 이는 태평천국의 초기 서진(西進) 작전이 수정되는 계기가 되었고, 이후 전략의 중심은 남경으로 옮겨졌다. 1853년 2월 말부터 3월 8일까지 태평천국군은 남경(난징) 외곽에 도달하여 성을 포위하고 본격적인 공격 준비에 들어갔으며, 동왕 양수청과 천왕 홍수전이 직접 지휘에 나서 남경 탈환을 핵심 목표로 삼았다. 그 결과 1853년 3월 19일 태평천국군은 남경 성벽을 돌파하여 도시를 함락시켰고, 청나라 총독 육근영은 패배하여 도주하였다. 이로써 태평천국은 남방 최대의 거점을 확보하며 청나라 국력에 이례적인 타격을 가하였다. 이어 1853년 3월 중순부터 말에 이르기까지 남경은 ‘천경(天京)’으로 개명되어 태평천국의 수도로 공식 선포되었고, 홍수전의 천왕 즉위와 함께 국가 체제와 행정 조직 정비가 본격화되었다. 그러나 이러한 성과는 곧바로 청군의 반격을 불러왔고, 같은 달 3월 31일 청군 흠차대신 향영이 남경 동쪽 효릉위에 강남대영을 설치하면서 천경에 대한 장기 포위가 시작되었다.
3.북벌(1853~1855년)
: 천경을 수도로 삼아 정권의 기반을 확립한 태평천국은 공세적 전략을 유지하며, 1853년 5월부터 8월에 이르기까지 양주를 기점으로 북진을 본격화하였다. 이는 회북, 산동, 산서 등 청나라 중앙부로 진출하여 북경을 목표로 하는 대규모 전략이었다. 북벌의 초기 단계에서 1853년 5월 16일 안휘성 저주성을 무혈 점령하며 순조로운 출발을 보였고, 이어 5월 17~18일에는 회하 강을 도하하며 청군과 첫 격전을 벌여 방어군을 제압하였다. 이후 태평천국군은 청류관 전투 등 연속적인 교전을 거치며 북진을 지속하였고, 6월 말 청류관 전투에서는 청군 승보 부대와 치열한 전투를 벌였음에도 전력을 유지한 채 산서성으로 진격을 이어갔다. 그 결과 9월 4일 산서성 원곡현을 점령하여 지원군을 돌파하고 산서성 내륙으로 진입하였으며, 9월 12일에는 평양성을 함락시켜 청군 원군이 늦게 도착하는 틈을 이용해 전략적 이득을 확보하였다. 이어 9월 14일 홍동현을 함락하고 청군 승보 기마병과의 격전에서 이를 격퇴하며 북진을 계속하였으나, 9월 16~19일 평양성 일대에서 태평군은 탈출과 합류 과정에서 승보의 기습을 받아 전력이 소모되었다. 이러한 누적된 손실 속에서도 9월 23일 로안(羅安)을 무혈로 점령하며 진격을 이어갔으나, 결국 1855년 3~5월 청군의 대대적인 반격으로 산동성과 산서성 일대에서 북벌군 세력은 전멸하였고, 북벌 전략은 결정적으로 실패하게 되었다.
4.제1차 강남대영(1853~1856년)
: 북벌이 진행되는 한편, 청군은 수도 천경을 직접 압박하는 전략을 지속하였다. 1853년 3월 말에서 4월 초에 이르러 청군 흠차대신 향영은 남경 동쪽 효릉위에 강남대영을 설치하고 천경에 대한 장기 포위를 개시하였다. 이로써 천경은 장기간 고립되었고, 태평천국의 내외부 접근은 효과적으로 차단되었다. 이러한 포위는 약 3년간 지속되며 태평천국 정권의 존립을 위협하였으나, 1856년 6월 17일 익왕 석달개가 서정군을 이끌고 청군 남격(南壘)을 공격하면서 전세는 반전되기 시작하였다. 청군 토민가가 구원에 나섰으나 태평군의 기세를 꺾지는 못하였고, 이어 6월 18일 청군 북격(北壘) 병력이 남격 구원에 투입되면서 북격의 방어력은 약화되었다. 이를 기회로 삼아 태평천국은 북격 포위를 가속화하였고, 6월 19일 연왕 진일강과 이수성 등 약 6만 병력이 북격을 포위하여 석달개와 호응하였다. 결국 6월 20일 강남대영은 함락되었고 향영은 자살하였으며, 3년간 지속된 천경 포위는 해제되었다. 그러나 이 승리는 곧 태평천국 내부의 권력 구조에 심각한 균열을 초래하게 되었다.
5.천경사변(1856년)
: 제1차 강남대영 격파로 외부 위기가 해소되자, 태평천국 내부에서는 권력 문제를 둘러싼 갈등이 표면화되었다. 1856년 6월부터 8월까지 동왕 양수청은 지도부 내에서 절대적인 권력을 장악하였고, 이는 천왕 홍수전과의 긴장을 급격히 고조시켰다. 이러한 상황 속에서 1856년 9월 1~2일 홍수전은 북왕 위창휘를 시켜 동왕부를 습격하게 하였고, 그 결과 양수청과 그의 일가, 부하 약 2만 명이 숙청되면서 태평천국 지도부 내부에서 대규모 권력 투쟁이 발생하였다. 이후 9월 2일부터 26일까지 위창휘는 과도한 숙청을 지속하며 익왕 석달개의 일가까지 공격하였고, 이로 인해 내부 불만과 혼란은 더욱 심화되었다. 이에 대응하여 1856년 11월 2일 석달개는 안경(安慶)에서 거병하여 위창휘의 처벌을 요구하며 군사적 대립에 나섰고, 그 결과 위창휘와 태일강, 진승용은 처형되었다. 그러나 이 사건은 갈등을 봉합하지 못하였고, 1857년 석달개가 10만 대군을 이끌고 사천(서천)으로 이탈함으로써 태평천국의 지도부 분열은 회복 불가능한 수준에 이르게 되었다.
6.제2차 강남대영(1860년)
: 천경사변 이후 내부 결속이 약화된 틈을 타, 청군은 다시 천경에 대한 압박을 강화하였다. 1858년부터 1860년 2월에 이르기까지 청군 흠차대신 화춘은 강남대영을 재건하고 천경에 대한 재포위를 개시하였으며, 태평천국은 다시 절대적인 위기에 직면하였다. 이러한 상황에서 1860년 2월 10일 충왕 이수성은 간왕 홍인간과 함께 ‘위위구조(圍魏救趙)’ 전략을 채택하여 청군의 주력을 분산시키고 포위를 풀 기회를 모색하였다. 이에 따라 3월 19일 이수성은 항주를 공격하여 땅굴 전략으로 성을 함락시켰고, 이 과정에서 절강 순무 나준전은 자살하였으며 화춘은 1만 3천 명의 병력을 구원군으로 파견하였다. 이후 5월 2일부터 15일까지 이수성의 부대는 항주를 포기하고 약 10만 병력을 동원해 강남대영을 역포위하였고, 연왕 진일강 등의 협공 속에서 청군은 격파되며 화춘은 부상을 입었다. 결국 강남대영은 붕괴되었고, 천경 포위는 해제되면서 태평천국은 다시 한 차례 생존에 성공하였다.
7.상하이 전투(1861~1862년)
: 그러나 연이은 전투로 국력이 소모된 태평천국은 새로운 돌파구를 필요로 하였고, 그 결과 상하이가 다음 목표로 설정되었다. 1861년 6~7월 충왕 이수성은 약 60만 병력을 이끌고 상하이를 공격하며, 영국과 프랑스 등 외세에 중립적 협조를 요청하였다. 그러나 외세의 반응은 냉담하였고, 전쟁의 성격은 점차 국제적 개입 국면으로 전환되었다. 1861년 9~10월 미국인 워드(프레드릭 타운샌드 워드)는 필리핀과 청나라 출신 병사 약 2천 명을 훈련시켜 상승군(常勝軍)을 조직하고 전선에 투입함으로써 외세의 직접적 개입이 본격화되었다. 이어 1862년 3월 워드와 영국군 장교 호프는 소당촌 전투에서 태평군을 격퇴하였고, 상승군은 현대식 무기와 체계적인 훈련을 바탕으로 군사적 우위를 확보하였다. 같은 해 6~7월 영국과 프랑스는 현대식 포병과 군함을 투입하여 대규모 충돌을 벌였고, 그 결과 태평군은 격퇴되었으며 이수성은 부상을 입고 상하이 점령에 실패하였다. 이로써 외세의 개입은 태평천국 전쟁의 향방을 근본적으로 바꾸게 되었다.
8.천경공방전 및 멸망(1864년)
: 상하이 전투 이후 태평천국의 군사적·외교적 입지는 급격히 약화되었고, 청군은 최종 공세에 나섰다. 1863년 6월부터 11월까지 증국번을 비롯한 청군의 고위 장수들은 천경 외곽의 요충지를 차례로 점령하며 자금산 이남 지역을 장악하였고, 이에 따라 천경을 둘러싼 포위망은 점점 좁혀졌다. 이어 1864년 3월 2일 증국번은 신책문과 태평문 일대에 병력을 전개하여 천경을 완전히 포위하였으며, 가뭄과 식량 부족이 겹치면서 내부 사기는 급격히 저하되었다. 이러한 위기 속에서 1864년 6월 1일 천왕 홍수전이 병사하였고, 충왕 이수성은 모든 예비군을 투입해 저항을 시도하였으나 이미 태평천국의 세력은 한계에 도달해 있었다. 결국 7월 19일 청군은 태평문과 신책문에서 갱도 공격을 감행해 성벽을 붕괴시키며 천경을 함락하였고, 대규모 시가전 끝에 수도는 무너졌다. 이후 이수성은 어린 천왕 홍천귀복을 데리고 탈출을 시도하였으나 증국번에게 사로잡혀 처형되었으며, 이로써 태평천국 정권은 완전히 멸망하게 되었다.
데이터 모델링
Class, 클래스
| 영문명 | 설명 | 개체 예시 | 속성 |
|---|---|---|---|
| Person | : 태평천국 운동과 관련된 인물이다 | 홍수전, 양수청, 풍운산 등 | id, class, name, original name, gender, nation, job, Reference URL |
| Group | : 태평천국 운동과 관련된 군대이다 | 청군, 태평천국군, 상승군 등 | id, name, 소속나라, Reference URL |
| Event | : 태평천국 운동과 관련된 구체적인 사건이다 | 금전기의, 남경함락, 북벌 등 | id, name, sort, description, Reference URL |
| Object | : 태평천국 운동에 사용된 장비이다 | 징갈, 화승총, 청동 대포 등 | id, name, sort, supplying country, user, Reference URL |
| Record | : 태평천국 운동의 사건들이 기록되어 있다 | Ti-Ping Tien-Kwoh:The History of the Ti-Ping Revolution(VolumeII), The Chinese and Their Rebellions, North China Herald 등 | id, name, sort, Publisher, description, Reference URL |
| Time | : 정리된 모든 정보들과 관련된 시간이다 | 1851년 1월 11일, 1852년 9월 12일, 1853년 5월 16일 등 | id, name, sort, year, month, day |
| Place | : 사건 발생 당시 사용되던 지명이다 | 천왕부, 서호, 장사현 등 | id, name, original title, sort |
| Site | : Place의 현재 위치이다 | 장쑤성 난징시 쉬안우구, 저장성 항저우시 시후구, 후난성 창사시 창사현 등 | id, name, province, city, county, district, latitude, longitude
|
Relationship, 관계
| SourceName | Relationship | TargetName | Description |
|---|---|---|---|
| Event | occurredAt | Place | : 사건이 발생한 당시 지명이 place이다 |
| Event | occurredOn | Time | : 사건이 언제 발생했다 |
| Place | isLocatedAt | Site | : 당시 place가 현재 site에 위치한다 |
| Person | isAuthorOf | Record | : 사람이 record의 저자이다 |
| Person | belongsTo | Group | : 사람이 그룹에 속해있다 |
| Object | usedIn | Event | : object가 사건에 사용됐다 |
| Object | usedBy | Group | : object가 그룹에 의해 사용됐다 |
| Time | partOf | Time | : 시간이 더 큰 시간의 일부이다 |
| Event | partOf | Event | : 사건이 더 큰 사건의 일부이다 |
| Site | partOf | Site | : 장소가 더 큰 장소의 일부이다 |
| Person | involvedIn | Event | : 사람이 어떤 사건에 관여했다 |
| Group | relatedTo | Event | : 그룹이 어떤 사건과 관련되어 있다 |
| Person | relatedTo | Record | : 사람이 기록물과 관련되어 있다 |
| Event | writtenIn | Record | : 어떤 사건이 record에 쓰여있다 |
| Person | diedIn | Site | : 사람이 특정 site에서 사망했다 |
| Person | diedIn | Place | : 사람이 특정 place에서 사망했다 |
| Person | diedOn | Time | : 사람이 특정 시간에 사망했다 |
| Person | influencedBy | Record | : 사람이 기록물한테 영향을 받았다 |
Attribute, 속성
연구 데이터 편찬
데이터 샘플링: Network Graph
연구 데이터: Google Spreadsheet
데이터 분석 결과
1. 데이터 분석 및 결과
1.1 태평천국운동의 생애주기와 변곡점 도출
운동의 전체적인 흐름을 파악하기 위해 두 가지 차원의 데이터를 교차 검증하였다.
- 공간적 분석 (Map Heatmap): 사건 발생 밀도와 사망자 밀도가 가장 높게 중첩되는 지역을 분석한 결과, 남경(천경)과 상하이 인근이 핵심 격전지로 나타났다.
- 시간적 분석 (Bar Chart): 연도별 사건 발생 수와 사망자 수를 막대그래프로 시각화했을 때, 1856년과 1860~1862년 구간에서 그래프가 급격히 상승함을 확인하였다.
이러한 시공간적 데이터의 교집합을 통해, 본 프로젝트는 천경사변(1856)과 상하이 전투(1860s)가 태평천국운동의 운명을 가른 두 가지 결정적 변곡점임을 도출하였다.
1.2 제1 변곡점: 상하이 전투와 외부적 고립
상하이 전투가 왜 패배의 원인이 되었는지 분석하기 위해 [전투 참여 그룹 비교 분석]을 수행하였다.
- 분석 결과: 당시 청군은 '청나라 정규군' 외에도 '상승군(서양 용병대)', '영국군', '향용(지방 의병)' 등 다국적 연합체의 지원을 받고 있었다. 반면, 태평천국군은 외부 지원 없이 단독으로 고립된 상태였다.
- 해석: 데이터상 드러난 3:1의 불균형한 세력 구도는 태평천국이 외교적 실패와 서구 열강의 개입으로 인해 군사적 열세에 처할 수밖에 없었음을 정량적으로 증명한다.
1.3 제2 변곡점: 천경사변과 내부적 붕괴
천경사변이 운동에 미친 영향을 파악하기 위해 [인물 관계도 및 사망 원인]을 분석하였다.
- 분석 결과: 1856년 천경사변 당시, 외부와의 전투(War) 관계보다 내부 인물 간의 대립이 집중적으로 발생하였다.
- 해석: 이는 태평천국이 외부의 적과 본격적으로 맞서기도 전에, 지도부 내분으로 인해 핵심 역량을 스스로 파괴했음을 시사한다. 이 사건으로 동왕 양수청 등 초기 지휘관들이 대거 사망하며 지휘 체계의 공백이 발생했다.
1.4 초기와 말기의 비교: 금전기의 vs 천경공방전
운동의 시작과 끝을 비교하여 멸망의 구조적 원인을 종합하였다.
- 금전기의 (초기): 사건 발생 지역이 협소하고 집중적이었으며, 적대 세력은 청군 하나뿐이었다. 또한, 주요 지휘관(왕들)이 모두 생존하여 강력한 리더십을 발휘했다.
- 천경공방전 (말기): 전선이 지나치게 확대되어 방어가 어려웠으며(Heatmap 분산), 적대 그룹은 3배로 늘어났다. 반면, 이를 지휘할 초기 5왕(王)은 이미 사망하여 지도력 부재 현상이 뚜렷하게 나타났다.
2. 시사점 및 논의 (Discussion)
2.1 데이터가 찾아낸 숨겨진 주역: '이수성'의 재발견
이번 프로젝트를 진행하며 얻은 가장 큰 인문학적 발견은 '이수성'이라는 인물의 재조명이다.
인물별 사건 참여 쿼리를 분석하던 중, 이수성의 데이터 패턴이 매우 특이하다는 점을 발견했다. 당초 우리는 그가 1차 강남대영 격파 이후 등 혜성처럼 등장한 후기 지도자라고만 생각했다. 하지만 데이터는 그가 '금전기의'라는 태평천국의 시작점부터 멸망의 순간까지, 무려 14년 동안 거의 모든 주요 사건에 빠짐없이 참여(InvolvedIn)했음을 보여주었다.
그는 일개 병사로 시작해 태평천국의 흥망성쇠를 온몸으로 겪으며 '충왕(忠王)'의 자리에까지 등극한 드라마틱한 승진 신화의 주인공이었다.
기존 연구가 홍수전의 사상이나 천경사변의 정치 싸움에 주목했다면, 데이터는 "실질적으로 운동을 이끌고 최후까지 저항한 현장 지휘관은 이수성"이라는 새로운 관점을 제시하였다.
3. 연구의 한계 및 제언 (Limitations)
본 프로젝트를 진행하며 도출된 시사점과 연구의 한계, 그리고 향후 발전을 위한 논의 사항은 다음과 같다.
- 가. 연구 범위 설정 및 자료 수집의 한계
- 당초 태평천국운동의 전개를 8개의 특정 사건으로 구분한 것은 적정한 범위라 판단하였으나, 실제 연구 수행 과정에서 두 가지 현실적인 난관에 봉착하였다.
- 국내 문헌 자료의 희소성: 중국어 원문이나 영문 자료에 비해 한국어로 된 상세 자료가 부족하여 심층적인 데이터 속성(Property)을 확보하는 데 어려움이 있었다.
- 데이터 정합성 문제: 효율성을 위해 팀원별로 사건을 분담하여 조사를 진행했으나, 취합 과정에서 사건 간의 겹치는 노드가 다수 발견되었다. 이로 인해 중복 데이터를 처리하고 오류를 수정하는 데 예상보다 많은 시간이 소요되었다.
- → [향후 과제] 향후 연구에서는 범위를 더욱 좁히거나, 기획 단계에서부터 보다 치밀하고 구체적인 데이터 구축 가이드라인을 설계하여 데이터 정합성을 높여야 한다.
- 나. 데이터 모델링 및 활용의 효율성 제고
- 데이터 구축 과정에서 ‘계획’과 ‘활용’ 사이의 불일치가 발생하였다.
- 데이터 활용의 미비: 타임라인 시각화를 염두에 두고 연/월/일 단위의 상세한 시간 데이터를 수집하였으나, 실제 분석 단계에서 시각화의 초점이 ‘네트워크 구조’에 맞춰지면서 해당 데이터가 충분히 활용되지 못한 아쉬움이 남는다.
- 클래스(Class) 설계의 비효율성: 태평천국의 전반을 포괄하기 위해 ‘기록(Record)’ 등 다양한 클래스를 설계하였으나, 실질적으로 분석에 기여하지 못한 클래스가 존재했다. 이를 통해 그래프 데이터베이스의 핵심은 ‘노드의 종류를 늘리는 것’보다 ‘노드 간의 관계(Relationship)를 밀도 있게 정의하는 것’에 있음을 깨달았다.
- → [향후 과제] 차기 연구에서는 클래스를 단순화하되, 관계성을 다각화하여 분석의 깊이를 더하는 방향으로 모델을 개선해야 할 것이다.
- 다. 디지털 인문학을 통한 미시사적 재발견
- 위와 같은 몇 가지 시행착오에도 불구하고, 본 연구는 과거의 역사를 현대적인 ‘디지털 인문학(Digital Humanities)’의 관점으로 재해석했다는 점에서 큰 의의가 있다. 기존의 텍스트 중심 학습이 놓치기 쉬운 역사의 이면을 그래프와 맵(Map)이라는 시각적 도구를 통해 조망함으로써, 거시적인 역사 흐름 속에 숨겨진 미시적인 패턴들을 발견할 수 있었다. 이는 데이터 시각화가 단순한 정보 요약을 넘어, 과거와 현재를 잇는 새롭고 신선한 역사 탐구의 도구가 될 수 있음을 시사한다.
4. 결론 (Conclusion)
본 프로젝트는 텍스트 위주의 평면적인 기록에 머물러 있던 태평천국운동을 ‘데이터’라는 새로운 그릇에 담아 입체적으로 재구성하고자 했던 시도였다. 흩어져 있던 8대 주요 사건을 하나의 거대한 네트워크로 연결하고, 그 안에서 작동하는 인과관계를 그래프 데이터베이스(Neo4j)를 통해 시각화한 결과, 우리는 다음과 같은 유의미한 결론을 도출할 수 있었다.
- 첫째, 역사의 핵심 동력으로서 ‘인물 네트워크’의 재확인이다.
- 데이터 분석 결과, 사건과 사건을 잇는 가장 강력한 매개체는 ‘인물(Person)’이었다. 특히, ‘금전기의’부터 멸망에 이르기까지 전 생애에 걸쳐 높은 연결성을 보인 ‘충왕 이수성’의 재발견은, 기존의 거시적 서술에서 간과되기 쉬운 실무적 리더의 중요성을 데이터를 통해 실증적으로 입증한 대표적인 사례다. 이는 향후 역사 연구가 사건 중심을 넘어, 데이터가 지목하는 인물을 중심으로 미시적으로 확장될 수 있음을 시사한다.
- 둘째, 흥망성쇠의 구조적 원인에 대한 시각적 규명이다.
- 우리는 히트맵과 관계망 분석을 통해 태평천국의 몰락이 단순한 우연이 아님을 확인했다. ‘천경사변’에서 나타난 내부 인물 네트워크의 자멸적인 붕괴(DiedIn 밀집데이터), 그리고 ‘상하이 전투’에서 드러난 서양식 무기(Object)와 상승군(Group) 간의 연결성은 태평천국의 패배가 내부의 균열과 외부의 기술적 격차라는 두 가지 축에서 비롯되었음을 명확히 보여주었다. 텍스트로만 읽히던 패배의 원인이 데이터의 ‘단절’과 ‘연결’이라는 구조로 시각화된 것이다.
- 셋째, ‘디지털 인문학(Digital Humanities)’으로서의 가능성 확인이다.
- 비록 시공간 매핑의 기술적 한계와 데이터의 파편화라는 아쉬움은 남았으나, 본 연구는 역사를 ‘읽는 것’에서 ‘보는 것’으로 전환했다는 점에서 큰 의의를 가진다. 파편화된 정보를 연결하여 숨겨진 맥락을 찾아내는 과정은, 데이터 편찬 작업이 단순한 기록의 보존(Archiving)을 넘어, 숨겨진 역사적 맥락을 발굴하고 재해석하는 능동적인 탐구과정임을 확인하였다.
결론적으로, 이번 프로젝트는 태평천국운동이라는 과거의 유산을 현대의 기술로 복원하여 그 역사적 실체를 보다 객관적이고 다각적인 시선으로 조망하였다는 데에 의의가 있다. 이는 과거 역사적 기록을 현대적 기술로 재해석하여 입체적으로 조망해보며, 진정한 의미의 ‘데이터 인문학’의 초석을 다졌다고 할 수 있다.
AI 프롬프트 엔지니어링
1.내가 진행중인 프로젝트가 하나 있어. 프로젝트의 제목은 '태평천국운동의 전개 양상과 그 실제 탐구 : 주요 8개 사건을 중심으로' 야. 이 프로젝트는 태평천국운동의 전개에 관해서 Triple(S-P-O) 데이터를 구축하고, 그 데이터를 그래프데이터베이스 Neo4j에 적재한 다음, Cypher 쿼리를 통해 다각도로 그것을 탐색하는 것이 목표야. 온톨로지 기반의 데이터 모델링이 핵심이라 할 수 있지.
2.내가 이미 모델링을 해서 데이터베이스를 만들었어. 이제 그 데이터 모델에 대해서 너에게 설명을 해줄게 너는 그 데이터 모델을 토대로 neo4j에서 구동할 수 있는 cypher 쿼리를 알려주면 돼.
3.먼저 클래스와 클래스별 속성에 대해서 알려줄게 내가 지금 알려주는 내용을 표(table)로 나타내줘.클래스는 각각 person, group, event, object, record, time, place, site 야.
Person은 태평천국 운동과 관련된 인물이고, 예시로는 홍수전, 양수청, 풍운산 등이 있어. person의 속성은 id, class, name, original name, gender, nation, job, Reference URL 로 되어있어.
Group은 태평천국 운동과 관련된 군대이고, 예시로는 청군, 태평천국군, 상승군 등이 있어. group의 속성은 id, name, 소속나라, Reference URL로 되어있어.
Event는 태평천국 운동과 관련된 구체적인 사건이고, 예시로는 금전기의, 남경함락, 북벌 등이 있어. event의 속성은 id, name, sort, description, Reference URL로 되어있어.
Event sort는 8개의 큰 사건을 사건으로 분류했고, 세부 사건들을 ;앞의 키워드는 전투,포위, 정치, 점령으로 되어있고, ;뒤의 키워드는 방어, 사망, 함락,교전, 이동으로 되어있어. 예시로는 천경공방전은 큰 사건이어서 sort가 사건으로 되어있고, 천경외곽 포위의 경우 sort는 포위;방어로 되어있어.
Obeject는 태평천국 운동에 사용된 장비이고, 예시로는 징갈, 화승총, 청동 대포 등이 있어. Object 속성은 id, name, sort, supplying country, user, Reference URL로 되어있어.
Obeject sort는 무기, 함선, 장갑 증기선으로 분류되어 있어. 징갈의 sort는 무기야.
Record는 태평천국 운동의 사건들이 기록되어 있고, 예시로는 Ti-Ping Tien-Kwoh:The History of the Ti-Ping Revolution(VolumeII), The Chinese and Their Rebellions, North China Herald 등이 있어. Record의 속성은 id, name, sort, Publisher, description, Reference URL로 되어있어.
Record sort는 책과 신문으로 분류되어 있어. 예시로 North China Herald의 sort는 신문이야.
Time은 정리된 모든 정보들과 관련된 시간이야. 예시로는 1851년 1월 11일, 1852년 9월 12일, 1853년 5월 16일 등이 있어. time의 속성은 id, name, sort, year, month, day로 되어있어.
Time sort는 year, month, day 로 되어 있고, 예시로 1851년의 sort는 year로, 1851년 1월 11일의 sort는 day로 되어있어.
Place는 사건 발생 당시 사용되던 지명이고, 예시로는 천왕부, 서호, 장사현 등이 있어. place의 속성은 id, name, original title, sort로 되어있어.
Place sort는 자연, 건물, 행정구역, 마을, 성곽도시, 지역명, 성문 등으로 되어있어. 예시로 자금산의 sort는 자연이야.
Site는 Place의 현재 위치이고, 예시로는 장쑤성 난징시 쉬안우구, 저장성 항저우시 시후구, 후난성 창사시 창사현 등이 있어. Site의 속성은 id, name, province, city, county, district, latitude, longitude로 되어 있어.
4.관계에 대해서 알려줄게 Relationship은 각 클래스들의 연결로 source name-relationship-targetname으로 되어있어 Event-occurredAt-Place는 사건이 발생한 당시 지명이 Place이다, Event-occurrdeOn-Time은 사건이 언제 발생했다, Place-isLocatedAt-Site는 당시 Place가 현재 Site에 위치한다, Person-isAuthorOf-Record는 사람이 record의 저자이다, Person-belongsTo-Groupd은 사람이 그룹에 속해있다, Object-usedIn-Event은 Object가 사건에 사용됐다, Object-usedBy-Group은 Object가 그룹에 의해 사용됐다, Time-partOf-Time은 시간이 더 큰 시간의 일부이다, Event-partOf-Event은 사건이 더 큰 사건의 일부이다, Site-partOf-Site은 장소가 더 큰 장소의 일부이다, Person-involvedIn-Event은 사람이 어떤 사건에 관여했다, Group-relatedTo-Event 은 그룹이 어떤 사건과 관련되어 있다, Person-relatedTo-Record은 사람이 기록물과 관련되어 있다, Event-writtenIn-Record 은 어떤 사건이 record에 쓰여있다, Person-diedIn-Site은 사람이 특정 site에서 사망했다, Person-diedIn-Place은 사람이 특정 place에서 사망했다, Person-diedOn-Time은 사람이 특정 시간에 사망했다, Person-influencedBy-Record은 사람이 기록물한테 영향을 받았다 이렇게 되어있어. 이것도 표로 만들어줘
쿼리작성 (Neo4j Cypher)
1. 지역별 사건 밀집도 분석 (Event Heatmap)
"사건이 많이 발생한 장소를 히트맵으로 보여줘"
(전체 사건 데이터를 기반으로 사건 발생 빈도가 높은 격전지를 시각화한다)
MATCH (e:Event)-[:occurredAt]->(p:Place)-[:isLocatedAt]->(s:Site)
WHERE s.latitude IS NOT NULL AND s.longitude IS NOT NULL
RETURN s.name AS 현재지명,
s.latitude AS lat,
s.longitude AS lon,
count(e) AS 사건수
ORDER BY 사건수 DESC
2. 주요 인물 사망 장소 분석 (Death Heatmap)
"사망자가 많이 발생한 장소를 히트맵으로 보여줘"
(주요 인물들의 사망 위치를 추적하여 인명 손실이 컸던 지역을 시각화한다)
MATCH (p:Person)
// 1. '당시 지명(Place)'에서 사망하여 '현대 위치(Site)'를 찾아가는 경우
OPTIONAL MATCH (p)-[:diedIn]->(pl:Place)-[:isLocatedAt]->(s1:Site)
// 2. '현대 위치(Site)'에서 직접 사망했다고 기록된 경우 (데이터 누락 방지)
OPTIONAL MATCH (p)-[:diedIn]->(s2:Site)
// 3. 두 경우 중 유효한 위치(Site)를 하나로 합침 (coalesce 함수 사용)
WITH coalesce(s1, s2) AS deathSite, p
// 4. 좌표 데이터가 있는 경우만 필터링
WHERE deathSite IS NOT NULL
AND deathSite.latitude IS NOT NULL
AND deathSite.longitude IS NOT NULL
// 5. 장소별 사망자 수 집계 및 정렬
RETURN deathSite.name AS 장소명,
deathSite.latitude AS lat,
deathSite.longitude AS lon,
count(p) AS 사망자수
ORDER BY 사망자수 DESC
3. 사건에 최다 참여한 인물 확인 "인물들이 사건에 참여한 횟수를 카운트해서 높은 순대로 나열해줘" MATCH (p:Person)-[:involvedIn]->(anyEvent:Event)
// 1. 참여한 사건(anyEvent)에서 부모(partOf)를 계속 타고 올라갑니다. // *0.. 은 '자기 자신'도 포함한다는 뜻입니다. (이미 뿌리인 경우 대비) MATCH (anyEvent)-[:partOf*0..]->(root:Event)
// 2. [핵심] '뿌리 사건'의 정의: 더 이상 상위 사건(partOf)으로 연결되지 않는 사건 WHERE NOT (root)-[:partOf]->(:Event)
// 3. 인물별로 '뿌리 사건'의 중복을 제거합니다. // 예: 홍수전이 '북벌' 아래의 '전투A', '전투B'에 참여했어도 -> (홍수전, 북벌) 쌍은 하나만 남김 WITH DISTINCT p, root
// 4. 카운트 및 정렬 RETURN p.name AS 인물, count(root) AS 참여한사건수, p.job AS 직책 ORDER BY 참여한사건수 DESC LIMIT 10
4. 연도별 사망자 확인 "연도별 사망자를 확인해줘" MATCH (p:Person)-[:diedOn]->(t:Time) RETURN t.year AS 연도, count(p) AS 사망자수 ORDER BY 연도 ASC
5. 연도별 발생 이벤트 수 확인 "연도별 발생한 이벤트를 확인해줘" MATCH (e:Event)-[:occurredOn]->(t:Time) RETURN t.year AS Year, count(e) AS Event_Count ORDER BY Year ASC
6. 금전기의와 천경공방전 비교 "금전기의와 천경공방전 비교해보자(참여한 그룹이랑 주요인물)" // 1. 분석하고 싶은 두 사건의 이름을 리스트로 정의 UNWIND ['금전기의(⾦田起义)', '천경공방전'] AS target_event
// 2. 사건 노드 찾기 MATCH (e:Event {name: target_event})
// 3. [지표 1: 그룹] 직접 연관된 그룹 + 인물을 통해 연관된 그룹 찾기 OPTIONAL MATCH (e)<--(g1:Group) OPTIONAL MATCH (e)<-[:involvedIn]-(:Person)-->(g2:Group)
// 4. 그룹 리스트 합치기 및 중복 제거 WITH e, collect(DISTINCT g1.name) + collect(DISTINCT g2.name) AS temp_groups
// (리스트가 비어있을 경우 쿼리가 멈추지 않도록 안전장치 추가) UNWIND (CASE WHEN temp_groups = [] THEN [null] ELSE temp_groups END) AS g_name WITH e, collect(DISTINCT g_name) AS all_groups_raw // NULL 값 제거하여 최종 리스트 생성 WITH e, [x IN all_groups_raw WHERE x IS NOT NULL] AS all_groups
// 5. [지표 2: 주요 인물] 사건에 관여한 인물 이름 추출 OPTIONAL MATCH (person:Person)-[:involvedIn]->(e) WITH e, all_groups, collect(DISTINCT person.name) AS key_figures
// 6. 결과 반환 RETURN e.name AS 사건명, size(all_groups) AS 그룹수, // all_groups AS 그룹목록, // (선택) 그룹 이름들을 직접 보고 싶으면 주석을 해제하세요 key_figures AS 주요인물
7. 천경공방전과 금전기의 비교. "천경공방전과 금전기의 발생한 장소롤 위도 경도 좌표를 활용해서 히트맵으로 나타내줘" // 1. 기준 사건 이름을 정확하게 지정합니다. MATCH (root:Event) WHERE root.name IN ['금전기의(⾦田起义)', '천경공방전']
// 2. 해당 사건(root)과 그 하위 사건(sub)들을 모두 재귀적으로(*0..) 찾습니다. MATCH (sub:Event)-[:partOf*0..]->(root)
// 3. 사건의 장소와 좌표를 연결합니다. MATCH (sub)-[:occurredAt]->(p:Place)-[:isLocatedAt]->(s:Site)
// 4. 좌표가 유효한 것만 남깁니다. WHERE s.latitude IS NOT NULL AND s.longitude IS NOT NULL
// 5. 결과를 반환합니다. RETURN s.name AS 장소명,
root.name AS 상위사건명,
s.latitude AS lat,
s.longitude AS lon,
count(sub) AS 밀집도
ORDER BY 밀집도 DESC
8. 상하이 전투 관련 오브젝트 확인
" 상하이전투와 관련된 사건 중에서 서양에게 지원받은 무기를 보여줘"
// 1) 상하이 전투 root + 사건군 범위
MATCH (root:Event)
WHERE root.name CONTAINS "상하이 전투" OR root.name CONTAINS "上海"
OPTIONAL MATCH (ev:Event)-[:isPartOf*0..]-(root)
// 2) 해당 사건군 Event와 연결된 Object만 MATCH (o:Object)-[:usedIn]->(ev)
// 3) 사건 이름 컬럼 추가 RETURN
root.name AS EventName, o.name AS ObjectName, o.supplyingcountry AS SupplyingCountry, o.user AS ObjectUser
LIMIT 50;
참고자원
| 참고자원 | URL |
|---|---|
| 위키데이터 | https://www.wikidata.org/wiki/Wikidata:Main_Page |
| 위키피디아 | https://en.wikipedia.org/wiki/Main_Page |
| chatgpt | https://chatgpt.com/ |
| Gemini | https://gemini.google.com/app?hl=ko |
| 바이두 | https://www.baidu.com/ |
주석

