Computer Science/Data Analysis

Information Extraction

정보 추출(IE)는 반정형 또는 비정형 텍스트 데이터에서 정형 정보를 추출하는 기술이다. 텍스트 데이터를 체계적이고 검색 가능하며 기계가 읽을 수 있는 데이터로 변환하는 프로세스이다. 입력 텍스트 내에서 중요한 데이터를 식별하기 위해 사용된다

이름, 관계, 사건, 감정 등 다양한 Entity를 식별한 다음 이를 분류하고 DB에 저장한다. 이렇게 생성된 정형 정보는 표준화된 형식을 가지고 일반적으로 해당 속성을 식별하는 행과 열에 저장된다.

Why information extraction is important

데이터 활용성 향상

  • 데이터의 대부분을 차지하는 비정형 텍스트를 정형화된 형식으로 변환하여 더 쉬운 분석 및 활용이 가능하도록 한다.
  • 자동화된 정보 검색을 위한 기반을 마련한다. 정보 검색은 Retrieval-Augmented Generation(RAG)의 필수 구성 요소이다.
  • RAG는 LLM이 학습 데이터 외부의 더 많은 지식을 활용하여 개선된 답변을 생성할 수 있어 질의 응답 작업에 적용하면 LLM Chatbot의 정확도를 향상할 수 있다.

데이터 처리 자동화

  • 정보 추출은 추출 프로세스를 자동화하여 수동 데이터 입력 및 분석의 필요성을 줄이고 시간과 자원을 절약한다.

데이터 기반 의사 결정

  • 추출 정보를 활용해 실시간으로 데이터 기반 의사 결정이 가능해진다.
  • 정보 추출은 수집, 정리, 저장, 조작의 더 큰 정보 처리 주기의 예비 단계이다.

Key Components of Information Extraction

정보 추출 작업의 구성 요소는 정보의 유형에 따라 분류된다.

1. Named Entity Recognition

비정형 데이터에서 Named Entity를 식별하는 작업, Named Entity은 고유하게 식별할 수 있는 실제 개체로 데이터의 고유명사라고 할 수 있다. Named Entity에는 사람, 날짜, 회사, 장소 및 제품 등이 포함된다.

2. Relationship Extraction

데이터의 원본에 있는 Entity 간의 관계를 식별하여 분류하는 작업, 연결망과 통찰력을 구축하는데 도움을 준다.

3. Event Extraction

입력 텍스트 본문에서 개별 이벤트를 인식하는 방법, 약속 또는 모임과 같은 단어나 날짜 등을 트리거로 Event Extraction Sequence를 실행시킬 수 있다. 특정 Event와 언제, 누구와, 무슨 일이, 어디서 발생했는지와 같은 속성을 식별한다.

Information Extraction Techniques in NLP

분류 정의 기법
개체명 인식 텍스트에서 명명된 개체를 식별하고 분류 - 규칙 기반 접근 방식: 미리 정의된 규칙과 패턴 활용
- 통계 모델: 은닉 마르코프 모델 및 조건부 랜덤 필드와 같은 확률 모델 사용
- 딥 러닝: BiLSTM-CRF와 같은 신경망과 BERT와 같은 트랜스포머 활용
관계 추출 텍스트 내의 개체들 간의 관계를 파악하고 분류 - 패턴 기반: 패턴과 언어 규칙을 사용
- 지도 학습: 레이블이 지정된 데이터를 사용해 분류기를 훈련
- 딥 러닝: CNN, RNN 및 트랜스포머 활용
이벤트 추출 이벤트와 참여자, 속성 및 시간 정보를 탐지 - 템플릿 기반: 텍스트를 미리 정의된 이벤트 템플릿과 일치시킴
- 머신 러닝: 분류기와 순서 레이블링 방법을 사용
- 딥 러닝: RNN, CNN 및 어텐션 메커니즘을 적용하여 이벤트 구조를 포착함
공참조 해상도 텍스트에서 서로 다른 표현들이 동일한 대상을 가리키는지 여부를 판단 - 규칙 기반: 휴리스틱 규칙을 사용
- 머신 러닝: 성별, 수, 구문적 역할과 같은 특징을 사용하여 분류기를 학습
- 딥 러닝: BiLSTM과 같은 DL 모델과 트랜스포머를 사용하여 공참조 체인을 구현
템플릿 작성 미리 정의된 템플릿을 채우기 위해 특정 정보를 추출 - 규칙 기반: 규칙에 따라 텍스트를 슬롯에 매칭
- 머신 러닝: 분류기를 사용하여 템플릿 슬롯을 채움
- 하이브리드 방식: 정확도를 높이기 위해 규칙과 ML을 결합
오픈 정보 추출 텍스트에서 임의의 관계와 인수로 이루어진 튜플을 추출 - 패턴 기반: 언어적 패턴을 활용하여 관계형 트리플을 식별
- 통계적 방법: 확률 모델을 사용하여 추출된 관계의 신뢰도를 판단
- 딥 러닝: 딥러닝 모델을 활용하여 프로세스 개선

 

