반응형

AIFFEL 15

[Going Deeper(NLP)] 15. NLP Framework의 활용

해당 포스팅은 AIFFEL에서 제공한 학습자료를 통해 공부한 것을 정리한 것임을 밝힙니다. 목차 다양한 NLP Framework의 출현 Huggingface transformers 개요 Huggingface transformers (1) Model Huggingface transformers (2) Tokenizer Huggingface transformers (3) Processor Huggingface transformers (4) Config Huggingface transformers (5) Trainer 1. NLP 기술의 발전과 framework 소프트웨어에서 framework란 프로젝트의 뼈대를 이루는 클래스와 인터페이스의 집합을 말한다. 해당 분야의 베스트 프랙티스를 반영하여 확장 가능한 ..

[Going Deeper(NLP)] 11. 기계 번역이 걸어온 길

해당 포스팅은 AIFFEL에서 제공한 학습자료를 통해 공부한 것을 정리한 것임을 밝힙니다. 학습 목표 번역 모델이 발전해 온 과정을 살펴본다. 번역을 생성하는 여러 가지 방법을 이해한다. 주어진 데이터로 더 높은 성능을 만들어 내는 법을 배운다. 자연어 처리의 성능을 측정하기 위한 지표를 배운다. 1. 번역의 흐름 1.1 규칙 기반 기계 번역 번역할 때 경우의 수를 직접 정의해 주는 방식이 규칙 기반 기계 번역(RBMT, Rule-Based Machine Translation)이다. 수 많은 규칙들은 모두 언어학을 기반으로 하기에 개발 과정에 언어학자가 동반되어야만 했다. 1945년, 미국의 조지타운대와 IBM이 직접 정의한 언어 규칙을 통해 60개의 러시아어 문장을 영어로 번영하는데 성공했다. [역사 ..

[Going Deeper(NLP)] 10. Transformer로 번역기 만들기

해당 포스팅은 AIFFEL에서 제공한 학습자료를 통해 공부한 것을 정리한 것임을 밝힙니다. 준비물 터미널을 열고 프로젝트를 위한 디렉토리를 생성하자. $ mkdir -p ~/aiffel/transformer 실습에서 한국어가 포함된 말뭉치를 사용하기에 한국어를 지원하는 폰트를 지정하여 실행하자. import matplotlib as mpl import matplotlib.pyplot as plt import matplotlib.font_manager as fm %config InlineBackend.figure_format = 'retina' fontpath = '/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf' font = fm.FontProperties(..

[Going Deeper(NLP)] 9. Transformer가 나오기까지

해당 포스팅은 AIFFEL에서 제공한 학습자료를 통해 공부한 것을 정리한 것임을 밝힙니다. 학습 목표 트랜스포머 이전의 Attention 기법에 대해 간단하게 복습한다. 트랜스포머에 포함된 모듈들을 심층적으로 이해한다. 트랜스포머를 발전시키기 위해 적용된 여러 테크닉들을 알아본다. 1. Attention의 역사 Seq2seq는 두 개의 RNN을 결합한 Encoder-Decoder 구조를 만들어 문맥 전체를 반영한 번역이 가능하게 했다. Before) Step1: [나는] -> [I] Step2: [나는] [점심을] -> [I] [lunch] Step3: [나는] [점심을] [먹는다] -> [I] [lunch] [eat(?)] After) Encode(나는 점심을 먹는다) -> 고정된 크기의 컨텍스트 벡터..

[Going Deeper(NLP)] 7. Seq2seq와 Attention

