새소식

인기 검색어

TL

20/08/24 TL. 규칙 기반 NLP

  • -

오늘 할 일

과사에 전화해서 수강 신청표 대규모 이동 가능한지 여쭤보기

자연어 처리 및 BERT 실습 강의 수강

transformers(text_classification -> run_glue.py) 코드 분석

매일 태깅

매일 독서 - 카네기 인간관계론

매일 영단어

paper_crawler 고치기

 

내일 할 일

데이터셋에 소스 추가

랩실 미팅

자연어 처리 및 BERT 실습 강의 수강

transformers(text_classification -> run_glue.py) 코드 분석

매일 태깅

매일 독서 - 카네기 인간관계론

매일 영단어


stunt 곡예, 방해하다

concede 인정하다, 부여하다

jolly 명랑한, 웃고 즐기는

marrow 골수, 정수

discomfort 불쾌, 불안, 불평

delegate 대표, 대표로 파견하다, 위임하다

dynamics 역학

curricular 교과 과정의

thrive 번영하다, (동,식물이)무럭무럭 자라다

pier 부두, 방파제


NLP는 크게 2종류
NLU (Natural Language Understanding) : 기계가 문장을 이해
NLG (Natural Language Generation) : 기계가 문장을 생성

NLP 응용 분야
정보 검색 : 원하는 검색 결과 문서 제공
챗봇 : 입력문장에서 사용자 의도를 파악해 응답 제공
기계 번역 : 원문과 동일한 의미 가지는 타겟 문장 생성

현재는 시나리오 내 혹은 정확한 키워드의 질의만 받을 수 있음.

Input modal : voice 혹은 text
Output : 의도한 바가 달성된 state 혹은 answer

규칙을 모든 단어에 그대로 적용할 수 없음
=>중의성, 확장성(의미가 다양해지거나 새로 생성), 유연성을 고려해야 함.

1. 형태소 분석 : 의미를 갖는 최소 단위인 형태소(Token) 추출
2. 구문 분석 : 문장의 문법적인 구조 연구
3. 의미 분석 : 단어, 문장 발화의 의미 연구


1. 형태소 분석

전처리로 Cleansing(분석 대상 아닌 입력문서 제거), Normalization(분석 기본 단위인 단어를 정규화)가 필요

어간 : 용언 활용 시 바뀌지 않는 부분
어미 : 용언 활용 시 바뀌는 부분
먹|다
먹|으니
먹|고

용언 : 동사, 형용사의 원형을 복원

한국어 형태소 분석 단계
1. 특수기호 전처리, 문장 단위로 분리
2. 주어진 문장 어절 내 모든 형태소를 분리
3. 형태소 분석, 용언 처리(동사 원형 복원)
4. 미등록어 추정(신조어, 외국어...)
5. 품사 태깅

POS tagging(Part-Of-Speech Tagging)
->형태소 분석의 모호성 해결. 문맥에 맞게 품사 태그 선택. 모델의 정확도 좌우. 통계적 or 기계학습(HMM, DT, SVM)적으로 해결
품사 태그 : 형태소 분석의 기준이 되는 세분화된 품사 체계

한국어 대표 : 세종 말뭉치 품사 태그 세트(TTA 표준안)
영어 대표 : Penn Treebank 태그 세트

개체명 인식(Named Entity Recognition)
품사 태깅 후, 미리 정의된 카테고리에 해당되는 정보를 태깅하여 정보 추출. 의도(intent) 분류 등에 사용.

개체명 태깅에는 BIO Tagging이 대표적
개체명을 텍스트로부터 인식시키기 위한 기법 중 하나.
B:Begin. 시작 단어에 태그
I:Inside. B 혹은 I 개체명 뒤에 오는 단어를 태그
O:Outside. 개체명이 아닌 나머지 단어에 대해 태그

개체명 관련 자료는
Stanford NER
말뭉치 자료
CoNLL, CHEMDNER, Twitter
등에서 찾을 수 있음.


언어사전 : 어휘들에 대한 집합
-시스템 사전, 감성어 사전, 사용자 사전 ...

말뭉치 Corpus : 정제된 문장들의 집합
-원시 말뭉치, POS tagged 말뭉치, NER Tagging 말뭉치 ...

2. 구문 분석
문장을 구성하는 성분들 간 의미적, 구조적 관계를 분석 (어절에 문법적 구조를 할당)
-> 문장의 구조는 trees or graphs로 표현 가능. 각 노드는 품사의 종류로 나타남.
-> 하나의 입력 문장이 여러가지 구조로 분석 가능(모호)

패턴매칭 기반 의도 분석 : 사용자 입력 문장을 분석해 사용자 의도 분석. 분석된 의도에 따라 사용자에게 답변 생성
1. 입력으로 들어온 문장을 형태소 분석
2. Intent 및 entity 추출 (NER)
3. 문장의 문법적 구조 분석
4. 분석된 Intent에 맞추어 답변 문장을 선택, entity 대입
->의도 분석을 통해 하나의 패턴화 가능

