Deep Learning/CS224N

[CS224N] Named Entity Recognition(NER)

언킴 2021. 8. 31. 14:37
반응형

NER

개체명 인식은 문장에서 Location, Person, Organization 등 개체명$^{Named\ Entity}$를 분류하는 방법론이다. 개체명 인식을 하기 위해서는 그 전에 전처리 과정을 해주어야 한다. input으로 text가 들어오면 sentence단위로 split을 해주는 과정이 필요하고, 그 후 tokenizing을 거치고 pos tagging을 해준 후 Named entity recognition을 진행할 수 있다. 아래와 같이 '우리', '아버지', '가방', '에', '들어간', '다' 로 토큰화 되었다고 해보자. 일반적으로 '가방'이라는 단어를 location으로 판단할 수는 없지만 NER에서는 문맥을 보고 결정하기 때문에 아래의 경우 '가방'을 Location으로 개체명을 결정하는 것을 볼 수 있다. 

 

Window Classification 에는 크게 2가지 방법론이 있다. 첫 번째 방법은 다음과 같다. 

일단 먼저 단어가 4차원의 vector로 임베딩 되었다고 하고, window size는 2로 설정했다. '가방'이라는 단어를 기준으로 양 옆 window size 만큼 단어를 고려한다고 하면, 총 5개의 단어를 고려하게 된다. 4차원으로 된 각각 단어를 합해서 평균을 내주는 Average the word vectors in a window 방식이 있다. 평균을 취해버리는 방식을 사용하게 되면 그 단어가 어디에 위치해있는지에 대한 위치 정보를 잃어버리기 때문에 주의해야한다. 

 

 

두 번째 방법은 위와 같이 4차원의 vector의 평균을 구하는 것이 아니라 각 vector를 concatenate해 4x5, 20차원의 vector로 이용하는 것을 볼 수 있다. 딥러닝 모델로 두 번째 방법을 만들어보면 $x \in \mathbb{R^{20 \times 1}}, W \in \mathbb{R^{8 \times 20}}, U \in \mathbb{R^{8 \times 1}} $ 형태로 hidden layer에서는 8개의 차원으로 나오고 그 차원을 하나의 output으로 출력하는 형태로 만들어 줄 수 있을 것이다. 이때 hidden node는 Non-linear function을 사용해야한다. activate function의 대표적인 예로는 softmax 나 sigmoid와 같은 비선형 함수가 있다. 이 방식은 Word2Vec 방식과 유사하다. loss function 으로는 cross entropy를 사용한다.