References

[1] IBM: information-extraction

[2] geeksforgeeks: information-extraction-in-nlp

반응형

LDA

선형 판별 분석(LDA)은 Supervised Machine Learning에서 Multi-Class Classification 문제를 해결하기 위해 사용되는 접근 방식이다. LDA는 여러 특성을 가진 다수의 Class를 분리하기 위해 Dimensionality Reduction(차원 축소)을 사용한다.

 

LDA는 정규 판별 분석(Normal Discriminant Analysis, NDA) 또는 판별 함수 분석(Discriminant Function Analysis, DFA)라고도 한다. 두 개 이상의 Class를 가장 잘 구분하거나 특징짓는 변수들의 Linear Combination of Features(선형 조합)을 찾는 방법이다. 이렇게 도출된 조합은 선형 분류기로 직접 사용되거나, 본격적인 분류 전에 Dimentionality Reduction를 수행하는 용도로 쓰인다.

 

LDA는 PCA와 유사하지만, LDA는 Category 사이의 Maximizing the Separability에 집중한다. 이는 다음 두 가지 조건을 동시에 만족하는 축을 찾는다는 뜻이다.

- Maximize the Distance between Means($S_B$)

- Minimize the Variation within Each Category($S_W$)

관련된 내용은 아래의 Scatter Matrix 챕터에서 이어서 언급된다.

 

LDA는 두 개 이상의 차원을 가진 데이터를 하나의 차원으로 Projection하여 데이터를 보다 쉽게 분류할 수 있도록 하는데, 이를 Dimentionality Reduction이라고한다. 이 덕분에 LDA는 Binary Classification으로 제한되는 로지스틱 회귀와 다르게 Multi-Class Classification 문제에도 사용할 수 있다. 따라서 LDA는 Decision Trees, Random Forest, Support Vector Machine과 같은 다른 학습 분류 알고리즘을 향상하기 위해 적용되는 경우가 많다.

Key Assumptions of LDA

LDA가 효과적으로 동작하려면 아래의 가정들이 필요하다

- Gaussian Distribution: 각 Class의 Data들이 정규분포를 따라야 한다.
- Equal Covariance Matrices: 모든 Class가 동일한 공분산 구조를 가져야한다.
- Linear Separability: 모든 Data가 직선 혹은 평면으로 분리 가능해야 한다.

 

Scatter Matrix

LDA에서 Scatter는 분산과 유사한 개념으로 데이터가 얼마나 퍼져 있는지를 나타내는 척도이다. Scatter를 이용해 앞서 언급한 두 가지 조건을 만족하는 축을 찾는다.

이를 위해 다음과 같은 $J(w)$를 최대화하여 두 조건의 비율을 최적화한다.

 

