강의 영상 : https://www.youtube.com/watch?v=qlxrXX5uBoU&list=PL9mhQYIlKEhcIxjmLgm9X5BUtW5jMLbZD&index=1
1. 자연어란?
- 언어 : 명사) 생각, 느낌 따위를 나타내거나 전달하는 데에 쓰는 음성, 문자 따위의 수단. 또는 그 음성이나 문자 따위의 사회 관습적인 체계.
전달자 -> 수신자 에서 수신자가 사람 -> 컴퓨터
2. 다양한 자연어 처리 기술
- 자연어 처리란, '자연어를 컴퓨터가 해독하고 그 의미를 이해하는 기술'
-
Symbolic approach
-
규칙/지식 기반 접근법
-
IF문 상황 속에 조건이 있는 것
-
100원 = 가격을 의미
-
100 M = UNIT을 의미
-
-
-
Statistical approach
-
확률/통계 기반 접근법
-
TF-IDF를 이용한 키워드 추출
-
TF (Term Frequency) 단어가 문서에 등장한 개수
-
TF가 높을수록 중요한 단어
-
-
DF (Document Frequency) 해당 단어가 등장한 문서의 개수
-
DF가 높을수록 중요하지 않은 단어
-
-
-
3. 자연어 처리의 단계
-
전처리
-
개행 문자 제거
-
특수 문자 제거
-
공백 제거
-
중복 표현 제거
-
이메일, 링크 제거
-
제목 제거 등등
-
-
Tokenizing
-
자연어를 어떤 단위로 살펴볼 것인가
-
어절
-
형태소
-
n-gram
-
WordPiece
-
-
Lexical analysis
-
어휘 분석
-
형태소 분석
-
개체명 인식
-
상호 참조
-
-
Syntactic analysis
-
구문 분석
-
-
Semantic analysis
-
의미 분석
-
4. 다양한 자연어 처리 Applications
-
문서 분류
-
문법, 오타 교정
-
정보 추출
-
음성 인식결과 보정
-
음성 합성 텍스트 보정
-
형태소 분석 등
-> ex) 챗봇 + 음성 합성 + 감성분류 + 개체명 인식 + 추천 시스템 + 기계 독해 + 지식 그래프 + 관계 추출 + 등등
형태소 분석, 문서 분류, 개체명 인식 등, 대부분의 자연어 처리 문제는 '분류'의 문제
의미 분석기 | 구문 분석기 | 감성 분석기 | 형태소 분석기 | 개체명 인식기 |
최초의 컴퓨터가 뭐야? | 최초의 컴퓨터가 뭐야? | 나 지금 너무 행복해 | 최초의 컴퓨터가 뭐야? | 구글은 어떤 회사야? |
질문 (98%) 요구 (0.5%) 거절 (0.025%) 승낙 (0.025%) ... |
관형격 체언 (85%) 관형격 용언 (5%) 주격 체언 (5%) 부사격 체언 (0.5%) ... |
기쁨 (99%) 슬픔 (0.05%) 분노 (0.05%) 역겨움(0.05%) ... |
명사 (99%) 부사 (0.05%) 고유명사 (0.05%) 동사 (0.025%) ... |
기관 (95%) 직책 (0.05%) 사람 (0.05%) 직책 (0.025%) ... |
특징 추출과 분류
- '분류'를 위해선 데이터를 수학적으로 표현
- 먼저, 분류 대상의 특징(Feature)을 파악 (Feature extraction)
ex) 자연어의 특징을 나타내는 것을 예제로
분류 대상 : 돌고래, 코끼리, 말, 참치, 강아지
분류 대상 특징 : 크기가 다양 / 다리의 개수가 다양
분류 대상의 특징(Feature)를 기준으로, 분류 대상을 그래프 위에 표현 가능
분류 대상들의 경계를 수학적으로 나눌 수 있음 (Classification)
새로운 데이터 역시 특징을 기준으로 그래프에 표현하면, 어떤 그룹과 유사한지 파악 가능
- 과거에는 사람이 직접 특징(Feature)를 파악해서 분류
- 실제 복잡한 문제들에선 분류 대상의 특징을 사람이 파악하기 어려울 수 있음
- 이러한 특징을 컴퓨터가 스스로 찾고 (Feature extraction), 스스로 분류 (Classification)하는 것이 '기계학습'의 핵심 기술
분류 대상 :
나는 대한민국에서 태어났다. |
최초의 컴퓨터는 누가 만들었어? |
내일 날씨 알려줘 |
... |
분류 대상의 특징:
자연어를 어떻게 좌표평면 위에 표현할 수 있을까?
가장 단순한 표현 방법은 one-hot encoding 방식 -> Sparse representation
Word embedding - Word2Vec
ex) 세상 모든 사람
단어 | Vector |
세상 | [1, 0, 0] |
모든 | [0, 1, 0] |
사람 | [0, 0, 1] |
n개의 단어는 n차원의 벡터로 표현
--> 단어 벡터가 sparse해서 단어가 가지는 '의미'를 벡터 공간에 표현 불가능
- Word2vec (word to vector) 알고리즘 : 자연어 (특히, 단어)의 의미를 벡터 공간에 임베딩
- 한 단어의 주변 단어들을 통해, 그 단어의 의미를 파악
- Word2vec 알고리즘은 주변부의 단어를 예측하는 방식으로 학습 (Skip-gram 방식)
- 단어에 대한 dense vector를 얻을 수 있음
duct [1, 0, 0, 0, 0] 를 맞추고자 네트워크를 학습 ->
학습을 해서 tape의 주변단어가 duct다 = tape의 word vector를 히든레이어로 얻을 수 있다.
Word embedding의 방법론에 따른 특징
단어의 의미가 벡터로 표현됨으로써 벡터 연산이 가능
Word embedding 성능 검증 방법
https://github.com/dongjun-Lee/kor2vec, https://github.com/SungjoonPark/KoreanWordVectors
재미로 보는 Word2Vec analogy test (https://blog.naver.com/saltluxmarketing/221607368769)
종합
Word embedding - Word2Vec
- 단어가 가지는 의미 자체를 다차원 공간에 '벡터화' 하는 것
- 중심 단어의 주변 단어들을 이용해 중심단어를 추론하는 방식으로 학습
장점 :
- 단어간의 유사도 측정에 용이
- 단어간의 관계 파악에 용이
- 벡터 연산을 통한 추론이 가능 (e.g. 한국 - 서울 + 도쿄 = ?)
단점 :
- 단어의 subword information 무시 (e.g 서울 vs 서울시 vs 고양시)
- Out of vocabulary (OOV)에서 적용 불가능
Word embedding - FastText
- 한국어는 다양한 용언 형태를 가짐 (ex 모르다 - (모르네, 모르지, 모르기까지 ...)
- Word2Vec의 경우, 다양한 용언 표현들이 서로 독립된 vocab으로 관리
Fasttext :
- Facebook research에서 공개한 open source library
- Training
- 기존의 word2vec과 유사하나, 단어를 n-gram으로 나누어 학습을 수행
- n-gram의 범위가 2-5일 때, 단어를 다음과 같이 분리하여 학습함 'assumption = {as, ss, su,...ass,ssu... ption, assumption)
- 이 때, n-gram으로 나눠진 단어는 사전에 들어가지 않으며, 별도의 n-gram vector를 형성
- Testing
- 입력 단어가 vocabulary에 있을 경우, word2vec와 마찬가지로 해당 단어의 word vector를 return
- 만약 OOV일 경우, 입력 단어의 n-gram vector들의 합산을 return 함
--> FastText는 단어를 n-gram으로 분리를 한 후, 모든 n-gram vector를 합산한 후 평균을 통해 단어 벡터를 획득
오탈자 입력에 대해서도 본래 단어와 유사한 n-gram이 많아, 유사한 단어 벡터를 획득 가능
오탈자, OOV 등장 회수가 적은 학습 단어에 대해서 강세
Word embedding의 활용
- 다른 자연어 처리 모델의 입력으로 사용
- 학습 데이터의 양이 매우 적은 감성분석을 수행할 경우, 학습 데이터만으로는 특성 추출 불가능
Word embedding의 한계점
- Word2Vec이나 FastText와 같은 word embedding 방식은 동형어, 다의어 등에 대해선 embedding 성능이 좋지 못하다는 단점이 있음
- 주변ㅇ 단어를 통해 학습이 이루어지기 때문에, '문맥'을 고려할 수 없음
'Study' 카테고리의 다른 글
NLP(자연어처리) - Language Model (언어 모델) (0) | 2020.07.07 |
---|---|
Markov Process (0) | 2020.04.07 |
Optimizer : RAdam - Rectified Adam (0) | 2020.03.19 |
Greedy Search (0) | 2020.03.18 |
자연어 언어 모델 (0) | 2020.03.12 |