정보 추출(Information Extraction, IE)의 목표는 비정형 또는 반정형 문서로부터 구조화된 표현을 도출하는 것이다. 하지만 IE 모델을 개발하는 과정은 여러 하위 과제를 통합해야 하기 때문에 복잡하다. 또한, 다양한 과제 간의 데이터 표현 차이와, 데이터셋을 과제별 모델 입력 형식으로 변환해야 하는 문제 역시 난관으로 작용한다.
이러한 문제를 해결하기 위해 우리는 PyTorch-IE를 제안한다. 이는 딥러닝 기반의 프레임워크로, 빠르고 재현 가능하며 재사용 가능한 IE 모델 개발을 지원하도록 설계되었다. PyTorch-IE는 **다양한 데이터 타입(예: 일반 텍스트, 반정형 텍스트, 이미지)**에서 얻은 상호 의존적인 주석(annotation) 계층을 통합하여 복잡한 데이터 구조를 생성할 수 있는 유연한 데이터 모델을 제공한다.
또한, PyTorch-IE는 데이터 표현과 모델별 입력 표현을 분리할 수 있는 태스크 모듈(Task Module) 개념을 도입하여 코드의 유연성과 재사용성을 높인다. 학습에는 PyTorch-Lightning을, 데이터셋 로딩에는 HuggingFace Datasets를, 실험 설정에는 Hydra를 활용할 수 있으며, 새로운 프로젝트를 손쉽게 시작할 수 있도록 보조 라이브러리와 GitHub 템플릿도 제공한다.
이처럼 PyTorch-IE는 기능성과 확장성을 모두 갖춘 도구로, 정보 추출 연구 커뮤니티의 연구 개발을 강력하게 지원한다.
그림 1: 정보 추출에서는 구조화된 데이터 표현을 여러 주석 계층(annotation layer)으로 구성된 데이터 스키마(schema)를 통해 조직한다. 상위 계층의 주석은 하위 계층 주석을 연결하지만, 데이터의 구조적 표현 방식은 과제별 모델의 입력 형식과 다르기 때문에, 데이터 스키마와 모델 입출력 간의 변환 과정이 필요하다(§3 참고).
정보 추출(IE)은 비정형 또는 반정형 문서에서 구조화된 표현을 추출하는 다양한 과제를 포괄한다. 복합적이고 고차원적인 표현을 구성하기 위해 IE 접근법은 흔히 여러 하위 과제를 결합한다. 예를 들어, 개체명 인식(NER), 개체 연결(EL), 관계 추출(RE) 등을 결합하여 지식베이스 구축(Knowledge Base Population) 작업을 수행한다 (Dong et al., 2014; Thomas et al., 2017; 등).
이때 추출된 정보는 일반적으로 데이터 스키마(data schema) 형태로 표현되며, 이는 과제별 주석(annotations)의 상호 의존적 계층을 구조화한다. 예를 들어, 엔터티의 토큰 또는 스팬 수준 레이블, 품사 태그, 의존 구문 분석, 사건(event) 추출 등의 주석 계층이 여기에 해당한다 (Thomas et al., 2017; Schön et al., 2018; Du et al., 2021 등). 그림 1은 엔터티, 관계, 사건 관계 주석을 포함한 예시를 보여준다.
최근의 IE 접근법은 PyTorch(Paszke et al., 2019), HuggingFace Transformers(Wolf et al., 2020) 같은 인기 있는 라이브러리, 그리고 HuggingFace Hub 등의 플랫폼을 활용하여 모델 학습, 평가, 공유를 수행한다. 그러나 이러한 도구들은 일반적인 딥러닝(예: PyTorch) 또는 트랜스포머 기반 모델(HuggingFace)에 초점이 맞춰져 있어, 복합적이고 파이프라인형 IE 작업이나 데이터 스키마 기반 정보 공유를 위한 지원은 부족하다.
그 결과, 많은 IE 구현은 각자 고유한 데이터 스키마를 정의하고, 데이터셋 로딩 및 모델 입력 변환 과정을 새로 구현해야 하는 비효율이 발생한다.
이에 우리는 PyTorch-IE를 소개한다. 이는 딥러닝 기반 IE 접근법의 빠른 개발을 지원하는 파이썬 프레임워크이다. PyTorch-IE는 §2의 설계 목표를 따르며, 재현 가능하고, 재사용 가능하며, 확장 가능한 IE 접근법 개발을 크게 단순화한다.
이 프레임워크는 기존 머신러닝 라이브러리를 보완하며, IE 중심의 복잡한 데이터 구조를 표현할 수 있는 **유연한 데이터 모델(data model)**을 제공한다. 이 데이터 모델은 특정 IE 하위 과제나 모델 아키텍처에 한정되지 않는다.
또한 PyTorch-IE는 태스크 모듈(Task Module) 개념을 도입한다. 이는 데이터 스키마와 모델 입력·출력 간의 변환을 담당하며, 데이터 표현과 모델 표현을 분리(decouple)하여 데이터 준비 및 모델 코드의 재사용성을 높인다 (§3 참고).
우리는 §4에서 이러한 개념이 어떻게 재사용 가능한 모듈로 구현되는지를 간단한 사례를 통해 보여준다.
그림 2: PyTorch-IE의 아키텍처 개요. 핵심은 태스크 모듈(Task Module)로, 문서를 모델 입력 및 학습 타깃으로 변환(encode)하고, 모델 출력을 새로운 주석 형태로 통합(decode)한다. 문서는 사용자가 정의한 타입 기반 데이터 스키마를 따른다. 이는 데이터셋 통합, 예측 품질 분석, 문서 기반 통계 측정, 데모 애플리케이션 제작을 쉽게 한다. 모델은 PyTorch-Lightning 모듈 형태로 정의된다.
PyTorch-IE는 단순한 텍스트뿐 아니라, 반정형 텍스트(HTML 등), 2차원 텍스트(OCR 이미지 등), 이미지 기반 정보 추출도 지원한다. 비핵심 기능은 안정적인 외부 라이브러리를 활용하며, 학습과 로깅에는 PyTorch-Lightning, 데이터셋 로딩에는 HuggingFace Datasets, 실험 설정에는 Hydra를 사용한다.
PyTorch-IE에서 개발된 모델은 HuggingFace Model Hub를 통해 손쉽게 공유할 수 있으며, HuggingFace Spaces, Gradio, Streamlit 기반의 데모도 빠르게 제작할 수 있다.
또한 PyTorch-IE 생태계는 기존 모델, 태스크 모듈, 평가 지표(metrics), 데이터셋 빌더 등을 포함한 추가 라이브러리로 구성되어 있으며, Lightning-Hydra-Template을 기반으로 한 GitHub 템플릿을 제공하여 새로운 프로젝트를 빠르게 시작할 수 있도록 지원한다 (§5 참고).
이 절에서는 프레임워크의 설계를 뒷받침하는 핵심 목표들을 제시한다.
우리 프로젝트는 연구 중심의 사고방식에 기반을 두고 있다. 목표는 시간이 지나도 동일한 학습 과정을 다시 실행하여 같은 결과를 재현할 수 있도록 하는 것이다. 즉, 수년 후에도 같은 설정으로 학습을 재현(reproduce)할 수 있어야 한다.
우리는 **매번 새로운 연구 아이디어마다 ‘바퀴를 다시 발명하지 않기’**를 지향한다. 즉, 이미 검증된 모듈을 활용하여 새로운 연구에 곧바로 적용할 수 있도록 한다. 이를 통해 단순히 실험 결과와 통찰을 공유하는 것을 넘어, 다른 연구자들이 손쉽게 기존 작업을 재활용할 수 있는 생태계를 제공한다.
우리의 목표는 기존 접근법을 쉽게 재현할 수 있도록 지원함과 동시에, 새로운 아이디어를 효율적으로 구현할 수 있는 간결한 프로세스를 제공하는 것이다. 즉, PyTorch-IE는 기존 연구의 재현성과 새로운 연구의 확장성을 모두 포괄한다.
우리는 이미 잘 알려진 프레임워크(PyTorch, Lightning, HuggingFace 등)를 기반으로 구축하며, 기존 도구들이 충분히 다루지 못한 IE 연구의 공백 영역을 보완하는 데 초점을 맞춘다.
PyTorch-IE는 재현성과 재사용성에 중점을 두고 설계되었다. 프레임워크 구조는 모델 코드와 데이터 전처리 코드를 명확히 분리하여, 모델 구현과 복잡한 데이터 처리 과정을 독립적으로 개발할 수 있도록 한다.
IE 데이터는 본질적으로 복잡한 의미 구조를 가진다. 예를 들어, “특정 엔터티 스팬 위에 정의된 사건(event)”처럼, 다양한 속성과 관계가 얽혀 있는 경우가 많다. 따라서 PyTorch-IE는 이러한 복잡성을 다룰 수 있는 **유연한 데이터 모델(flexible data model)**을 중심으로 설계되었다. 이 모델은 다양한 주석 계층(annotation layer)을 가진 데이터 구조를 표현할 수 있다.
그림 2는 PyTorch-IE의 전체 아키텍처와 데이터 흐름을 보여준다. 핵심적으로, 데이터는 타입이 명시된 문서(document) 형태로 표현되며, 이 문서는 기본 데이터(base data)와 의미적 주석(semantic annotation)을 함께 저장한다 (§3.1).
태스크 모듈(Task Module) (§3.2)은 문서를 태스크별 모델 입력으로 인코딩하고, 모델의 출력을 다시 주석 형태로 디코딩한다. 또한 PyTorch-IE는 평가 지표(metrics) (§3.4)를 쉽게 정의하여 모델 성능을 측정하거나 데이터셋 통계를 수집할 수 있도록 한다. 마지막으로, 사용 편의 기능(usability features) (§3.5)도 내장되어 있다.
즉, PyTorch-IE의 주요 구성요소들이 서로 어떻게 연결되어 작동하는지 그림 2에서 전체적으로 확인할 수 있다.
PyTorch-IE는 단순하면서도 유연한 데이터 스키마(data schema) 를 제공한다. 그 핵심 개념은 문서(document) 타입으로, 이는 각 데이터 포인트의 기본 데이터와 여기에 부착될 수 있는 주석(annotation) 구조를 정의한다.
이 스키마는 정적 타입(static typing) 기반으로 구조적 복잡성을 효율적으로 관리할 수 있게 설계되어 있다. 이를 통해 타입 검사 단계에서 구조적 오류를 조기에 발견할 수 있으며, 디버깅 비용을 줄인다.
하나의 문서는 하나 이상의 기본 데이터 필드(예: 텍스트, 이미지)를 포함할 수 있다. 그리고 주석들은 주석 계층(annotation layers) 으로 구성되어 있으며, 각 계층은 특정 데이터 필드나 다른 주석 계층을 참조(reference)할 수 있다. 이러한 계층 구조는 비순환(non-cyclic) 주석 그래프(annotation graph) 형태로 표현될 수 있다.
주석 계층은 자신의 참조 관계를 명시적으로 선언한다. 이러한 설정은 두 가지 목적을 가진다:
- 문서의 올바른 (역)직렬화(de-/serialization) 를 보장한다. 주석 그래프의 참조 관계를 기반으로 객체의 생성 순서를 결정할 수 있다.
- 의존 주석이 참조 데이터를 직접 접근할 수 있도록 한다. 즉, 상위 주석이 하위 주석 또는 기본 데이터를 직접 활용할 수 있다.
또한, 각 주석 계층에는 모델 예측값(prediction) 을 저장하는 필드가 포함된다. 이로써 “정답 데이터(gold)”와 “예측 데이터(predicted)”를 한 곳에 보관할 수 있으며, 평가 지표 계산 및 오류 분석을 용이하게 한다.
우리는 문서를 모델 입력으로 변환하고, 모델 출력을 다시 원본 문서로 통합하기 위한 기능을 캡슐화한 태스크 모듈(task module) 개념을 도입했다.
이 개념은 “동일한 의미 구조를 가진 문서”가 **다양한 모델 유형(시퀀스 분류, 토큰 분류, 생성 모델 등)**의 학습 데이터로 활용될 수 있다는 점에서 착안되었다. 또한, 같은 문서 타입과 모델이라도 인코딩 방식만 다르게 구성할 수 있다는 점이 현대의 사전학습 언어모델(예: BERT) 시대에서 특히 중요하다.
IE(Information Extraction) 분야에서는 구조적 정보를 어떻게 인코딩할지가 모호할 때가 많다. 예를 들어, 다음과 같은 다양한 인코딩 전략이 존재한다:
- 소수 샷 분류(few-shot classification) 를 위한 “태스크-레이블 텍스트 쌍” (Halder et al., 2020)
- 관계 추출(RE) 을 위한 “엔터티 마커 토큰 삽입” (Baldini Soares et al., 2019)
- 생성 기반 개체명 인식(Generative NER) 을 위한 “포인터(pointer) + 레이블 트리플” 구조 (Yan et al., 2021)
텍스트 입력의 경우, 태스크 모듈은 토크나이징(tokenization), 긴 입력 처리(long input handling), 스팬(span) 정보 인코딩용 마커 삽입 등의 전략을 지정할 수 있다. 또한, 코어퍼런스 탐지(coreference detection)와 관계 추출(RE), 주장 식별(claim identification)과 개체 인식(NER)처럼 의미는 다르지만 구조가 유사한 데이터를 함께 다룰 때, 태스크 모듈이 어떤 데이터 부분을 사용할지 결정하고 인코딩한다.
PyTorch-IE의 인코딩 구조는 두 단계로 나뉜다:
- 입력 인코딩(Input Encoding) – 문서를 모델 입력으로 변환하는 단계 (예: 텍스트와 엔터티 정보를 조합해 관계 분류 모델이 사용할 수 있도록 변환)
- 타깃 인코딩(Target Encoding) – 학습 또는 평가 시 사용할 정답(target) 데이터를 인코딩하는 단계
타깃 인코딩은 훈련과 평가 시에만 사용되며, 추론(inference) 시에는 생략된다. 이를 통해 훈련 데이터의 정보가 추론 과정으로 누출되는 것을 방지한다.
모델의 파라미터 최적화 및 평가를 위해 PyTorch-IE는 PyTorch Lightning 프레임워크를 사용한다. 이로써 PyTorch를 직접 사용하는 것보다 보일러플레이트 코드가 크게 줄어들며, 간결한 구조로 학습 루프를 관리할 수 있다.
PyTorch-IE에서는 모든 Lightning 모듈이 모델로 작동할 수 있으며, 단 몇 줄의 코드 추가만으로도 HuggingFace Hub를 통한 모델 저장 및 공유 기능을 바로 사용할 수 있다.
PyTorch-IE는 표준화된 데이터 스키마 덕분에 재사용 가능한 평가 지표(metric) 구현을 손쉽게 지원한다.
모든 주석(annotation)은 비교 가능한 형태로 설계된 불변(frozen) 데이터 클래스 객체이며, 비교 시 확률값(probability score) 등의 부가 정보를 제외한다. 따라서 파이썬의 집합 연산(set operation) 만으로도 정확히 TP(True Positive), FN(False Negative), FP(False Positive) 를 도출할 수 있다.
학습된 모델은 HuggingFace Hub에 손쉽게 업로드할 수 있다. 모델과 태스크 모듈의 설정(config)을 함께 업로드할 수 있으며, 단일 플래그 설정만으로 이를 자동 처리할 수 있다. 또한 “auto-model” 및 “auto-taskmodule” 기능을 통해 허브나 로컬 디렉토리에서 한 줄 코드로 사전 학습된 모델을 불러올 수 있다.
PyTorch-IE는 HuggingFace Datasets와 완전 통합되어 있으며, 데이터 전처리 결과 캐싱, 대용량 데이터 스트리밍 등 다양한 기능을 지원한다.
Weights & Biases, Aim Stack, TensorBoard 등 여러 로깅 플랫폼을 지원하며, 설정 파일 기반(Configuration-based) 으로 손쉽게 연동할 수 있다.
PyTorch-IE는 신뢰성 높은 고품질 코드 생성을 목표로 설계되었다. 확장 가능한 테스트 모듈을 통해 기능을 검증하며, pre-commit 훅(hooks) 을 통해 코드 품질 검사를 자동화하여 코드베이스의 일관성을 유지한다.
이 절에서는 PyTorch-IE의 다양한 구성요소를 활용하여 특정 과제(텍스트 내의 관계 추출) 를 처리하는 방법을 간단히 보여준다. 구체적으로, 엔터티(Entity) 간의 이진 관계(Binary Relation) 를 분류하는 작업을 예시로 든다.
§3.1에서 설명했듯이, 하나의 문서는 데이터 필드(data fields) 와 주석 계층(annotation layers) 으로 구성된다. 이번 예시에서는 기본 데이터로 단일 텍스트 필드(text) 를 사용한다.
우리는 두 개의 주석 계층을 정의한다:
-
entities (엔터티 계층)
- 텍스트를 참조하는 레이블이 부착된 스팬(span) 으로 구성된다.
- 각 엔터티는
start,end,label속성을 가진다.
-
relations (관계 계층)
- 엔터티 계층을 참조하며, 두 엔터티(head, tail) 간의 관계를 나타낸다.
- 각 관계는
head,tail,label속성을 가진다.
이처럼 주석 계층 간의 의존 관계(dependency) 를 명확히 정의하는 것이 중요하다.
이번 사례에서는 entities 계층이 text 필드에 의존하고,
relations 계층은 entities 에 의존한다.
따라서 엔터티 주석은 시작·끝 인덱스 대신 실제 텍스트 내용을 직접 참조하여 표시할 수 있다.
그림 3은 이번 관계 추출 예시의 최종 문서 스키마를 시각적으로 보여준다.
그림 3: 관계 추출 데이터의 간단한 문서 스키마. 하나의 데이터 필드(text)와 두 개의 주석 계층(entities, relations)으로 구성된다. 각 계층의 타입(type)과 속성(attribute)이 함께 표시되며, 화살표는 계층 간 의존 관계를 나타낸다. PyTorch-IE는 이보다 더 복잡한 구조(복수의 데이터 필드, 임의의 비순환 주석 그래프)도 지원한다.
PyTorch-IE에서 태스크 모듈의 주요 역할은 문서를 모델이 인식할 수 있는 입력 형식으로 변환하는 것이다.
예를 들어, head와 tail 엔터티 간의 관계 rel을 추출해야 한다면,
다음과 같은 단계로 태스크 모듈을 구성할 수 있다:
-
텍스트 토크나이징(tokenization) 수행
-
엔터티 표시 마커(entity marker token) 삽입
- 각 엔터티의 시작과 끝에 특별한 토큰을 추가한다.
- 마커는 엔터티의 역할(HEAD 또는 TAIL)이나 타입(예: ORG, PER)에 따라 달라질 수 있다.
그 후, 이렇게 변환된 토큰 시퀀스를 HuggingFace의 Transformer 기반 시퀀스 분류 모델에 입력한다. 이 과정은 다양한 인코딩 전략에 따라 유연하게 조정될 수 있다.
또한 입력 인코딩 단계에서 다음과 같은 추가 로직을 포함할 수도 있다:
- 텍스트가 모델의 최대 입력 길이를 초과할 경우, 슬라이딩 윈도우(sliding window)나 중심 윈도우(fixed context) 방식으로 분할 처리
- 가능한 모든 엔터티 쌍 대신, 선택적 후보 관계(candidates) 만 생성하여 연산 효율화
이처럼 태스크 모듈은 관계 추출뿐 아니라 다양한 IE 과제에서 “문서 → 모델 입력” 변환 과정을 일관되게 관리할 수 있다.
마지막 단계에서는 실제 모델 정의를 수행한다. 이를 위해 PyTorch-IE는 Lightning 모듈 기반의 구조를 사용한다.
예를 들어, HuggingFace Transformers(Wolf et al., 2020)의 Transformer 기반 시퀀스 분류 모델(sequence classification model) 을 간단한 Lightning 모듈로 감싸서 사용할 수 있다.
HuggingFace의 auto-model 기능을 이용하면, Hub에 등록된 다양한 사전학습 모델(pre-trained model)을 모델 ID만 바꿔서 손쉽게 교체할 수 있다.
PyTorch-IE는 단일 프레임워크가 아니라, 정보 추출(IE) 연구를 지원하는 통합 생태계(ecosystem) 를 구성한다.
이 생태계에는 다음과 같은 구성요소가 포함된다:
- PyTorch-IE Core Framework: 기본 모델, 태스크 모듈, 평가 지표를 포함한 핵심 프레임워크
- PyTorch-IE-Models / PyTorch-IE-Datasets: 추가적인 모델, 태스크 모듈, 데이터셋 빌더, 문서 변환 유틸리티 제공
- PyTorch-IE-Hydra-Template: GitHub 템플릿 형태로, 모델 학습/평가 파이프라인 구축과 모듈형 설정 시스템을 간단히 시작할 수 있도록 지원
PyTorch-IE는 사용자가 바로 활용할 수 있는 사전 구성(pre-configured) 모델 아키텍처와 전처리 절차를 제공한다. 대표적으로 다음과 같은 과제들이 포함된다:
- 개체명 인식 (NER)
- 관계 추출 (RE)
- 추출형 질의응답 (Extractive QA)
사용자는 HuggingFace Model Hub에 있는 사전학습 모델을 불러와 이러한 데이터셋들로 손쉽게 파인튜닝할 수 있다.
다음과 같은 다양한 IE 작업에 대응하는 모델과 태스크 모듈이 제공된다:
-
NER
- 토큰 분류(token classification)
- 스팬(span) 분류(span classification)
-
RE (관계 추출)
- 엔터티 정보를 활용한 시퀀스 분류(sequence classification with entity augmentation)
-
결합 모델링 (Joint Modeling)
- 단순 시퀀스-투-시퀀스(seq2seq)
- 포인터 네트워크(pointer network) 기반 seq2seq
이들은 다른 스팬 탐지 및 분류 작업에도 손쉽게 적용할 수 있다. 구체적인 예시와 구현은 PyTorch-IE-models 저장소(repository) 에서 확인할 수 있다.
PyTorch-IE는 여러 대표적인 IE 데이터셋을 사전 전처리(pre-processed) 형태로 제공한다:
- NER: CoNLL2003, CoNLL2012
- RE: TACRED
- EQA: SQuAD v2.0
- 일반 형식 데이터: BRAT
또한, 사용자가 자체 데이터(custom dataset) 를 통합하는 방법도 PyTorch-IE-Datasets 저장소 및 HuggingFace 페이지에서 안내한다.
모델 평가를 위한 F1 점수(F1-Score) 등 기본적인 지표뿐 아니라, 데이터셋 통계 분석용 지표도 다양하게 포함되어 있다. 예를 들어:
- 레이블 분포(label distribution)
- 입력 길이 분포(문자/토큰 단위)
추가적인 모델 및 데이터셋 관련 지표 구현은 PyTorch-IE-models와 PyTorch-IE-datasets 저장소에서 확인할 수 있다.
이 논문에서는 딥러닝 기반 정보 추출(IE) 접근법의 빠르고 견고한 개발을 지원하는 범용 프레임워크, PyTorch-IE를 소개하였다.
PyTorch-IE는 높은 재현성(reproducibility) 과 확장성(extensibility), 그리고 재사용성(reusability) 을 갖춘 구조를 제공한다. 기존의 잘 알려진 ML 라이브러리(PyTorch, Lightning, HuggingFace 등)를 기반으로 하면서도, 그동안 충분히 다뤄지지 않았던 복합 IE 과제 영역을 체계적으로 지원한다.
PyTorch-IE는 모델 구현과 데이터 전처리를 명확히 분리하여 유연하고 확장 가능한 데이터 스키마 및 태스크 모듈 시스템을 제공한다. 이를 통해 기존 IE 과제뿐 아니라, 향후 등장할 새로운 데이터 구조를 다루는 과제에도 손쉽게 확장할 수 있다.
또한, 모델 공유 기능(HuggingFace Hub), 다양한 데이터셋 로딩 지원, 로깅 프레임워크 통합, 코드 품질 관리 기능 등을 통해 사용성(usability) 측면에서도 뛰어나다.
결론적으로, PyTorch-IE는 재현 가능하고 재사용 가능한 IE 연구 개발을 단순화하며, IE 과제의 복잡한 데이터 구조와 강력한 사전학습 언어모델 간의 연결고리를 제공한다. 이 모듈형 아키텍처는 연구 커뮤니티 내에서 아이디어와 방법론의 교류를 촉진하며, 협업적 개발(collaborative development) 을 위한 새로운 가능성을 연다.