$$J(w) = \frac{w^T S_B w}{w^T S_W w} \approx \frac{(\text{Class 간 Scatter})}{(\text{Class 내 Scatter})}$$

 

- Between Class Scatter Matrix $S_B$: 각 Class Means 사이의 변동을 나타낸다. LDA는 이 Scatter를 최대화하여 각 Class 그룹들이 서로 멀어지게 밀어낸다.

계산 방법은 다음과 같다.

  1. Global Mean(Dataset 전체의 Mean)을 계산한다.
  2. 각 Class $i$마다 해당 Class의 Mean $(\mu_i)$과 Global Mean $(\mu)$의 차이를 구한다.
  3. Outer Products를 Summation 한다. $n_i$는 Class $i$에 속한 Data의 개수이다.

$$S_B = \sum_{i} n_i (\mu_i - \mu)(\mu_i - \mu)^T$$

$n_i$를 곱하는 이유

Data가 많은 Class의 영향을 더 크게 반영하기 위해 해당 Class의 Sample 개수를 가중치로하여 합산해준다.

 

- Within Class Scatter Matrix $S_W$: 각 Class의 Data Point들이 얼마나 떨어져 있는지를 나타낸다. LDA는 이 Scatter를 최소화하여 같은 Class 내의 Data Point들이 서로 가까이 있도록 한다.

계산 방법은 다음과 같다.

  1. 각 Class $i$의 Mean $(\mu_i)$을 계산한다.
  2. 해당 Class $i$에 속한 Data와 $(\mu_i)$의 차이의 Outer Products를 Summation 한다.

$$S_I = \sum_{x_j \in \text{Class}_i} (x_j - \mu_i)(x_j - \mu_i)^T$$

  1. 모든 Class에 대한 Scatter Matrics를 더한다.

LDA는 Data를 분류하기 가장 좋은 저차원 공간으로 투영하기 위해 이 $J(w)$를 최대화하는 축을 찾는다.

LDA가 성능이 낮아지는 경우

  1. 공분산 구조가 Class마다 다를 때

LDA의 가장 중요한 가정은 모든 Class가 동일한 공분산 행렬을 가진다는 것으로, 공분산 구조가 Class마다 다를 때는 결정 경계가 직선이 아닌 곡선 형태가 되어야 한다.

  1. 독립 변수들이 정규 분포를 따르지 않을 때

Data가 한쪽으로 심하게 치우쳐 있거나, Outlier가 많아 정규성이 깨지면 LDA가 계산하는 Mean과 Scatter 값이 왜곡된다.

  1. 다중공선성이 존재할 때

Multicollinearity는 입력 변수들 사이에 강한 상관관계가 있을 때 발생한다. 다중공선성이 존재하게 되면 모델의 Coefficient가 불안정해져 예측의 신뢰도가 떨어지고 성능이 저하된다.

  1. Class간 평균이 너무 가깝거나 겹칠 때

LDA의 목표는 Separability를 최대화하는 것이다. Class간 Scatter가 너무 작으면 아무리 축을 회전시켜도 Class를 분리할 수 있는 충분한 공간을 확보할 수 없다.

  1. 비선형 분류가 필요한 복잡한 데이터 구조

LDA는 변수들의 선형조합을 찾는 기법으로, Data가 Concentric Circles 혹은 XOR 패턴처럼 복잡하게 얽혀 있다면 직선 형태의 결정 경계로는 이를 나누는 것이 불가능하다.

References

[1] IBM: linear-discriminant-analysis

[2] WIKIPEDIA: Linear discriminant analysis

[3] Youtube: StatQuest

[4] THE DICISION LAB: linear-discriminant-analysis

Others

  • Multi-Class vs Multi-Lable
  • Latent Dirichlet Allocation(LDA, 잠재 디리클레 할당)
  • Dimensionality Reduction
  • Naive-Bayes
반응형

'Computer Science > Data Analysis' 카테고리의 다른 글

Information Extraction(IE, 정보 추출)  (0) 2025.12.21

+ Recent posts