본문 바로가기
기계학습/자연어 처리 머신러닝

태깅 작업 - 딥러닝을 이용한 자연어처리 입문

by tryotto 2020. 1. 28.


# 태깅 작업


- 정의 : 각 단어가 어떤 유형에 속해있는지를 알아내는 작업


- 종류 : 

1) 개체명 인식 : 각 단어의 유형이 사람, 단체, 장소 등 어떤 유형인가

2) 품사 태깅 : 각 단어의 품사가 동사, 명사 등 무엇인가


- 케라스를 이용한 태깅 작업 특징 

1) RNN 의 다대다 작업

2) 앞뒤 시점을 모두 고려하는 양방향 RNN


- 태깅 작업 특징 (1) : 훈련 데이터

1) 태깅을 해야 하는 단어 = X 값, 해당 X 값에 대응되는 레이블 값 = Y

2) pair 을 이루는 x, y 값에 대해 정수 인코딩을 거침 -> 데이터들의 길이를 맞춰주기 위한 패딩 작업

> 무슨 소리지??


- 태깅 작업 특징 (2) : 시퀀스 레이블링

> 말 그대로, 시퀀스를 가진 X 의 데이터에 대해, 시퀀스를 가진 Y라는 레이블을 붙여주는 것

ex) X = {x1, x2, x3...} 처럼, 시퀀스를 가진 X 데이터에 대해

     Y = {y1, y2, y3...} 처럼 시퀀스를 가진 Y 레이블을 만드는 과정

> 이유? : 모르겠음... 궁금함


- 태깅 작업 특징 (3) : 양방향 LSTM 을 사용한다

> 바닐라 RNN 을 사용하지 않음 (바닐라 RNN은 가장 단순한 형태의 RNN를 의미했었다.)

   더 복잡한 구조를 가진 LSTM 을 활용함

> 양쪽의 정보를 활용하기 위해, 양방향 LSTM 을 활용


- 태깅 작업 특징 (4) : 다대다 RNN 형식을 활용한다

> 문장 내부의 각각의 단어들에 대해, 품사를 모두 붙여줘야 하기 때문에 다대다 형식일 수밖에 없다.

> 양방향 LSTM 형식을 띄기 때문에, 도식도 조금 새롭게 표현함 (확인해보기)






# 태깅작업 종류 (1) - 개체명 인식 


- 개체명 인식을 위해 전처리 과정이 필요 : 

1) 토큰화

2) 품사태깅

  > 전처리를 요구 안하는 경우도 간혹 있긴 함


- 개체명 인식기 사용 방법 2가지

   1) 패키지를 불러온다 : NLTK 등

   2) 직접 개체명 인식기를 훈련시킨 다음에, 활용한다 : LSTM 등


  1. NLTK 에서는 따로 개체명 인식을 위한 패키지가 있으므로, 그대로 활용하면 된다

> 앞서 말했듯, 여기서는 토큰화와 품사 태깅을 미리 해 놓은 상태를 요구한다.


  2. 양방향 LSTM 방식으로 직접 개체명 인식기를 만든 다음에, 그걸 훈련시킨다

     1) BIO 표현 

- B : 개체명이 시작되는 부분

-  I : 개체명의 중간 부분

- O : 개체명이 아닌 부분

      > B, I : 개체명이랑 상관이 있는 부분임

    > O : 개체명이랑 무관한 부분임

       ex) 해리포터 보러가기 -> 해(B) 리포터(I) 보러가기(O)

** 만약에, corpus 에 있는 단어들의 개체명 종류가 여러개일 경우, 따로 부연 설명이 주어진다

- 훈련 데이터 예시 : 

"call NN I-NP O" -> I 로 시작해서, O 로 끝난다. 즉, 해당 단어 call 은 I 형식이지만, 바로 뒤에 O 형식이 따라 붙는다