해당 포스팅은 AIFFEL에서 제공한 학습자료를 통해 공부한 것을 정리한 것임을 밝힙니다. 학습 목표 언어 모델이 발전해 온 과정을 개략적으로 파악한다. 기존 RNN 기법이 번역에서 보인 한계를 파악하고, 이를 개선한 Seq2seq를 이해한다. Seq2seq를 발전시킨 Attention에 대해 알아본다. 1. 우리가 만드는 언어 모델 언어모델(Language Model)이란, 주어진 단어들을 보고 다음 단어를 맞추는 모델이다. 즉, 단어의 시퀀스를 보고 다음 단어에 확률을 할당하는 모델이다. 언어 모델은 n-1개의 단어 시퀀스가 주어졌을 때, n번째 단어로 무엇이 올지 예측하는 확률 모델로 표현된다. 파라미터 θ로 모델링하는 언어 모델을 다음과 같이 표현할 수 있다. 1.1 통계적 언어 모델(Statis..

[FUN] 6. 파이썬으로 코딩 시작하기

해당 포스팅은 AIFFEL에서 제공한 학습자료를 통해 공부한 것을 정리한 것임을 밝힙니다. 1. 함수 인자 (argument) : 입력값 매개변수 (parameter) : 인자를 받는 변수 def say_hi_somebody(name): print(name + ', 안녕!') say_hI_somebody('준이') → name : 매개변수, '준이' : 인자 2. 스코프(scope) : 변수가 유효한 범위 name = '하루' def change_name(): name = '시우' change_name() print(name) → 함수 내에서 선언한 '시우'는 함수 밖에서는 알 순 없으니 change_name()에서 출력이 되지 않음. → print(name)에서 '하루'만 출력이 됨. ▶ 전역스코프(g..

AIFFEL/Fundamental 2022.03.29

[Going Deeper(NLP)] 6. 임베딩 내 편향성 알아보기

해당 포스팅은 AIFFEL에서 제공한 학습자료를 통해 공부한 것을 정리한 것임을 밝힙니다. 학습 목표 데이터의 편향성에 대한 문제의식을 갖는다. 임베딩 모델의 편향성을 체크하는 방법 중 하나인 Word Embedding Association Test (WEAT)를 알아본다. WEAT 수식의 의미를 이해하고 이를 구현해본다. pre-train된 모델을 불러와서 WEAT score를 구해본다. 목차 워드 임베딩의 편향성 WEAT를 통한 편향성 측정 WEAT 구현하기 사전학습된 Word Embedding에 WEAT 적용 직접 만드는 Word Embedding에 WEAT 적용(1) 직접 만드는 Word Embedding에 WEAT 적용(2) 프로젝트 : 모든 장르 간 편향성 측정해 보기 참고 자료 아마존 채용 ..

[Going Deeper(NLP)] 5. 워드 임베딩

해당 포스팅은 AIFFEL에서 제공한 학습자료를 통해 공부한 것을 정리한 것임을 밝힙니다. 1. 벡터화 기계는 텍스트보다 수치화된 숫자를 더 잘 처리할 수 있기에 기계가 자연어 처리를 원활히 할 수 있도록, 전처리 과정에서 텍스트를 벡터로 변환하는 벡터화(Vectorization)라는 과정을 거친다. 텍스트를 벡터화하는 방법을 정리해보자. 1.1 Bag of words / DTM(Document-Term Matrix) [Going Deeper(NLP)] 3. 텍스트의 분포로 벡터화 하기 해당 포스팅은 AIFFEL에서 제공한 학습자료를 통해 공부한 것을 정리한 것임을 밝힙니다. 목차 단어 빈도를 이용한 벡터화 (1) Bag of Words (2) Bag of Words 구현해보기 (3) DTM과 코사인 유..

[Going Deeper(NLP)] 3. 텍스트의 분포로 벡터화 하기

해당 포스팅은 AIFFEL에서 제공한 학습자료를 통해 공부한 것을 정리한 것임을 밝힙니다. 목차 단어 빈도를 이용한 벡터화 (1) Bag of Words (2) Bag of Words 구현해보기 (3) DTM과 코사인 유사도 (4) DTM의 구현과 한계점 (5) TF-IDF (6) TF-IDF 구현하기 LSA와 LDA (1) LSA (2) LSA 실습 (3) LDA (4) LDA 실습 텍스트 분포를 이용한 비지도 학습 토크나이저 (1) 형태소 분석기와 단어 미등록 문제 (2) soynlp 1. 단어 빈도를 이용한 벡터화 머신러닝 모델은 기계이기에 텍스트보다 수치화된 숫자를 잘 처리할 수 있다. 그래서 자연어 처리에서는 전처리 과정에서 텍스트를 숫자 벡터로 변환하는 벡터화(Vectorization)를 거친..

[Going Deeper(NLP)] 2. 멋진 단어사전 만들기

해당 포스팅은 AIFFEL에서 제공한 학습자료를 통해 공부한 것을 정리한 것임을 밝힙니다. 준비물 KoNLPy의 Mecab 클래스를 활용하여 실습하고자 한다. from konlpy.tag import Mecab mecab = Mecab() print(mecab.morphs('자연어처리가너무재밌어서밥먹는것도가끔까먹어요')) ['자연어', '처리', '가', '너무', '재밌', '어서', '밥', '먹', '는', '것', '도', '가끔', '까먹', '어요'] 1. 데이터 다운로드 및 분석 import os import matplotlib.pyplot as plt import tensorflow as tf import numpy as np %matplotlib inline 학습환경을 구성하고 데이터를 ..

반응형