단어의 중의성 해소(Word Sense Disambiguation, WSD)는 NLP에서 중요하나, 딥러닝 시대에는 ent-to-end 학습 방법이 선호되어 RNN 기반 모델에서는 중의성 해소에 대한 필요가 낮아지는 중.



1. 형태론 : 단어와 형태소를 연구
2. 통사론 : 구문 분석
3. 의미론 : 단어, 문장, 발화에서 실제 의미 관계를 연구
ex)사료가 개를 먹습니다. -> 문법적으로는 맞지만 의미는 안 맞음
4. 화용론 : 상황에 따른 언어의 사용법 연구

의미 분석 (Semantics)
문장에 표현된 각 단어의 의미와 개념들 간의 관계를 분석

다의어(Polysemy), 동의어(Synonym)
->유사어 사전 활용해 중의성 해소

중의성(ambiguity)
검색 : 다의어를 의미별로 분류해서 index해야 함.
기계번역 : 한 단어나 문장이 여러 의미 가질 때, 올바른 번역어 선택해야 함.

화용 분석(Pragmatic Analysis)
화행 : 언어를 통해 이루어지는 행위(약속, 사과, 충고, ...)
대명사의 지시 대상에 대한 사전 지식 정보가 필요
ex) 우리 다음 주 이 시간에 다시 봅시다. 에서 시간
상대방에게 행동을 요구하는 언어 행위, (직간접적) 의사표현
ex)덥다.(에어컨 틀어)

감성 분석
대량의 text에서 의견, 감정, 평가, 조회수, 칭찬, 감성 등 단어 추출.
긍정, 중립, 부정 파악.
키워드 별 분석이 필요

일반적 감성 분석 절차
1.Corpus 수집
2.Document Preprocessing 전처리 (사전 활용)
3.Document Analysis 분석 (사전 활용)
4.Semantic Score 감성 점수 부여

ex) 뉴스 분석 절차
1. 미리 정의된 감성분석 사전을 활용해 감성 점수 부여.
2. 각 기사 별로 감정 점수가 등장하는 unique한 어휘 수 계산.
3. 등장 어휘 수가 더 많은 감성 쪽으로 기사 할당.

문서 표현
과거 : 벡터로 나타내서 벡터와 가까우면 유사한 것으로 봤음.
최근 : 
문서 : 단어들의 집합으로 구성. 연속된 단어들의 나열

단어추출 : 문서를 Term 단위로 분해, 추출
단위
-어절 : 띄어쓰기
-형태소 : 형태소 분석
-구문 : 명사구, 패턴

Local Representation vs Continuos Representation
Local
->one-hot, n-gram, bag of words
Continuous
->CBOW, Skip-gram model, Glove

bag of words (BOW)
문서를 단어의 집합으로 간주.
간 문장에서 나타나는 단어들을 모아 binary vector로 표현.
-> 직관적이지만 의미적 유사도를 표현할 수가 없는 게 단점.(다 0,1이라)
=> word에 weight를 준다.
-> Sparsity : 단어의 수가 많아지면 벡터 차원 커지고 학습량 증가.

Term Vocabulary Generation
1. Document 집합에 있는 Term들을 사전화
2. 전처리 -> stop words : 조사, 어미, 관사, 접속사 등 고빈도 기능어 제거.
3. Document-Term Frequency Count : 문서내 단어가 포함된 개수(가중치)
4. Ordering & Term ID 부여

TF : Term Frequency. Word Weighting에 사용. 가중치 벡터로 TF 혹은 TF * IDF로 나타낼 수 있음.
문서에서 Term 추출 -> 단어 정렬 후 ID 변환 -> Term의 빈도 수 확인

DF : Document Frequency. 특정 단어가 나타나는 문서의 수. 문서 D에 나타난 용어 t에 부여되는 가중치. 빈도수가 낮은 단어에 의미가 더 있음. (문제점)
IDF : Inverse document frequency.
N : 문서 집합의 총 문서 개수.
idf = log(N / df)
=> idf는 df에 반비례.

Term vector Model
Document를 단어들의 vector로 표현. Document-Term Vector간 consine similarity를 계산하여 유사성 비교.

 

cosine 유사도

https://ko.wikipedia.org/wiki/%EC%BD%94%EC%82%AC%EC%9D%B8_%EC%9C%A0%EC%82%AC%EB%8F%84

 

코사인 유사도 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 코사인 유사도(― 類似度, 영어: cosine similarity)는 내적공간의 두 벡터간 각도의 코사인값을 이용하여 측정된 벡터간의 유사한 정도를 의미한다. 각도가 0°일 때

ko.wikipedia.org


NLU의 3가지
1. Domain Classification : 사용자의 발화가 어떤 도메인에 속하는가?
2. Intent Classification : 대화의 의도를 분류
3. Slot Filling : 중요한 개체명들을 파악

