기생하조 : 조호성, 최강현, 나지원, 정수빈, 임진아
목차
연구 목적
권번(券番)은 조선 후기부터 일제강점기까지 기생들의 활동을 관리하고 연결하던 조직으로, 교육과 훈련, 공연 일정, 수입 분배까지 담당하며 기생의 삶을 제도적으로 운영했다. 1910년대 이전에는 ‘기생조합(妓生組合)’이라 불렸고, 이후 ‘권번’이라는 체계로 자리 잡아 경성을 중심으로 여러 권번이 활동했다. 본 연구는 1930년 1월 1일부터 1939년 12월 31일까지 경성에 있던 여섯 개 주요 권번을 중심으로, 당시 신문 기사에 등장한 기생들의 삶과 활동 양상을 살펴보려는 데 목적이 있다. 기사에 보도된 자살이나 연애 같은 개인적 사건부터 공연, 기부, 갈등, 범죄 연루 등 다양한 사회적 활동까지를 분석함으로써, 기생이 당대 사회에서 어떤 모습으로 존재했는지를 구체적으로 파악하고자 한다. 그동안 기생에 대한 연구는 예술 활동이나 식민지 여성의 피해에 초점을 맞춘 경우가 많았다면, 이번 연구는 당시 언론이 기생을 어떻게 다뤘는지를 통해 사회가 기생을 바라본 시선과 실제 활동 사이의 차이를 살펴보려 한다. 기사에 언급된 권번 이름을 기준으로 자료를 분류하고, 권번별로 어떤 사건이나 활동이 많았는지 비교함으로써 1930년대 경성에서 기생과 권번이 어떤 역할을 했는지를 좀 더 구체적으로 정리해보는 것이 이 연구의 핵심이다. 더 나아가 보도된 내용과 기생의 실제 활동을 비교함으로써, 기생이라는 존재를 둘러싼 사회적 인식과 현실 사이의 관계를 분석해보는 데에도 연구의 초점을 맞춘다.
연구 대상
본 연구는 1931년 발행된 『경성명기일람』에 등재된 경성 지역의 주요 다섯 권번—조선권번, 대동권번, 한성권번, 한남권번, 경성권번—과, 1935년 통합 과정을 거쳐 한남권번과 경성권번의 연장선상에서 설립된 종로권번을 연구 대상으로 삼는다. 개별 기생의 실명이나 활동 정보가 단편적으로만 전해지는 한계 속에서, 당시 신문 보도는 ‘OO권번 OOO’ 식의 표현으로 권번 중심의 보도 양상을 보였기 때문에, 권번명이 명시된 기사만을 선별하는 방식으로 자료 수집 범위를 한정하였다.
수집된 자료는 Neo4j 기반 온톨로지 분석을 위해 Article(기사), Event(사건), Person(인물), Place(장소), Organization(조직)의 5개 클래스로 구조화되며, 사건 유형은 자살미수, 자살, 실종, 중독, 질병, 사기, 횡령, 도박, 절도, 살인, 살인미수, 강간, 폭행, 납치, 밀수, 공연, 경연, 자선, 설립, 애국기부, 정치활동, 경제, 규제, 입양, 갈등, 비판 등 총 30여 가지로 세분화하였다.
보도 내용의 성격에 따라 기사들은 크게 사건사고, 행사 참여, 공연 활동으로 구분되며, 권번별로 연루된 사건의 유형과 빈도를 비교함으로써, 1930년대 경성에서 권번 소속 기생들이 실제 어떤 사건이나 활동에 관여했는지 그 양상을 분석하고자 한다. 이를 통해 권번 간 활동의 차이를 파악하고, 각 권번이 지닌 성격과 기생들의 사회문화적 위치를 보다 입체적으로 조망하는 데에 연구의 초점을 맞춘다.
연구 방법
기사 자료 이용
본 연구는 '네이버 뉴스 라이브러리'를 중심으로 데이터시트를 구성하였으며,
초기 조사 단계에서 '대한민국 신문 아카이브',‘조선 뉴스 라이브러리 100','한국 근대사료 DB' 등을 활용하였다. 이들 자료는 본격적인 데이터 수집에 직접 활용되지는 않았지만, 키워드 검토 및 기사 유형 파악에 참고 자료로 사용되었다.
한국 근현대사의 정치, 사회, 문화 연구와 관련된 사료들을 모아놓은 아카이브다. 신문 외에도 인물, 기관, 잡지 등 다양한 자료를 포함하고 있어, 기생과 권번을 둘러싼 시대적 맥락을 폭넓게 이해하는 데 보조적으로 기여하였다.
위 자료는 조선일보의 과거 신문기사를 텍스트화한 자료이다. 키워드 및 시대별로 검색이 가능하기에, 원하는 기사를 빠르게 찾을 수 있다. 조선일보 자료의 키워드 검색을 통해 필요한 기사를 찾는 용도로 활용하였다.
본 연구에서는 네이버 뉴스 라이브러리를 주요 자료 수집 플랫폼으로 활용하였다. 해당 데이터베이스는 일제강점기를 포함한 다양한 시대의 신문 기사를 시기별, 매체별로 검색할 수 있는 장점이 있어 1930년대 경성 기생 관련 담론을 분석하는 본 연구에 적합하다고 판단하였다. 이러한 키워드 상세검색을 통해 기생 및 권번 관련 신문 기사를 체계적으로 수집하고 데이터베이스화하여 분석에 활용하였다. 기사 수집은 1931년 발행된 『경성명기일람』에 등장하는 5대 권번 '조선권번', '대동권번', '한성권번', '한남권번', '경성권번'과 1935년 이후 등장한 '종로권번'을 중심으로 키워드를 설정하고, 권번명이 명확히 드러난 기사에 한해 1차 분류를 진행하였다. 이후 기사 내용에 따라 사건사고, 공연, 행사 참여 등으로 2차 분류하여 구조화하였다. 이러한 과정을 통해 확보된 기사들은 Neo4j 기반 온톨로지 데이터로 구축되었으며, 이후의 분석은 사건 유형, 등장 인물, 권번별 특성 등을 중심으로 진행되었다.
학술 자료 이용
학술 자료는 연구 설계 및 맥락 설정에 참고 자료로 활용되었다.
특히 『경성명기일람』(1931)은 연구 대상인 여섯 개 권번(조선권번, 대동권번, 한성권번, 한남권번, 경성권번, 종로권번)의 존재 여부를 확인하고, 권번 소속 기생들의 인명과 주소 일부를 확인하는 데 기초 자료로 활용되었다.
온톨로지(Ontology)
온톨로지 그래프(OntoGraph)
기생 관련 사건 온톨로지
클래스(Class)
클래스명 | 약자명 | 한글명 | 설명 |
---|---|---|---|
Article | AR | 기사 | 1930년대 경성 지역 신문에 게재된 기생 관련 기사. 동아일보, 조선일보 등 주요 일간지의 사건 보도 기사 |
Event | EV | 사건 및 이벤트 | 기사에서 다루어진 구체적 사건. 자살, 살인, 횡령, 공연, 기부 등 기생과 관련된 각종 사건 및 활동 |
Person | PR | 인물 | 기사에 실명 및 가명으로 언급된 모든 인물. 기생(gisaeng)과 비기생(non-gisaeng)으로 구분하여 분류 |
Organization | OR | 기관/단체 | 권번, 조합, 연맹, 여학교 등 기사에 등장하는 각종 기관 및 단체 |
Place | PL | 장소 | 장소 정보는 세부 주소가 아닌 권역 단위(district-level)로 추출. 부민관, 삼각동과 같이 당시 경성에서 널리 알려진 주요 지점이나 행정구역명을 중심으로 데이터를 구성했으며, 구체적인 번지나 개별 기생의 집 주소 등의 상세 주소는 추출 범위에서 제외 |
릴레이션(Relation)
Article - Event
영문명 | 한글명 | 정의역 | 치역 | 설명 |
---|---|---|---|---|
covers | A가 B를 다루다 | Article | Event | 기사가 사건/이벤트를 다루다 |
Article - Organization
영문명 | 한글명 | 정의역 | 치역 | 설명 |
---|---|---|---|---|
covers | A가 B를 다루다 | Article | Organiation | 기사가 단체를 다루다.(특정 사건에 대한 기사가 아닌 권번에 대한 기사) |
Event - Place
영문명 | 한글명 | 정의역 | 치역 | 설명 |
---|---|---|---|---|
occursAt | A가 B에서 발생하다 | Event | Place | 사건이나 이벤트가 특정 장소에서 발생 |
Person - Organizaiton
기생으로 분류된 인물에 한해 소속 권번 정보를 정리했다.
영문명 | 한글명 | 정의역 | 치역 | 설명 |
---|---|---|---|---|
belongsTo | A가 B에 소속되다 | Person | Organization | 기생(person_type:gisaeng)이 특정 권번에 소속되는 관계. 기생 유형 인물에만 적용 |
Organization - Event
단체-사건 관계는 기사에서 권번, 조합, 연맹, 여학교 등의 단체가 신문 기사에서 특정 사건에 참여한 것으로 보도된 경우에 설정했다.
다만 구체적인 개인이 해당 사건에 참여한 것을 확인할 수 있는 경우에는 단체-사건 관계 대신 개인-사건 관계로 처리했다.
영문명 | 한글명 | 정의역 | 치역 | 설명 |
---|---|---|---|---|
donatesIn | A가 B에서 기부하다 | Organization | Event | 권번이나 단체가 자선 기부 활동에 참여하는 관계 |
holds | A가 B를 개최하다 | Organization | Event | 권번이나 단체가 공연 및 연주회를 직접 개최하는 관계 |
participatesIn | A가 B에 참여하다 | Organization | Event | 권번이나 단체가 문화행사 및 대회에 참여하는 관계 |
embezzlesIn | A가 B에서 횡령하다 | Organization | Event | 권번이나 단체 내에서 횡령 사건이 발생하는 관계 |
isInvolvedIn | A가 B에 연루되다 | Organization | Event | 권번이나 단체가 각종 범죄 사건에 연루되는 관계 |
performs | A가 B를 주도하다 | Organization | Event | 권번이나 단체가 헌납식, 행진 등의 정치적 사건이나 모금활동을 주도하거나 조직한 경우 (단순한 공연 활동이 아닌 사회적·정치적 행사의 주체적 참여를 의미) |
isAssociatedWith | A가 B와 연관되다 | Organization | Event | 권번이나 단체가 기타 사건과 일반적으로 연관되는 관계 |
Person - Event
event 유형이 event_type으로 구체적으로 분류되어 있어 개인의 사건 참여 역할에 따라 가해, 피해, 연관의 3개 관계로 단순화하여 구성했다.
영문명 | 한글명 | 정의역 | 치역 | 설명 |
---|---|---|---|---|
victimsIn | A가 B사건에서 피해자이다 | Person | Event | 인물이 자살,살해 등의 사건에서 피해자 역할인 관계 |
perpetratesIn | A가 B사건에서 가해자이다 | Person | Event | 인물이 살인,폭행,횡령 등의 사건에서 가해자 역할인 관계 |
isAssociatedWith | A가 B 사건에 연관되다 | Person | Event | 인물이 사건에 연관되는 관계 (가해 및 피해 관계가 뚜렷하지 않은 모든 관계) |
Person - Person
영문명 | 한글명 | 정의역 | 치역 | 설명 |
---|---|---|---|---|
hasBrotherInLaw | A가 B의 처남이다 | Person | Person | 처남과 매형간의 인척 관계 |
hasDaughter | A가 B를 딸로 두다 | Person | Person | 부모와 딸 간의 직계 가족 관계 |
hasSon | A가 B를 아들로 두다 | Person | Person | 부모와 아들 간의 직계 가족 관계 |
hasAdoptedDaughter | A가 B를 양녀로 두다 | Person | Person | 양부모와 양녀 간의 입양 관계 |
hasBrother | A가 B와 형제/남매관계이다 | Person | Person | 형제 또는 남매 간의 혈연 관계 |
hasLover | A가 B와 애인관계이다 | Person | Person | 연인 관계 |
kills | A가 B를 죽이다 | Person | Person | 살인 가해자와 피해자 간의 관계 |
conflictsWith | A가 B와 갈등하다 | Person | Person | 인물 간 갈등이나 대립 관계 |
hasConcubine | A가 B를 첩으로 두다 | Person | Person | 첩실 관계 |
hasWife | A가 B를 아내로 두다 | Person | Person | 부부 관계 |
hasOwner | A가 B를 주인으로 두다 | Person | Person | 주종 관계 |
hasEmployer | A가 B에게 고용되다 | Person | Person | 고용주와 피고용인 간의 관계 |
hasAccomplice | A가 B와 공범관계이다 | Person | Person | 공범 관계 |
속성(Attribute)
속성명 | 한글명 | 설명 |
---|---|---|
articleId | 기사ID | 개별 기사 노드의 고유식별자 |
class | 클래스 | 개별 노드가 속하는 클래스 분류 |
refurl | 참고 웹 자원 | 개별 기사 정보에 대해 참고할 수 있는 웹 자원 |
newspaper | 발행 신문사 | 기사가 기재된 신문사명 (중앙일보 , 조선일보) |
article_title | 편집 제목 | 기사 발행일-한자 제거한 제목으로 구성된 기사 제목 |
chi_title | 원본 제목 | 당시 신문에 실린 원본 기사 제목 |
date | 발행 날짜 | 기사가 신문에 게재된 실제 일자 (YYYY-MM-DD형식) |
year | 발행 연도 | 기사 발행 연도 |
속성명 | 한글명 | 설명 |
---|---|---|
eventId | 이벤트ID | 개별 사건 노드의 고유 식별자 |
class | 클래스 | 개별 노드가 속하는 클래스 분류 |
eventType | 내용 유형 | AttemptedSuicide(자살미수), Suicide(자살), Disappearance(실종), Addiction(중독), Illness(질병), Fraud(사기), Embezzle(횡령), Gamble(도박), Theft(절도), Murder(살인), Murder_attempt(살인미수), Rape(강간), Assault(폭행), Abduction(납치), Smuggling(밀수), Performance(공연), Contest(경연), Charity(자선), Establish(설립), Patriotic_Contribution(애국기부), Political_Activity(정치활동), Economy(경제), Regulation(규제), Adoption(입양), Conflict(갈등), Criticize(비판), Other(기타) |
event_description | 사건 요약 | 사건의 내용 요약 |
event_date | 사건 발생일 | 사건이 실제 발생한 날짜. 기사 발행일과 구분됨(YYYY. MM. DD 형식) |
year | 사건 발생 연도 | 사건이 발생한 연도 |
속성명 | 한글명 | 설명 |
---|---|---|
personId | 인물ID | 개별 인물 노드의 고유 식별자 |
class | 클래스 | 개별 노드가 속하는 클래스 분류 |
name | 인물명 | 실명 및 기명 |
personType | 인물 유형 | 기생(gisaeng) 또는 비기생(non-gisaeng)으로 구분 |
속성명 | 한글명 | 설명 |
---|---|---|
organizationId | 기관ID | 개별 기관 노드의 고유 식별자 |
class | 클래스 | 개별 노드가 속하는 클래스 분류 |
name | 기관명 | 한성권번,조선권번 등의 구체적 기관명 |
type | 기관유형 | 권번, 조합,연맹,학교 등의 기관 분류 |
속성명 | 한글명 | 설명 |
---|---|---|
placeId | 장소ID | 개별 장소 노드의 고유 식별자 |
name | 장소명 | 사건이 발생한 구체적 장소명. 부민관(공연장), 삼각동(주거지역), 종로(상업지역), 명월관(요정) 등 경성 내 주요 랜드마크 및 지역 |
district | 구역 | 경성 내부 및 외부 지역인지 구분 |
데이터 샘플링
연구 데이터
데이터 전처리 - 제목생성
import pandas as pd import re # 1) CSV 불러오기 df = pd.read_csv('article.csv', encoding='cp949') # 문자열을 datetime으로 변환 df['date'] = pd.to_datetime(df['date'], format='%Y.%m.%d') # 2) 날짜 포맷 변경 (문자열 → datetime → YYYYMMDD 문자열) df['date_ymd'] = pd.to_datetime(df['date']).dt.strftime('%Y%m%d') # 3) 신문사명 축약 (예: '동아일보' → '동아', '조선일보' → '조선' 등) df['source_short'] = df['newspaper'].str.replace('일보', '', regex=True) # 4) 제목에서 한자·영문·특수문자 제거하고 괄호만 남긴 뒤, def clean_title(txt): # 한자(중국어) 제거 no_han = re.sub(r'[\u4e00-\u9fff]+', '', txt) # 괄호·개행·공백 제거 return re.sub(r'[\(\)\s\r\n]+', '', no_han) df['title_clean'] = df['title'].apply(clean_title) def clean_kor_num(text): return re.sub(r'[^가-힣0-9]', '', text) # 적용 df['cleaned'] = df['title_clean'].apply(clean_kor_num) # 5) 새 컬럼 조합 df['new_col'] = df['date_ymd'] + '_' + df['source_short'] + '_' + df['cleaned'] # 결과 확인 print(df[['new_col']].head()) df.to_csv('article_processed.csv', encoding='cp949')
데이터 전처리 - 사건 번호 생성
import pandas as pd # 모든 행, 모든 열 출력 설정 pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None) pd.set_option('display.width', None) # 자동 줄바꿈 방지 pd.set_option('display.max_colwidth', None) # 셀 내용 자르지 않기 def add_index_based_id_column(df: pd.DataFrame, prefix: str, column_name: str = "ID") -> pd.DataFrame: new_id = df.index.to_series().apply(lambda x: f"{prefix}{str(x+1).zfill(3)}") df_with_id = df.copy() df_with_id.insert(0, column_name, new_id) return df_with_id dfs = pd.read_excel("기생.xlsx", sheet_name=None) article_df = dfs['Article'] person_df = dfs['Person'] event_df = dfs['Event'] place_df = dfs['Place'] organization_df = dfs['Organization'] ar_ev_df = dfs['A-E'] # Article - Event ev_pl_df = dfs['E-P'] # Event - Place or_ev_df = dfs['O-E'] # Organization - Event pr_ev_df = dfs['Pr-E'] # Person - Event pr_or_df = dfs['Pr-O'] # Person - Organization pr_pr_df = dfs['Pr-Pr'] # Person - Person ar_or_df = dfs['A-O'] # Article - Organization article_df_new = add_index_based_id_column(article_df, prefix="AR") # 각 노드를 299행까지 자르고 ID 컬럼만 남김 article_df = article_df.iloc[:299] # 0~298번째 행만 남김 article_df = article_df[['articleId', 'article_title']] organization_df = organization_df.iloc[:46][['organizationId', 'name']] person_df = person_df.iloc[:358][['personId', 'name']] event_df = event_df.iloc[:254][['eventId', 'name']] place_df = place_df.iloc[:67][['placeId', 'name']] # 새 ID 컬럼 추가 article_df_new = add_index_based_id_column(article_df, prefix="AR") organization_df_new = add_index_based_id_column(organization_df, prefix="OR") person_df_new = add_index_based_id_column(person_df, prefix="PR") event_df_new = add_index_based_id_column(event_df, prefix="EV") place_df_new = add_index_based_id_column(place_df, prefix="PL") # ID 매핑 통합 딕셔너리 id_mapping = {} # 각 노드의 (old_id_column, dataframe) node_info = [ ('articleId', article_df_new), ('personId', person_df_new), ('eventId', event_df_new), ('placeId', place_df_new), ('organizationId', organization_df_new) ] # 병합 for old_id_col, df in node_info: for old_id, new_id in zip(df[old_id_col], df['ID']): id_mapping[old_id] = new_id # 관계 시트들을 dict로 묶기 relation_dfs = { 'ar_ev': ar_ev_df, 'ev_pl': ev_pl_df, 'or_ev': or_ev_df, 'pr_ev': pr_ev_df, 'pr_or': pr_or_df, 'pr_pr': pr_pr_df, 'ar_or': ar_or_df, } # 새 ID 컬럼 추가 for name, df in relation_dfs.items(): df_reduced = df[['source_id', 'target_id']].copy() df_reduced['new_source_id'] = df_reduced['source_id'].map(id_mapping) df_reduced['new_target_id'] = df_reduced['target_id'].map(id_mapping) relation_dfs[name] = df_reduced # 갱신 import os # 저장 경로 설정 (원하는 경로로 수정 가능) save_dir = "./relation_csvs" os.makedirs(save_dir, exist_ok=True) # 저장 for name, df in relation_dfs.items(): filename = f"{name}.csv" path = os.path.join(save_dir, filename) df.to_csv(path, index=False) # 저장 경로 (앞서 만든 폴더) save_dir = "./relation_csvs" os.makedirs(save_dir, exist_ok=True) # 노드 시트들을 딕셔너리로 구성 node_dfs = { 'article': article_df_new, 'organization': organization_df_new, 'person': person_df_new, 'event': event_df_new, 'place': place_df_new, } # 저장 for name, df in node_dfs.items(): filename = f"{name}.csv" path = os.path.join(save_dir, filename) df.to_csv(path, index=False)
데이터 입력 - load csv & APOC plugin
//1 기사 LOAD CSV WITH HEADERS FROM 'file:///Article.csv' AS row MERGE (:Article {id: row.ID, name: row.article_title, title: row.chi_title, link: row.refurl, newspaper: row.newspaper, date: row.date, year: row.year}); //2 사람 LOAD CSV WITH HEADERS FROM 'file:///Person.csv' AS row MERGE (:Person {id: row.ID, name: row.name, personType: row.personType}); //3 사건 LOAD CSV WITH HEADERS FROM 'file:///Event.csv' AS row MERGE (:Event {id: row.ID, name: row.name, date: row.event_date, year: row.year, eventType:row.eventType, description: row.event_description}); //4 장소 LOAD CSV WITH HEADERS FROM 'file:///Place.csv' AS row MERGE (:Place {id: row.ID, name: row.name, district: row.district}); //5 단체 LOAD CSV WITH HEADERS FROM 'file:///Organization.csv' AS row MERGE (:Organization {id: row.ID, name: row.name, organizationType: row.type}); ————————— // 1) Article → Event CALL apoc.periodic.iterate( "LOAD CSV WITH HEADERS FROM 'file:///A-E.csv' AS row RETURN row", "MATCH (a:Article {id: row.new_source_id}) MATCH (e:Event {id: row.new_target_id}) CALL apoc.create.relationship(a, row.relation, {}, e) YIELD rel RETURN count(rel)", {batchSize:1000, parallel:false} ) YIELD total, batches RETURN total, batches; // 2) Event → Place CALL apoc.periodic.iterate( "LOAD CSV WITH HEADERS FROM 'file:///E-P.csv' AS row RETURN row", "MATCH (e:Event {id: row.new_source_id}) MATCH (p:Place {id: row.new_target_id}) CALL apoc.create.relationship(e, row.relation, {}, p) YIELD rel RETURN count(rel)", {batchSize:1000, parallel:false} ) YIELD total, batches RETURN total, batches; // 3) Person → Event (relation null 건 스킵) CALL apoc.periodic.iterate( "LOAD CSV WITH HEADERS FROM 'file:///Pr-E.csv' AS row WITH row WHERE row.relation IS NOT NULL AND row.relation <> '' RETURN row", "MATCH (p:Person {id: row.new_source_id}) MATCH (e:Event {id: row.new_target_id}) CALL apoc.create.relationship(p, row.relation, {}, e) YIELD rel RETURN count(rel)", {batchSize:1000, parallel:false} ) YIELD total, batches RETURN total, batches; // 4) Person → Organization (relation null 건 스킵) CALL apoc.periodic.iterate( "LOAD CSV WITH HEADERS FROM 'file:///Pr-O.csv' AS row WITH row WHERE row.relation IS NOT NULL AND row.relation <> '' RETURN row", "MATCH (p:Person {id: row.new_source_id}) MATCH (o:Organization {id: row.new_target_id}) CALL apoc.create.relationship(p, row.relation, {}, o) YIELD rel RETURN count(rel)", {batchSize:1000, parallel:false} ) YIELD total, batches RETURN total, batches; // 5) Person → Person (relation null 건 스킵) CALL apoc.periodic.iterate( "LOAD CSV WITH HEADERS FROM 'file:///Pr-Pr.csv' AS row WITH row WHERE row.relation IS NOT NULL AND row.relation <> '' RETURN row", "MATCH (p1:Person {id: row.new_source_id}) MATCH (p2:Person {id: row.new_target_id}) CALL apoc.create.relationship(p1, row.relation, {}, p2) YIELD rel RETURN count(rel)", {batchSize:1000, parallel:false} ) YIELD total, batches RETURN total, batches; // 6) Article → Organization CALL apoc.periodic.iterate( "LOAD CSV WITH HEADERS FROM 'file:///A-O.csv' AS row RETURN row", "MATCH (a:Article {id: row.new_source_id}) MATCH (o:Organization {id: row.new_target_id}) CALL apoc.create.relationship(a, row.relation, {}, o) YIELD rel RETURN count(rel)", {batchSize:1000, parallel:false} ) YIELD total, batches RETURN total, batches; // 7) Organization → Event CALL apoc.periodic.iterate( "LOAD CSV WITH HEADERS FROM 'file:///O-E.csv' AS row RETURN row", "MATCH (o:Organization {id: row.new_source_id}) MATCH (e:Event {id: row.new_target_id}) CALL apoc.create.relationship(o, row.relation, {}, e) YIELD rel RETURN count(rel)", {batchSize:1000, parallel:false} ) YIELD total, batches RETURN total, batches;
노드 데이터(총 1024건)
- Article 299건
- Person 358건
- Event 254건
- Place 67건
- Organization 46건
링크 데이터(총 1175건)
- covers 322건 (286+36)
- occursAt 105건
- belongsTo 204건
- donatesIn 21건
- participatesIn 65건
- holds 16건
- embezzlesIn 1건
- isInvolvedIn 14건
- performs 7건
- isAssociatedWith 162건 (34+128)
- perpetratesIn 72건
- victimsIn 98건
- kills 1건
- conflictsWith 17건
- hasBrotherInLaw 1건
- hasDaughter 11건
- hasAdoptedDaughter 6건
- hasBrother 4건
- hasLover 21건
- hasConcubine 9건
- hasWife 6건
- hasOwner 1건
- hasEmployer 3건
- hasAccomplice 5건
- hasSon 3건
연구 결과
1. 연도별 기사 및 사건 분석
연구 배경
- 1930년대 경성 기생 사회를 분석하기 위해, 우선 해당 시기 기생과 권번이 언급된 기사 및 사건의 연도별 분포를 확인하였다. 이를 통해 어떤 해에 기사가 집중되었는지, 또 특정 사건 유형이 많이 발생했는지를 파악하고자 하였다. 이는 후속 분석에서 시대별 특징을 고려한 해석을 가능하게 하기 위한 기초 작업이다.
분석방법
- 네이버 뉴스 라이브러리에서 1930년 1월부터 1939년 12월까지 수집된 기사(article)와 사건(event) 데이터를 기준으로, 연도별 기사 수와 사건 수를 각각 집계하였다. 또한 사건 유형(eventType)을 기준으로 사건의 성격과 빈도를 분석하였다.
MATCH (a:Article) WHERE a.date IS NOT NULL WITH substring(a.date, 0, 4) AS year RETURN year, count(*) AS article_count ORDER BY year
MATCH (e:Event) WHERE e.date IS NOT NULL WITH substring(e.date, 0, 4) AS year RETURN year, count(*) AS event_count ORDER BY year
MATCH (e:Event) WITH trim(e.eventType) AS eventType RETURN eventType, count(*) AS count ORDER BY count DESC
분석결과
- 연도별 기사 수: 기사 수는 1930년대 초반에는 다소 적었지만, 시간이 지남에 따라 점차 증가하는 양상을 보였다. 특히 1937년에 기사 수가 정점을 찍었고, 1938년에 일시적으로 감소한 후 1939년에 다시 증가하였다.
- 연도별 사건 수: 사건 데이터 역시 기사 수와 유사한 흐름을 보였으며, 1937년에 가장 많은 사건이 발생하였다. 이는 해당 연도에 기생과 관련된 이슈가 집중되었음을 보여준다.
- 사건 유형별 분포: 가장 많이 기록된 사건 유형은 자살미수(AttemptedSuicide)였으며, 그 외에도 절도(Theft), 공연(Performance), 기타(Other), 사기(Fraud) 등이 높은 빈도를 보였다. 이로 미루어 보아, 당시 기생들은 개인적인 고통뿐 아니라 다양한 사회적, 경제적 사건에 직·간접적으로 연루되어 있었음을 알 수 있다.
- 흥미롭게도 1938년에는 기사 수와 사건 수가 모두 전년 대비 감소하는 경향을 보였다. 이는 중일전쟁이 본격화된 직후라는 점에서, 전시 체제 하에서 기생 관련 보도의 비중이 상대적으로 줄어들었기 때문일 가능성을 시사한다. 실제로 본 연구 데이터에서도 1938년 ‘공연’이나 ‘경연’과 같은 문화 활동 유형의 기사가 현저히 줄어든 반면, ‘애국기부’나 ‘정치활동’ 관련 사건은 전년도 수준을 유지하거나 오히려 증가한 것으로 나타났다. 이러한 양상은 당시 기생의 역할과 사회적 시선이 변화했음을 반영하는 단서로 해석될 수 있다.
2. 역사적으로 유의미한 사건 분석
2.1 종로권번 출범과 풍기 단속 (1934-1936)
연구 배경
"섣부른 모던화로부터 조선색이 농후한 기생에로 환원시키려는 경찰과 권번당국의 기도는 기보된 바와 같이 이미 단발금지, 가무수업 등의 구체적 규칙으로..." - 1939.12.10
- 1935년 조선일보 기사에 따르면, 종로권번은 기존 권번들의 통합을 통해 출범하였다. "시내각기생권번을 합동하여 단일권번으로 개조"한다는 내용에서 알 수 있듯이, 이는 단순한 조직 개편이 아닌 일제의 풍기 단속 정책과 밀접한 관련이 있었다. Neo4j 데이터 분석을 통해 이 시기 regulation(규제)과 criticize(권번 관련 비판 내용) eventType에 초점을 맞춰 범죄 및 사회적 질서를 해치는 사건이 집중적으로 발생했는지 확인하고자 한다.
분석방법
MATCH (o:Organization)-[r]->(e:Event) MATCH (a:Article)-[:covers]->(e) WHERE e.eventType IN ['Regulation', 'Criticize'] AND e.year >= "1935" AND e.year <= "1939" RETURN e.eventType, count(DISTINCT e) AS event_count, collect(DISTINCT e.description)[..5] AS example_descriptions ORDER BY event_count DESC
분석결과 "Regulation" 2 ["조선 종로 한성권번 영업규정 변경", "섯부른 모던화 제지하고자 권번당국과 경찰은 단발금지,가무수업등의 규제 실시. 12월 15일부터 조선예복의 유니폼 시행 예정."]
30년부터 34년까지는 ["색가본부권번이 유흥공간이 된 권번의 실태를 폭로함"]과 같은 기사 1건이 있었고, 30년대 중후반기에 규정과 단발 금지, 가무수업 규제 등이 있었던 것으로 확인되었다.
2.2 중일전쟁과 로거우차오 사건의 영향 (1937-1939)
연구 배경
1939년 동아일보 기사 인용: "慶城部隊(경성부대)의 長蛇陣(장사진)... 十數萬(십수만)의 旅行列(기행렬), 京城(경성)의 壯觀(장관) 대경성의 견축 제이일화총(火能(화능))과 환호의 첫날밤의 감격과 흥분은 이날 을마지하야 최고조로 폭발하였다" - AR013 (1939년 기사) "千餘紅裙(천여홍군)의 愛國班(애국반)... 每月(매월) 一日(일일) 收入獻納(일수입헌납)" - AR017 (1939.10.10 기사)
- 1937년 루거우차오 사건[2]을 계기로 중일전쟁[3]이 본격화되면서, 기생 사회에도 전시 체제의 영향이 미쳤을 것으로 예상된다. 특히 위문 활동, 헌금, 애국 기부 등의 활동이 증가했을 가능성이 높다.
Neo4j 분석을 통해 실제로 이 시기 political_activity, charity, patriotic_contribution 관련 사건들이 집중적으로 발생했는지, 다른 유형의 사건들의 발생에 영향을 미쳤는지 확인하고자 한다.
분석방법
// 전체 연도 대상: 전쟁 관련 기생 활동 연도별 개수 MATCH (e:Event)-[r]-(p:Person)-[:belongsTo]->(o:Organization) MATCH (a:Article)-[:covers]->(e) WHERE e.eventType IN ['Political_Activity', 'Charity', 'Patriotic_Contribution', 'Economy'] AND e.year IS NOT NULL RETURN a.name AS article, e.year AS year, count(DISTINCT e) AS activity_count ORDER BY year
분석결과 1937년 7월 7일 루거우차오 사건으로 시작된 중일전쟁은 조선 사회 전반에 전시체제를 강요했고, 기생 사회도 예외가 아니었다. Neo4j 데이터 분석 결과 1938-1939년 시기 eventType 중 politicalActivity(정치 활동)과 Charity (헌금,기부 내용) 유형의 내용을 담은 event의 수가 증가한 것으로 나타났으며, 이는 기생사회 역시 전시체제의 영향으로부터 자유롭지 못함을 보여준다.
event_desscription에 묘사된 사건 내용을 유기적으로 연결해보니 다음과 같았다.전쟁 발발 1년 후인 1938년 7월 5일 기사에서는 사변기념일을 맞아 가무음곡정지 조치가 내려졌다고 보도했다. 루거우차오 사건 1주년을 맞아 시행된 것으로, 기생들의 전통적 예술 활동이 국가적 추모 분위기에 따라 통제받기 시작했음을 보여준다. 반면 1939년에는 기생들의 적극적인 전시 협력 양상이 나타나는데, 10월과 8월 기사들에서는 천여홍군과 삼천번기생들이 애국반을 조직하고 매월 일정 금액을 헌납하는 활동을 보도했다. 이는 전쟁 발발 2년 후 기생들이 공식적인 전시 동원체계에 편입되었으며, 단순한 관리 대상을 넘어 전시 협력의 주체로 재정의되었음을 의미한다. 특히 Neo4j 분석에서 확인된 politicalActivity와 Charity 이벤트의 증가는 기생들의 사회적 활동 영역이 정치적 동원과 자선 활동으로 확장되었음을 시사한다.
더불어 event_type Illness에 속하는 1937년 이후 기사가 2건 출력되었는데 그 내용이 다음과 같았다. AR013(1938.08.27) 기사에서는 "호역예방주사에 홍군당이 불응"이라는 제목으로 콜레라 예방접종에 대한 기생들의 거부 반응을 다뤘고, AR017(1939.12.23) 기사에서는 "천연두 등 질병에 구백홍군이 질색"이라며 천연두 예방접종을 회피하려는 기생들의 모습을 보도했다. 이러한 발견은 1937년 중일전쟁 발발 이후 일제의 전시 보건 체계 구축 과정에서 기생 사회가 어떠한 변화를 겪었는지를 보여준다. 일제는 전시체제 강화와 함께 대규모 예방접종을 통한 공중보건 관리를 확대했으며, 기생들도 이러한 국가 보건 정책의 직접적 대상이 되었다는 점을 제시한다.
결론적으로 1930년대 후반 기생은 기존의 문화적 역할을 벗어나 공중보건 관리의 대상으로 인식되기 시작했으며, 이는 일제의 인구 관리 정책이 사회 전 계층으로 확대되었음을 의미한다. 또한 식민지 보건 정책의 실제 적용 양상을 구체적으로 제시하고, 사회사적으로는 전시 체제하 기생 사회의 일상 변화와 대응 방식을 규명했다는 점에서 의의가 있다.
3. 기생 권번의 문화적 역할 분석
연구 배경
1930년대 권번의 다양한 문화 활동: "京城神社例大祭(경성신사례대제) 餘興(여흥)프로그램을 決定(결정)... 十四日(십사일)법부터 一週間擧行(일주간거행)" "漢城券番(한성권번)... 東京少女歌劇(동경소녀가극)... 同七時(동칠시)부터三十分間(삼십분간) 三曲合奏(삼곡합주)" "전조선명창대회에 경성, 한성, 조선, 한남, 대구, 군산, 원산인천, 평양, 해주, 광주 각 권번 출연"
일제강점기 권번은 기생들의 기예 향상과 공연 활동을 관리하는 문화 기관이었다. 수집된 신문 기사들을 보면 조선권번, 한성권번, 종로권번 등이 다양한 문화 행사에 참여했다. 모리나가 제과 주최 오락의 밤, 전조선명창대회, 각종 연주회, 방송 활동 등에서 권번들이 활발히 활동했다.우리는 릴레이션 holds(event를 주최하다)와 participatesIn(event에 참여하다) 관계를 통해 각 권번이 주최하거나 참여한 문화 행사 패턴에 대해 분석함으로써 문화적 특성을 파악하고자 한다.
분석방법
// 1935–1939년 모든 권번의 performs / holds / participatesIn 이벤트 연도별 집계 WITH ['performs', 'holds', 'participatesIn'] AS target_rels MATCH (o:Organization)-[r]->(e:Event) WHERE type(r) IN target_rels AND e.year >= "1930" AND e.year <= "1939" MATCH (a:Article)-[:covers]->(e) RETURN o.name AS organization, e.year AS year, type(r) AS relation_type, count(DISTINCT e) AS event_count, collect(DISTINCT e.description)[..3] AS example_descriptions ORDER BY organization, year, relation_type
4. 자살 관련 사건의 특이점 분석
연구 배경
- 데이터 수집 과정에서 흥미로운 현상을 발견했다. 자살 사건(Suicide)보다 자살 시도(AttemptedSuicide) 사건이 더 많이 기록되어 있다는 점이다. 이는 당시 자살 수단이나 언론 보도 패턴과 관련이 있을 수 있다. 자살 사건과 자살 시도 사건에 대한 데이터를 Neo4j 분석을 통해 분석하여 공통점이 있는지 확인하고자 한다.
또한, 기생의 자살 이유와 자살 수단에 대해서도 분석해보고자 description노드를 활용하여 이를 확인해보고자 한다.
분석방법
가장 먼저 자살과 자살 시도 빈도를 확인하고자 Event 클래스에서 eventType이 'AttemptedSuicide' 또는 'Suicide'인 데이터를 파이차트로 시각화할 수 있도록 각 항목별 빈도 수(count)를 구하는 Cypher 쿼리를 아래와 같이 작성했다.
MATCH (e:Eventd)
WHERE e.eventType IN ['AttemptedSuicide', 'Suicide']
RETURN e.eventType AS EventType, count(*) AS Count
다음으로 자살 수단과 관련된 표현 칼모친(틴)을 description 노드에서 검색하여 먼저 칼모친이 명시적으로 드러난 자살 사건이 몇 건인지 파악했다.
사용한 Query는 아래와 같다.
Cypher Query 1.
MATCH (e:Event) WHERE e.description CONTAINS '칼모' RETURN e.eventType, e.description, count(*) as frequency'''
다음으로 자살과 관련된
Neo4j 내 Event 클래스에서 eventType 속성이 "Suicide" 또는 "AttemptedSuicide"인 노드를 Cypher 쿼리를 통해 필터링하고, 이들과 연결된 인물(Person), 장소(Place), 기사(Article), 단체(Organization) 노드들 함께 추출하였다.
Cypher Query 2.
MATCH (e:Event)-[r]-(n) WHERE e.eventType IN ['AttemptedSuicide', 'Suicide'] RETURN e, r, n'''
마지막으로 자살 이유를 분석하고자 description 텍스트 데이터를 바탕으로 자살 시도 이유를 키워드 기반으로 분류한 후, 이를 Neo4j로 분석했다.
MATCH (e:Event)
WHERE e.eventType = 'AttemptedSuicide' OR e.eventType = 'Suicide'
WITH e,
CASE WHEN e.description CONTAINS '실연' OR e.description CONTAINS '연애' OR e.description CONTAINS '사랑' THEN '실연/연애 실패' WHEN e.description CONTAINS '가난' OR e.description CONTAINS '빚' OR e.description CONTAINS '생활고' OR e.description CONTAINS '빈곤' THEN '생활고/빚' WHEN e.description CONTAINS '가정불화' OR e.description CONTAINS '가족' OR e.description CONTAINS '어머니' OR e.description CONTAINS '남편' OR e.description CONTAINS '자식' THEN '가정불화/가족 문제' WHEN e.description CONTAINS '기생' OR e.description CONTAINS '권번' OR e.description CONTAINS '팔려' THEN '기생 신분/직업 문제' WHEN e.description CONTAINS '비관' OR e.description CONTAINS '희망' OR e.description CONTAINS '정신' THEN '정신적 문제/희망 상실' ELSE '기타/불명' END AS ReasonCategory
RETURN ReasonCategory, count(*) AS Frequency
ORDER BY Frequency DESC
분석결과
event_description에 '칼모친(칼모틴)'이라는 약물이 자살 시도 수단으로 자주 언급되는 점에 주목하여, 이에 대한 추가 조사를 진행했다.칼모친(Calmotine)은 1930년대 조선에서 흔히 사용되던 진정제의 일종으로, 브롬화칼륨과 모르핀 성분을 포함한 신경 안정제이다. 당시 약국에서 쉽게 구입할 수 있었던 일반의약품이었지만, 과다 복용 시 위험한 부작용을 일으킬 수 있어 자살 수단으로 악용되는 경우가 많았다. 일제강점기 신문 기사에서 칼모친 관련 자살 시도 사건이 빈번하게 보도된 것은 이 약물의 손쉬운 접근성과 당시 사회적 절망감이 결합된 결과로 해석된다. 특히 기생들과 같이 사회적약자로 간주될 수 있는 취약계층에서 극단적 선택의 수단으로 사용 되는 경우가 많았다. 또한, 자살 이유에 대한 분석 결과, 자살 시도 이유는 크게 여섯 가지 범주로 나눌 수 있었다. 가장 많은 비율을 차지한 것은 ‘실연·연애 실패’로, 전체 사건의 약 41.5%에 해당하였다. 이는 사랑의 실패, 연인의 배신, 결혼 반대와 같은 감정적 요인이 자살 시도의 주요 배경이었음을 보여준다. 두 번째로 높은 비율은 ‘생활고·빚’으로, 전체의 약 24.4%를 차지하였다. 이는 경제적 어려움이 당시 기생들의 삶을 깊이 위협하고 있었다는 사실을 드러낸다.
그 외에도 ‘가정불화·가족 문제’(14.6%), ‘기생 신분 및 직업에 대한 비관’(9.8%)도 자살 시도의 중요한 원인으로 나타났으며, ‘정신적 절망·희망 상실’과 원인을 분명히 알 수 없는 기타 사례도 각각 4.9%씩의 비율을 차지하였다. 특히 기생 신분에 대한 자괴감이나 권번의 억압 구조 속에서 느낀 무력감이 자살 시도와 연결된 사례들도 다수 존재하였다. 결론적으로, 이 연구는 1930년대 기생의 자살 사건을 단순한 개인적 비극이 아닌 사회 구조 속에서 재조명하고, 그 안에서 반복적으로 드러나는 감정적, 경제적, 사회적 원인을 시각화하고 설명하는 데 의의를 둔다.
연구 의의 및 제언
1. 연구 의의 및 확장 가능성
본 연구는 1930년대 경성 지역 주요 권번을 중심으로 기생 관련 신문 기사를 구조화하고, 이를 온톨로지 기반 데이터로 구축함으로써, 신문 기사라는 동시대 매체를 통해 상대적으로 주목받지 않았던 ‘기생’과 ‘권번’ 관련 사회적 사건을 분석했다는 점에서 학술적 의의를 지닌다. 특히 ‘권번’이라는 제도적 장치를 중심으로 기생의 활동이 어떻게 조직되고 관리되었는지를 시공간적 Class 및 Relation 구성을 통해 파악하고자 한 시도는 기존 연구와 구별되는 특징이다.
이러한 데이터화는 단순한 정보 수집을 넘어, 1930년대 사회문화적 맥락 속에서 ‘기생’과 ‘권번’이라는 행위자의 상호작용을 바탕으로 보다 구조적인 역사 해석을 가능하게 한다. 또한 사건 중심 온톨로지 방식은 향후 동시대 여성사, 식민지 도시사, 언론 재현 분석 등 다양한 분야로의 확장 가능성을 갖는다.
이에 따라 본 연구를 바탕으로 다음과 같은 확장 제안을 도출할 수 있다.
첫째. 공간 정보 연계 확장: 기생의 거주지, 권번의 위치, 사건 발생지를 기반으로 GIS 및 도시 공간 데이터와 융합하면, 당시 도시 구조 속에서 기생의 이동성과 활동권을 시각적으로 분석할 수 있다. 이를 해당 지역의 경제(화대 지출과 연계), 상권(요리점, 인력거 사업이 부흥했을 것), 치안 및 거주 양식(기생이 몰려 사는 동네의 경우 일반 동네와의 차이가 발생하는지)등과 연계한다면 당시 시대를 이해할 수 있는 흥미로운 데이터가 될 가능성을 연구 과정에서 발견했다.
데이터시트 AR173, AR174, AR175에 해당하는 기사 "鐘路券番(종로권번)"撤去(철거)를 淸進洞民(청진동민)이陳情(진정)들을 확인하면, 당시 기생과 권번이 사회적으로 미치는 영향 내지는 사회적 인식이 어땠는지 분석할 수 있는 충분한 요지가 있다는 것을 확인할 수 있다.
둘째. 경제사적 해석의 가능성: 기화류비’, ‘고객 소비’, ‘기생 수입’ 등의 기사 표현을 분석하면, 기생의 경제적 역할과 자본주의 도시 구조 내 위치를 보다 실질적으로 해석할 수 있다.
본 연구 데이터시트에서 'Economy'로 분류한 eventType의 기사 중 일부를 확인하면 AR030-19330216_조선_돈가난은여긔에도, AR212-19390216_조선_구세말경기폭발백화점요리점할것업시작년보다월등히은성 => 경제공황이 오자 영화관과 경성의 유흥계가 직접 타격받았다는 기사와(AR030) 또한 경제가 좋자 백화점과 종로권번이 호황이었다는 기사(AR212)를 확인하면 기생의 수입 총액과 경제상황의 변동은 매우 밀접하게 움직이는 것을 알 수 있다.
AR235-19380120_조선_불황을단연타도흥행계독점천하 AR242-19330407_동아_일년간의기생수입백십삼만오천여원 AR275-19310123_조선_홍등녹주에소비된 등에서도 전쟁 영향으로 인한 기생 수입 감소, 일본인들이 조선 기생에 소비한 유흥비 등을 알 수 있어 이를 바탕으로 확장해 조사한다면 당시 경제사의 해석을 가능케하는 또 다른 지표로서 기생이 작용할 수 있는 가능성을 확인했다. 때문에 감히 '빅맥지수'와 유사하게 과거 우리나라의 고유한 경제 지표로 '기생지수'또는 '화대지수'를 제안해볼 수 있을 것 같다.
셋째. 개별 인물 중심 분석으로의 확장: 현재는 권번 중심으로 기생을 분석하였으나, 추후에는 전국 단위로 개별 기생의 생애, 활동 이력, 관계망 중심 온톨로지를 구성함으로써 기생의 삶과 문화를 더 입체적으로 탐색할 수 있다.
본 연구 데이터시트 중 AR204-19370625_조선_서울에도기생학교 => 기생을 양성하는 기생학교의 설립. 서울 뿐 아니라 전국적으로 존재했던 것으로 보이며, 특히 항구와 밀접한 지역에는 이러한 문화가 더 발전했을 것으로 보인다. AR083-19370103_조선_삼칠년식유행계 => 기생이 대중문화를 이끄는, 선도자의 역할을 했음을 알 수 있다. 하이힐, 파마넨트(파마) 등이 등장한 다수 기사로 이를 확인할 수 있다. AR084-19370131_조선_명녀신일선기계에진출 => 유명 배우가 기생영업허가원을 제출해 허가받는거나, 문화적으로 큰 영향을 끼쳤던 여성이 기생의 길을 가기도 하는 등 기생의 사회적·문화적 위상을 입증하는 자료들이 확인된다.
넷째. 다양한 매체를 모두 활용한 확장 연구: 본 연구는 신문 자료에 국한되었기 때문에 기생 외 주변 인물의 역할이나 사건의 맥락 파악에 한계가 있었다. 특히 문화·예술·광고와 관련된 내용은 신문 외 매체에서 더 풍부하게 확인될 가능성이 크다. 또한 이번 조사에서는 조선일보와 동아일보 중심으로 분석하였기에, 매체 다양성 측면에서 아쉬움이 남는다. 향후에는 잡지, 방송 원고, 공문서 등 다양한 자료와 결합해 보다 다각적인 확장이 가능할 것이다.
이와 같이 본 연구는 단순한 기생 연구에 머무르지 않고, 기생을 통해 도시 사회의 구조를 데이터 기반으로 분석하고 재구성하는 실천적 모델로 기능할 수 있다
2. 연구한계 및 제언
첫째, 기생 개개인의 연령, 거주지, 생애 정보가 기사에 구체적으로 명시되지 않거나 단편적으로만 나타나는 경우가 많아, 생활 환경이나 생애사를 심층적으로 파악하는 데 어려움이 있었다. 특히 거주지 정보는 외부 공간 데이터와 결합 시 유의미한 해석이 가능하지만, 본 연구에서는 시간과 인적 자원의 한계로 인해 사건 발생지를 중심으로 공간 분석을 제한하였다.
둘째, 기생이 연루된 사건이라 해도, 사건을 유발하거나 매개한 인물에 대한 정보가 부족하여 맥락 파악에 한계가 있었다. 신문 기사의 성격상 결과 중심 보도가 주를 이루면서, 기생 외 제3자의 역할이나 사건의 배경·경과가 충분히 드러나지 않는 경우가 많았다.
셋째, 기사 내에 동일한 이름의 인물이 반복 등장하였으나, 생년·활동 시기·권번 소속 등 구체적 정보가 부족하여 동일 인물 여부를 명확히 구분하기 어려웠다. 그 결과, 일일이 기사 내용을 비교하여 최대한 오류 가능성을 줄였음에도 하나의 인물이 다수 노드로 분리되거나 반대로 서로 다른 인물이 하나의 노드로 통합될 수 있는 가능성이 존재한다.
이에 따라 향후 연구에서는 다음과 같은 보완이 요구된다. 먼저, 기생의 거주지나 생애 정보를 외부 자료와 연계해 생활공간 기반 분석을 시도해야 한다. 또한 기사 내 경제 관련 서술(화류비, 경기 영향 등)을 구조화하여 기생의 경제적 기능을 탐색하는 연구로 확장할 수 있으며, 권번·사건 중심 구조에서 벗어나 개별 인물 중심 온톨로지로의 전환도 필요하다. 마지막으로, 주요 권번에 국한하지 않고 기사에 등장하는 전체 기생을 포괄적으로 수집·정리함으로써, 전체 네트워크 구조와 사건 분포를 총체적으로 분석하는 접근이 요구된다.
주석
- ↑ 위키백과, "권번" https://ko.wikipedia.org/wiki/권번
- ↑ 네이버 지식백과, "루거우차오 사건" https://terms.naver.com/entry.naver?docId=1088822&cid=40942&categoryId=31787
- ↑ 위키피디아, "중일 전쟁" https://ko.wikipedia.org/wiki/중일_전쟁
연구 후기
CHS25KU | 🐰 | 먼저 함께 고생해주신 조원분들께 정말 압도적인 감사를 드립니다. 제 능력의 부족함을 정말 많이 느꼈습니다. 부족한 조장이었음에도 군말 없이 따라와주시고, 활동해주셔서 감사합니다. 솔직하게 정말 너무 힘들고 어려운 교양이었습니다. 초반부터 연구 목적을 어떻게 구체화해야할지 수없이 고민했고 마지막까지 쿼리를 어떻게 짜야 수많은 데이터를 최대한 활용할 수 있을지 고민했기 때문에 출발부터 마무리까지 매 순간 전 속력으로 달리는 기분이었습니다. 그럼에도 거짓 없이 팀원분들이 있었기에 마지막까지 달릴 수 있었던 것 같습니다. 연구하다보니 점점 주제에 애정이 생겨 과정에서 과한 욕심을 부린 것 같은데, 이 때문에 결과가 조금 아쉽게 나왔지만 그럼에도 정말 많은 것을 배웠습니다. 데이터로부터 얼마나 많은 정보와 릴레이션을 뽑아낼 수 있는지, 명확한 기준을 바탕으로 데이터를 모으는게 얼마나 중요한지, 우리가 접하는 데이터가 얼마나 쉽게 오류에 노출될 수 있고, 또 얼마나 많은 검수와 노력의 과정 속에 만들어질 수 있던건지 몸소 깨달을 수 있었습니다. 다들 고생하셨습니다. |
NJW25KU | 🐯 | 먼저 누구보다 열심히 해주신 우리 조장님과 조원분들께 감사하다는 말씀을 드리고 싶습니다. 시행착오가 너무 많았어서 이게 진짜 될까 싶었는데 제대로 갈피를 잡고 나서는 조원분들 모두 하나의 몸으로 움직인 것 같습니다. 1930년대 경성 기생과 권번이라는 주제를 중심으로 신문 기사를 수집, 분석하여 온톨로지 기반의 데이터를 구축하는 작업을 하면서 많은 생각이 들었습니다. 단순한 키워드 검색만으로는 충분하지 않아 기사를 선별하여 정제하는 과정이 솔직히 많이 힘들었지만 또 보람찼습니다. 또한 Neo4j를 활용한 온톨로지 구조화는 처음 접해보는 방식이라 초반에는 낯설었지만, 점차 데이터가 유기적으로 연결되는 것을 시각적으로 확인하며 데이터 기반의 인문학 연구가 갖는 가능성을 실감할 수 있었습니다. 비록 모든 기사를 포관적으로 다루지는 못했고, 데이터 구축에도 시간적, 기술적 한계가 있었지만, 데이터 인문학적 접근을 실제로 경험해봤다는 것이 저에게 큰 의미로 다가왔습니다. 연구를 마무리하면서, 데이터로 과거를 읽는 일은 결코 기계적인 작업이 아니며, 그 안에 숨어있는 사회적 맥락과 인간의 이야기를 놓치지 않는 통찰이 중요하다는 것을 다시금 깨닫게 한 강의였습니다. 모두 정말 고생하셨습니다. |
JSB25KU | 🐣 | 연구 후기를 작성해 주세요 |
LJA25KU | 👍🏻 | 클루평에서 데이터 처리에 대해 다루는 보통의 수업과 달리 처리하기 위한 데이터를 직접 만들어 볼 수 있다는 평을 보고 해당 수업을 수강하게 되었습니다. 쉽지 않을 거라는 예상은 했는데 그래도 팀원분들과 연구 주제의식에 부합한 데이터 범위를 설정하고 처리하며 보람찬 한 학기를 보낼 수 있었던 것 같습니다. 마찬가지로 우리가 인터넷에서 쉽게 가져다 쓰는 데이터들이 매우 많은 사람들의 검수와 노력을 통해 도출된 결과물임을 알게 되었습니다. 기생하조 6조 팀원분들 모두 수고하셨습니다! |
CKH25KU | 🐹 | 작업량이 참 많았습니다. 사이퍼/쿼리도 데이터베이스도, 위키문법도 처음 다루어보는 것들이었는데, 이때까지는 그냥 새로운 것을 처음 접해보는 느낌이었습니다. 하지만 과제가 본격적으로 시작되니 생각보다 방대한 미가공 데이터의 양과... 연구주제도 참 거대한 느낌이어서... 정말 이게 되나? 싶은 마음이 들었지만 조원분들과 계속해서 같이 작업을 차근차근 해가다보니 정말 마지막에는 '뭔가'가 완성되는 느낌이어서, 정말 새로운 경험을 완성했습니다. 처음에 수강평에서 과제는 많지만 배우는 것도 많고 새롭게 경험해볼 것도 많다는 말을 보고 어떤 형태로 그것이 이루어지는지 궁금했는데, 지금 다시 돌아보니 뿌듯하기도 하고 개운하기도 합니다. 조원 분들께서 많이 노력해주셔서 부족한 실력에도 잘 따라갈 수 있었습니다. 다들 고생하셨습니다! |
코멘트
경성헤르조
KYC25KU | 🐰 | 저희도 많은 자료들을 모아야했고 그 과정에서 정말 고생을 많이 했기 때문에 기생하조의 고생이 발표 중 많이 느껴졌습니다. 권번이라는 존재 자체를 이전까지는 알지 못했었는데, 이번 발표를 통해 이런 집단도 있다는 것을 알게되었습니다. 정말 수고하셨습니다! |
PSE25KU | 🐯 | 우선 저희 조처럼 방대한 양의 데이터를 편찬하느라 많은 시간과 노력을 투자하셨을 여러분들께 박수를 보내고 싶습니다. 저는 기생하조의 연구를 통해 권번이라는 용어도 처음으로 알게 되었고 그동안 저 스스로 소외시켰던 과거의 직업이었던 기생이 사회적으로 어떤 역할을 수행했는지 들여다볼 수 있어 기생하조의 연구가 유의미하게 다가왔습니다. 제가 기생하조의 연구에서 가장 인상적이었던 부분은 Relation이 매우 다양하다는 것이었습니다. 저희 팀은 Node 수가 Relation 수보다 더 많은 상태로 연구를 마무리 짓게 되어 관계가 설정되지 못한 Node가 있다는 것이 개인적으로 아쉬웠습니다. 그러나 기생하조는 다양한 Relation을 설정함으로써 저희 조와 달리 방대한 Node가 모두 연결점을 가지도록 나타내신 것 같아 이 점이 감명 깊었습니다. 기생하조는 좋은 주제를 선정한 만큼 추후 연구 결과 도출에 힘쓰면 더욱 풍부한 연구 자료로 활용될 수 있을 것이라 생각됩니다. 한 학기 동안 수고 많으셨습니다 :) |
KTE25KU | 🐣 | 많은 양의 데이터를 체계적으로 정리하고 분석하신 게 너무 잘 느껴져서 고생하셨다는 말씀을 먼저 전합니다.다만 마지막에 최종적으로 결과를 도출하는데 있어서 제 기억이 맞다면 발표하시면서 Neo4j 활용이 불가했다고 하셨던 것 같은데 열심히 편찬한 자료들이 시각화되지 않았다는 점이 아쉬웠습니다. 기생과 관련해서 기생들의 죽음, 기생들이 자살을 할 때 사용한 약물 등 신문 기사에서 추출한 소재를 확장하면서 이를 가치 있는 자료로 편찬하시는 과정이 느껴져서 저도 발표에 몰입할 수 있었고 중일 전쟁이라는 역사적인 사건과 연관시켜서 기생은 어떤 입장을 취했는지 설명해주시는 부분에서 인상깊었습니다. 코멘트 작성을 위해 다시 연구 자료들을 살펴보았는데 온톨로지를 보고 정말 깜짝 놀랐습니다. 굉장히 복잡하게 클래스간 relation이 작성되어 있는 것을 보고 저희도 연구를 하며 느낀 경험 상 솔직히 요소 간의 관계성이 확실하게 드러난 자료들이 많이 없는데 이에 대해 많이 고민하고 또 정제하여 확실하게 시각화해주셨다는 게 대단하게 느껴졌습니다. 발표 잘 들었습니다. 수고하셨습니다. |
KHR25KU | 👍🏻 | 기생이라는 주제 자체도 정말 흥미로웠지만, 방대한 자료들을 체계적으로 분석하기 위해 여러 기준을 잡고, 또 여러 관계어를 설정하신 모습을 보며 조원분들이 연구에 쏟으신 정성이 보였습니다. 연구를 통해 기생을 더욱 입체적으로 바라볼 수 있었고 후속연구 또한 나중에 진행된다면 더 많은 의미를 도출해낼 수 있을 것 같아 기대가 됩니다. 다들 한학기동안 수고많으셨습니다! |
LYJ25KU | 🐹 | 자살 관련 사건의 특이점 분석에서 신경 안정제를 악용했다는 지점까지 조사한 자료 내에서 발견할 수 있었다는점이 흥미롭습니다. 데이터 규모면에서도 많은 노력을 하셨을 것 같습니다. |
아파트사조
PSH25KU | 🐰 | 처음에 팀 구성할 때부터 권번이라는 주제가 정말 흥미롭게 느껴졌었습니다. 권번 얘기를 들었을 때, 아, 왜 나는 1930년대에도 기생이 있었을 거라는 생각을 못했을까? 라는 생각이 들었습니다. 그래서 발표가 가장 기대됐던 조였습니다. 일단 정말 많은 노드들과 릴레이션들을 보니 너무 놀랍더라구요. 아무래도 권번에 대해 정제된 자료가 많이 없을 텐데, 그 많은 자료들을 하나하나 정리하셨다는 것이 정말 대단하신 것 같습니다. 연구 의의와 확장 가능성을 보면서 팀원분들께서 정말 애정을 가지고 이 주제를 다루셨겠구나 하는 생각이 들었습니다. 정말 정말 고생 많으셨습니다!! |
KMC25KU | 🐯 | 기생과 권번이라는 소재가 정말 참신하고 다양한 사회문화적 현상과 연결될 수 있는 의미있는 주제라고 느꼈습니다. 그리고 관계어, 특히 person-person 관계를 매우 세세하게 나눈 것이 인상깊었습니다. 다만 그만큼 활용할 수 있는 연결지점이 많은 요소인데 인물 속성에서는 기생/논기생 으로만 나누어서 조금 아쉽기도 했습니다. 흥미로운 연구와 발표 재밌게 잘 들었고 정말 수고 많으셨습니다. |
KZO25KU | 🐣 | 기생, 권번을 둘러싼 데이터를 통해 깊은 연구를 가능하게 기반을 잘 만드신 것 같다고 느꼈습니다! Organization - Event 관계와 Person - Person 관계를 자세하게 여러 관계어로 엮었다는 점에서 이후 연구가 더 지속되면 어떤 결과물이 나올지 기대됩니다. |
LMC25KU | 👍🏻 | 기생이라는 존재 자체가 당시 경성의 문화 한 편을 대표한다는 생각이 들어 정말 흥미로웠습니다. 특히 인물사이의 릴레이션을 구체적으로 설정해 양적연구보다는 질적연구를 보는 기분이 들었습니다. 자료가 좀만 더 많았다면 어땠을까 하는 아쉬움이 들기도 했지만 수고 많으셨습니다. |
JTR25KU | 🐹 | 해당 조의 연구를 통해 처음 알게된 사실 너무나도 많습니다. 그 당시에 기생이 존재했다는 사실조차 생각하지 못했는데 이러한 주제로 이렇게나 체계화된 양질의 데이터를 편찬한 연구에 감탄했습니다. |
산책하조
2SJ25KU | 🐰 | 그 당시 기생과 관련된 내용들을 알 수 있어서 좋았습니다. 권번이라는 것도 이 발표를 들으며 처음 알게 되었는데 주제가 참신하고 인상깊었습니다. 수고하셨습니다! |
BJS25KU | 🐯 | 저희 조랑 비슷하게 자살에 관련된 주제를 다루셔서 인상깊게 들었습니다. 칼모틴이라는 약물을 사용한 자살 방법은 공원에서의 자살 사건을 조사할 때에는 보지 못한 경우여서 질문드렸더니 이와 관련하여 당시 흔하게 사용되고는 한 수면제였다는 점에서 이와 비슷하게 당시의 약물오남용 사건들을 다뤄도 흥미로운 연구가 될 것 같다는 생각이 들었습니다. 화대를 기준으로 당시의 경제 상황을 살펴볼 수 있을 것 같다는 관점 역시도 굉장히 인상깊어서 재밌게 들었습니다. 고생 많으셨어요!! |
SJH25KU | 🐣 | 주제가 정말 흥미로웠어요!! |
KNY25KU | 🐸 | 연구 목적부터 대상, 방법까지 설계가 가장 탄탄하다고 느껴진 연구입니다. 사실 틈틈이 다른 조들의 연구 준비 페이지를 계속 봤는데 (ㅎㅎ) 그때마다 정말 구조화가 잘 되어 있다고 생각했습니다. 아무래도 인물 간 relation들을 활용하지 못하셔서 연구 결과의 내용이 부족하고 아쉽다고 느껴지는데, 이 부분은 장소 class를 이용해서 유형 별 사건이 어떤 장소에서 가장 많이 일어났는지, 기생들이 어떤 장소에 가장 많이 방문했는지 등으로 채웠다면 좋았을 것 같습니다. 하지만 그 많은 relation들을 구분하고 데이터시트에 정리하는 과정도 얼마나 힘든 일인가를 알기에 이 점은 정말 대단하시다고 생각하고 있습니다 🥹👍 저희 조 연구에서 조사한 데이터 중에 한 기생이 자살을 여러 번 시도했다는 내용의 기사가 있었는데, 이를 떠올리며 발표를 더 재밌게 들었던 것 같습니다. 재밌는 주제로 좋은 연구 진행해주셔서 감사드리고, 정말 수고 많으셨습니다!! |
LWG25KU | 🐹 | 지금은 다소 생소하게 느껴질 수 있는 기생이라는 주제가 시선을 끌었고, 그래서 더욱 흥미롭게 느껴졌습니다. 특히 기생과 관련된 사건 중 자살 사례가 많았는데, 저희 조 조사에서도 자살 관련 사건이 많이 나타나 현재뿐만 아니라 당시에도 자살이 중요한 사회 문제였던 것은 아닐까 하는 생각이 들었습니다. |
과제그만조
JMJ25KU | 😛 | 사실 개인적으로 학기 초에 연구계획서에서 추구하려 했던 방향이 '1930년대 경성 디스패치'였는데, 기생하조의 연구 목적에 비슷한 느낌이 조금 들어서 흥미롭게 읽었습니다. 분석 결과를 아름답게 정리해놓으셔서 읽기 너무 편했습니다. 파이썬으로 전처리하신 점이나 사회적인 맥락으로 해석을 다채롭게 만드신 것만 봐도 얼마나 수고하셨는지 알 것 같습니다. 한 학기 동안 고생하셨습니다! |
KJY25KU | 🍻 | 해당 팀 연구에 대한 코멘트를 작성해 주세요 |
LSJ25KU | 😺 | 당시 자료가 얼마 없어 기생 개개인들에 대한 기사를 찾기 어려울 것이라고 생각했는데, 이렇게 많은 노드를 통해 구현하신 것을 보면 조원분들께서 정말 많이 고생하신 것 같습니다. 당시 기생이 자살 미수, 사기, 절도와 같은 부정적인 사건들에 상당히 많이 연루되어 있다는 점도 새롭게 다가왔습니다. 정말 고생 많으셨습니다!! |
JYJ25KU | 😄 | 흔하지 않은 주제선정이였고 결과 역시 흥미로웠습니다! 수고하셨습니다! |
CNH25KU | 🦖 | 1930년대 권번 소속 기생이라는 주제는 색다르게 다가왔습니다. 기생에 대한 사회적 인식이 부정적이고 조심스러운 면이 많아 그동안 잘 알려고 하지 않았는데, 이번 발표를 통해 접해볼 수 있어 좋은 경험이었습니다. 발표 준비하시느라 수고 많으셨습니다. |
참고 자료
(참고 자료 및 주석은 출처 표기 규칙 페이지를 참고할 것!)
주석