본문 바로가기

deeplearning

CRF를 이용한 Named Entity Recognition

NER(Named Entity Recognition)

 개채명 인식이라고 부른다. 문장에서 특정한 종류의 단어를 찾아내 분류하는 information extraction 문제이다.

 

 

BIO tag

NER과 같은 task에서는 BIO tag를 일반적으로 이용함

여러 토큰 혹은 단어들이 하나의 개채가 되는 경우가 많기 때문에 이를 처리하기 위한 규칙이라고 볼 수 있다. 

 

B - begin

I - inside

O - outside

Named Entity의 시작을 알리는 단어에는 B가 태깅되고, 중간에는 I, Entity를 포함하지 않는 곳에는 O가 태깅된다. 그리고 B에 Named Entity 정보가 함께 들어가 있다.

 

 

ex)

(Donald J Trump)       ->     (Donald = B-Person  /  J = I  /  Trump = I)     ->    (Donald J Trump, Person)

 

 

 

 

 

CRF(Conditional Random Field)

 단어의 길이가  이며 단어들의 sequence로 이루어진 문장인 input x =  같은 길이의 을 반환해야한다. 즉, NER은 sequential data 에 대한 sequential classification이며, 이를 sequential labelling 이라고 한다.

 

 

sequential labelling 확률모형

 

 문장에서 각각의 단어들은 서로 연관성을 가지기 때문에 특정 단어에 대해 classification을 진행할 때 문법적, 의미적으로 주변 단어가 중요한 역할을 한다. 그래서 특정규칙을 반영하는 CRF를 NER 모델에 적용하는 경우가 많다.

 

 

 

CRF은 분류하고자 하는 단어 및 단어의 앞, 뒤 단어와 앞 단어의 entity 정보를 분류에 이용한다. 아래는 이의 예시이다.

 

 

 

예시

 

 

 

CRF는 가능성이 있는 후보들 중, 가장 적합한 하나의 y(label)을 고른다.

 

CRF의 확률모형은 아래와 같이 표현된다.

 

 

 

CRF의 확률모형

 

 

 

 

 

기존에 CRF 층이 존재하지 않았던 BERT 모델은 활성화 함수를 지난 시점에서 개체명을 결정했지만, CRF 층을 추가한 모델에서는 활성화 함수의 결과들이 CRF 층의 입력으로 전달한다. BERT에서 출력된 벡터들은 CRF 층의 입력이 되고, CRF 층은 레이블 시퀀스에 대해서 가장 높은 점수를 가지는 시퀀스를 예측한다.

 

이러한 구조에서 CRF 층은 점차적으로 훈련 데이터로부터 아래와 같은 제약사항 등을 학습하게 되는 것이다.

  1. 문장의 첫번째 단어에서는 I가 나오지 않는다.
  2. O-I 패턴은 나오지 않는다.
  3. B-I-I 패턴에서 개체명은 일관성을 유지한다. 예를 들어 B-Per 다음에 I-Org는 나오지 않는다.