Slot-Gated Modeling : 2-3을 한 번에 학습을 해보자

ToD-BERT(2020) : 대화 말뭉치를 사용해서 학습률을 끌어올리겠다.

Task Oriented Chatbots -> Non-task Chatbots : 요즘 추세

sequence to sequence
encoder - decoder
encoding : 우리만 아는 특정 코드로 축소 변환
decoding : 암호 코드를 해독해서 우리가 원하는 원래 문장으로

Gan-network :  ‘Generative Adversarial Network’. ‘Generative’는 GAN이 생성(Generation) 모델이라는 것을 뜻한다. 생성 모델이란 ‘그럴듯한 가짜’를 만들어내는 모델이다. 언뜻 보면 진짜 같은 가짜 사람 얼굴 사진을 만들어내거나 실제로 있을 법한 고양이 사진을 만들어내는 것이 생성 모델의 예다.



single layer perceptron : 입력층, 출력층
multi layer perceptron : 입력층, 은닉층(hidden layer), 출력층
->비선형 문제도 풀 수 있다.

입력층 : 입력층을 다음 층에 전달. 노드 수 == 입력 수
은닉층 : 은닉층 여러 개를 쌓을 수 있음. 노드 수는 조절하기 나름.
출력층 : 노드 수 == 출력 수.


overfitting을 막는 3가지 전략

weight decay : 선형 함수 f(x)=wxf(x)=w⊤x​ 에서 가중치 벡터(weight vector)가 작을 경우 ‘’이 함수는 간단하다’’라고 간주합니다. 이것은 w2‖w‖2​ 로 측정될 수 있습니다. 가중치 벡터(weight vector)를 작게 유지하는 방법 중에 하나는 손실(loss)을 최소화하는 문제에 이 값을 패널티(penalty)로 더하는 것입니다. 이렇게 하면, 가중치 벡터(weight vector)가 너무 커지면, 학습 알고리즘은 학습 오류를 최소화하는 것보다 ww​ 를 최소화하는데 우선 순위를 둘 것입니다. 이것이 바로 우리가 원하는 것입니다. 코드에서 이를 설명하기 위해서, 앞 절의 “Linear Regression” 를 고려해보면, 손실(loss)은 다음과 같이 주어집니다.

l(w,b)=1ni=1n12(wx(i)+by(i))2.

참고 : https://ko.d2l.ai/chapter_deep-learning-basics/weight-decay.html

 

3.12. 가중치 감쇠 (weight decay) — Dive into Deep Learning documentation

 

ko.d2l.ai

2.dropout:

학습 과정에 네트워크 연산 경로에 노이즈를 집어넣는 것입니다.

여기서 주요 과제는 지나친 편향(bias)을 추가하지 않으면서 어떻게 노이즈를 추가하는지 입니다. 입력 xx 에 대해서는 노이즈를 추가하는 것은 상대적으로 간단합니다. 즉, ϵN(0,σ2)ϵ∼N(0,σ2) 노이즈를 입력에 더한 후 x=x+ϵx′=x+ϵ 이 것을 학습 데이터로 사용하면 됩니다. 이렇게 했을 때 주요 특징은 E[x]=xE[x′]=x 을 갖는 것입니다. 하지만, 중간층들에서는 이 노이즈의 스캐일이 적절하지 않을 수 있기 때문에 이 특징을 기대하기 어렵습니다. 대안은 다음과 같이 좌표를 뒤틀어 놓는 것입니다.

h={0h1p  p     h′={0 확률 p 인 경우h1−p 그 외의 경우

설계상으로는 기대값이 변하지 않습니다. 즉, E[h]=hE[h′]=h 입니다. 중간 레이어들에 적용되는 활성화(activation) hh 를 같은 기대값을 갖는 랜덤 변수 hh′ 로 바꾸는 것이 드롭아웃(dropout)의 핵심 아이디어 입니다.

 

https://ko.d2l.ai/chapter_deep-learning-basics/dropout.html

 

3.13. 드롭아웃(dropout) — Dive into Deep Learning documentation

 

ko.d2l.ai

3.Early Stopping : 

너무 많은 Epoch 은 overfitting 을 일으킨다. 하지만 너무 적은 Epoch 은 underfitting 을 일으킨다. 

 

이런 상황에서 Epoch 을 어떻게 설정해야하는가? 

Epoch 을 정하는데 많이 사용되는 Early stopping 은 무조건 Epoch 을 많이 돌린 후, 특정 시점에서 멈추는 것이다. 



출처: https://3months.tistory.com/424 [Deep Play]

'TL' 카테고리의 다른 글

20/08/26 TL.  (2) 2020.08.26
20/08/25 TL. 통계 기반 NLP  (0) 2020.08.25
20/08/23 TL transformers- text_classification 예제 코드분석  (0) 2020.08.23
20/08/22 TL  (0) 2020.08.22
20/08/21 TL  (0) 2020.08.21
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.