Lexical Analysis(어휘 분석)
Lexical Analysis?
어휘 분석 : 단어 수준 또는 토큰 수준 의미를 보존할 수 있는 가장 최소한의 수준에서 분석
Lexical Analysis 목적?
어떤 일정한 character들이 있는 조합을 토큰으로 변환하는 것을 의미
토큰은 의미있는 character strings
자연어 처리의 경우 형태소가
많은 텍스트 마이닝의 경우 단어 관점에서 토큰 사용
Lexical Analysis 프로세스?
문서를 토큰화(기본적인 유닛으로 나눔)
각가의 토큰이 문장에서 어떠한 형태소를 갖는지에 대한 POS tagging
필요하다면 객체명 인식(NER, 사람, 물건), 명사구 인식
언어의 구조적 분석 예시?
한 문장 내에서 서로가 어떠한 관계를 가지고 있는지 보여줌
Part of speech : 각각의 토큰 또는 단어들의 형태소 판별
Named entity recognition(객체명 인식) : 클린턴은 사람, now는 date
co-reference : 문장 안에서 서로 다른 두 개의 표현, 사람, 객체들이 누가누가 같은 것을 지칭하는 지 찾음
Basic dependencies : 의존 구문에 대하여 분석
Lexical Analysis 1?
Sentence Splitting(문장 구분)
문장은 NLP 부분에서는 중요할 수 있는데 일부 Text Mining에서는 아닐 수도 있음(Topic Model)
문장 구분 쉽지 않음
종결 기호로 구분할 수 없는 사례 존재, 인용 부호
룰베이스로도 하기도 하고 아예 분리된 문장으로 학습시킴
Topic Model?
하나의 문서에 들어있는 토큰들의 집합을 가지고 데이터화 또는 벡터화를 시키기 때문에 문장이 정확하게 구분되지 않아도 큰 문젱없이 분석 진행 가능
Lexical Analysis 2?
Tokenization(토큰화)
문서를 하나의 가장 의미를 보존하고 있는 기본 유닛인 토큰으로 변환
단어, 숫자, 스페이스 토큰 등
오픈소스 이용할 것
상황에 맞게 토크나이즈 사용할 것
토큰화 어려운 이유?
소유격
하이픈
C++
중국어 등
지금까지의 기술로든 100% 완벽하지 않음
Lexical Analysis 3?
Morphological Analysis(형태학적 분석)
변종들을 의미를 보존하고 차원 축소
Normalization(Stemming, Lemmatication) 의미를 해치지 않는 선에서 뿌리를 찾음
Stemming은 단어의 base form을
Lemmatization은 lemma(품사를 보존하는 단어의 원형)를 찾음
Stemming?
정보 추출 관점에서 많이 사용
룰 베이스 알고리즘 통해 구현 가능
영어 관점에서 Porter stemmer
단순하고 빠름
단점은 언어에 종속적, 결과가 language에 존재하지 않을 수 있고 서로 다른 단어가 하나의 stem으로 귀결될 수 있음
시멘틱 관점에서 문제 발생할 수 있어
Lemmatization?
베이스 폼을 하나의 단어로 정의
root form의 단어기 때문에 품사 보존 및 실질적으로 존재
시멘틱 분석 관점에서 보다 적은 오류
복잡한 알고리즘이고 처리 속도 느려
시멘틱 분석이 필요한 경우에 어울려
Lexical Analysis 4?
Part-of-Speech(POS) Tagging(형태소 분석 단계)
형태소를 분석하는 목적은 문장이 주어졌을 때 그 각각의 문장의 단어들의 또는 토큰들의 pos 태크를 찾아줘
input은 토큰이 되고 output은 가장 적절한 태크가 됨
각은 토큰이어도 품사에 따라 POS 태그가 달라짐(명사, 동사)
통계적인 방식의 POS 태깅은 토큰을 하나씩 스캔하고 걸맞는 형태소를 할당
단어의 순서에 해당하는 확률을 두고 할당
매뉴얼로 태크된 코퍼스가 필요
parsing하고 달라 parsing은 문장 구조를 찾음 POS 태깅은 품사를 할당
POS Tagging 알고리즘?
Training phase에서는 매뉴얼로 주석된 코퍼스가 필요
태깅 알고리즘 역할은 주어진 텍스트에 대해서 학습 데이터를 통해서 만든 모델을 가지고 적용시켜서 새로 들어오는 태그 지정
일반적으로 좋다는 의미는 태킹 알고리즘을 학습 시켰던 코퍼스와 새로 들어온 데이터가 같은 도메인일 때는 좋다는 의미지만 의학 용어같이 특수한 것은 낮아지게 됨
결정 트리, HMMs, SVM 주로 사용
최근에는 Bert라든지 변형시켜서 함
POS Tagging 알고리즘 예시?
Pointwise prediction : 각각의 단어들을 개별적으로 분류기에 의해서 형태소 추정
Probabilistic models : Generative sequence model, Discriminative sequence models
Generative sequence model : 문장 전체 입력 받아, 논리적인 순차로 할당
Discriminative sequence models : 한꺼번에 일괄적으로 할당
딥러닝 기반의 모형들도 많이 사용
Pointwise Prediction : Maximim Entropy Model?
features encoding 진행 : 특정 단어와 context 정보를 가지고 봤을 때 이 정보가 품사를 예측하는 데 중요할 것인가 아닌가 하는 여부
Tagging Model : 여러개의 feature에 대해서 태그셋들을 전부 예측, 지양하지만 특정한 상황에서는 사용
Probabilistic Model?
문장은 주어지고 거기로부터 가장 그럴듯한 태그들의 시퀀스를 할당
전반적으로 전체 문장으로 봤을 때 태그셋의 확률을 최대로 되는 것을 찾음
Generative sequence model?
베이즈 규칙을 사용
POS -> POS transition
태크셋 1 -> 태크셋 2 -> 태그셋 3
POS -> Word emission
POS 태깅 주어지면 단어가 생성되는 확률 최대화
Discriminative sequence models?
Conditional Random Field(CRF)
순차적이 아닌 한꺼번에 모든 태그셋들 동시에 추정
여전히 매우 제일 윗단에서 좋은 성능을 보임
Neural Network-base Model?
최근의 트렌드
Window-based : 일부분만 보고 태크 찾기
sentence-based : all
시퀀스가 들어가서 시퀀스가 나옴
many to many
Hybrid model?
RNN + ConvNet + CRF
Lexical Analysis 5?
Named Entity Recognition(객체명 인식)
문장들이 주어졌을 때 각각의 요소가 이미 정의된 카테고리로 정의
Dictionary나 Rule-based로 해도 좋은 성능이 나오는 경우 많아
리스트로 만들어 놓으면 새로 들어오는 단어들 매칭 가능해
단순하고 빨라 그러나 리스트 단어가 변하는 것 관리하기 힘듦
Shallow Parsing Approach : 너무나 명확한 증거가 있을 때는 어떠한 객체인지 알 수 있어
대문자 장소
BERT for Multi NLP Tasks?
모델 하나 만들어 놓고 NER도 했으면 좋겠다 POS도 했으면 좋겠다
Google Transformer
http://jalammar.github.io/illustratedtransformer/
댓글