NER(Named Entity Recognition) : 자연어처리 기술을 이용, 문맥 상 의미를 파악하여 entity를 추출하는 알고리즘
(1) "Embedding" part
- BERT
- Fair embedding
- 임베딩 : 단어와 문장을 vector 값으로 나타내는 과정
- 글자 단위를 CNN or RNN으로 임베딩하여, 단어 단위 임베딩과 결합하여 사용
- word 단위 임베딩 + char 단위 임베딩 + 부정보(handcrafted word features)
(2) "개체명 인식" part
- N to N(many to many)
- sequence labeling
- 1. Cell 변경 : RNN, LSTM(성능, 장기메모리 상실), GRU(속도)
- 2. 층 추가 : 3층
- 3. 방향 추가 : Bidirectional LSTM
- 4. Highway-LSTM
*CRF를 이용하여 성능 끌어올리기
- RNN 계열로 매 입력 token마다 label을 예측
- 입력 단어 간의 관계만 파악, label간의 관계는 파악하지 않는다.
- 기존 양방향 RNN계열 모델에 CRF층을 추가적으로 쌓는다.
*BIO, BIOES scheme (label을 인코딩 하는 방식)
- B : Begin
- I : Inside
- O : Outside
- E : End
- S : Single
label 간의 규칙을 학습하여 적용하는 층이 CRF층
***
NER은 문장에서 특정한 종류의 단어를 찾아내는 information extraction 문제 중 하나
단어별로 표현된 문장에 각 단어의 종류를 인식하는 sequential labeling 방법이 주로 이용됨
오래 전부터 CRF(Conditional Random Field)가 이용됨
CRF는 named entities를 판별하는 규칙을 해석할 수 있다는 점에서 유용함
classification이라 하면, 하나의 입력 벡터 x에 대하여 하나의 label 값 y를 return 하는 과정
입력 : 길이가 n인 sequence x = [x1, x2, ... , xn]
출력 : 길이가 n인 sequence y = [y1, y2, ... , yn]
sequential labeling
확률모형으로 표현하면, 주어진 x에 대하여 P(y|x)가 가장 큰 y를 찾는 문제
argmax y P(y1:n|x1:n)
CRF는 앞, 뒤 단어와 품사 정보들을 이용
sequential labeling algorithm은 Maximum Entropy Markov Model(MEMM)
MEMM은 label bias라는 문제가 발생
이를 해결한 방법이 CRF
단어열의 길이가 n일 때, n번의 classification을 수행하지 않고, 전체적인 문맥을 고려하여 한 번의 classification을 수행함으로써 label bias 문제를 해결
potential function은 n개의 단어열을 각각 high dimensional sparse vector로 표현하는 방법
일종의 Boolean filter 처럼 작동함
'스타트업 > AI' 카테고리의 다른 글
[AI] 전처리툴 개발 (0) | 2020.05.29 |
---|---|
[AI] HMM (0) | 2020.05.27 |
[AI] Word2Vec, Fasttext (0) | 2020.05.25 |
[AI] NLP의 기본 절차와 Lexical Analysis (0) | 2020.05.25 |
[AI] 형태소 분석기 (0) | 2020.05.25 |