1. 클렌징 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import re def data_processing(text): text_re = re.sub('[-=+,#/\?:^$.@*\"※~&%ㆍ!』\\‘|\(\)\[\]\`\'…》]', ' ', text) #Single character removal text_re = re.sub(r"\s+[a-zA-Z]\s+", ' ', text_re) # Removing multiple spaces text_re = re.sub(r'\s+', ' ', text_re) return text_re text = "DF+#$%^ $^&@$%} a " data_processing(text) """ 'DF } ' ..
0. 자연어처리? - 프로그래밍언어처럼 기계가 이해하는 언어가 아닌 한국어, 영어처럼 사람이 사용하는 언어를 기계가 분석하고 이해해서 사람과 커뮤니케이션 할 수 있도록 해주는 연구분야 1. 기계번역이란? - 자연어처리의 하나의 번역 - NLU + NLG 1.1 규칙기반 기계번역 1.2 통계기반 기계번역(SMT, Statistical Machine Translation) - 두 언어의 parallel corpus에서 co-occurance 기반의 통계 정보를 바탕으로 번역을 수행 - 지금 사용 X 1.3 인공신경망 기반 기계번역 (Neural Machine Translation) --> chapter 2 2. 인공신경망 기반 기계번역 (Neural Machine Translation) 2.1 구조 Enco..
0. Language Representation 인간의 언어를 다차원 벡터로 표현하여 컴퓨터가 이해할 수 있도록 하자! 언어를 어떻게 잘 표현해낼 수 있을까? 어떤식으로 표현해야지 좋을까? 어떻게 지식표현 체계로 바꿀 수 있을까? 1. One HOT - 희소표현(Sparse Representation) 과거 word prepresentation 방법은 원핫 인코딩(one-hot encoding) 방식을 주로 사용해왔음 원핫 인코딩을 통해서 원핫 벡터들은 표현하고자 하는 단어의 인덱스의 값만 1이고, 나머지 인덱스에는 전부 0으로 표현 이러한 표현 항식은 단어의 개수가 늘어나면 벡터의 차원이 한없이 커진다. 단어들 간의 관계성을 고려하여 표현하지 않음 2. 워드 임베딩(Word Embedding) 단어를 ..
0. Contextual Representation - 문맥에 따른 다른 단어를 구별할 수 없다. Word2vec이나 Glove같은 경우? - Open a bank(은행) account & On the river bank(둑) ==> 같은 vector로 표현 Contextual Representations 경우? - 문맥에 따라서 Contextual Representation이기 때문에 같은 bank라도 다른 의미로 인식 1. ELMo(Embeddings from Language Model) - LSTM으로 랭귀지 모델을 만든다 - backward & forward 를 각각 더하는것이기 때문에 완전한 양방향이라고 할 수 없다. 2. OpenAI GPT - Transformer 이해 필요 3. BERT -..
1. 자연언어 (Natural Language) * 자연언어란? - 인간 고유의 언어 - 정보 전달의 수단 * 인공언어란? - 특정 목적을 위해 인위적으로 만든 언어 - 자연언어에 비해 엄격한 구문을 가짐 자연언어처리? 일상의 언어를 처리하는 것 * 자연어처리 = 컴퓨터과학 + 인공지능 + 언어학 2. 용어정리 * NLP - Natural Language Processing ( 자연어 처리) * NLU - Natural Language Undertanding(자연언어이해) -> NLP에 속한다 3. 자연어처리가 어려운 이유? - 동일한 표현이 다양한 방법으로 해석될 수 있는 애매성(ambiguity)을 내포 - 형태소 수준의 매매상 - 구문 수준의 애매성 ( 두개의 침실 or 두개의 스위트룸) - 구문적..
[Ubuntu]Anaconda 설치 > wget https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh > bash Anaconda3-5.1.0-Linux-x86_64.sh > source ~/.bashrc #bashrc 활성화 > conda --version # 버전 확인 > conda update conda #아나콘다 업데이트 > conda create --name nlp python=3.6 #가상환경 만들기 > conda info --envs > source activate nlp > conda install notebook ipykernel jupyterlab > jupyter notebook > python -m ipykernel i..
1. 코랩(Colab) 시작하기 1.1. 코랩은 나의 구글 드라이브에서 작동하기 때문에 작업할 폴더를 먼저 만든다. 새로만들기 > 폴더 1.2 Colab Notebook 파일 생성 새로만들기 > Colaboratory 1.3 GPU 설정하기 1.4 코랩 실시하기 필수적인 라이브러리 설치하고 권한을 부여하기 위해 다음 코드를 실행한다 from google.colab import drive drive.mount('/gdrive', force_remount=True) 1. 지수의 네버엔딩 컴공부즈
1. 프리트레인과 파인튜닝 - 프리트레인 - 파인튜닝? 프리트레인 이후 추가 학습을 시행해 임베딩을 다운스트림 태스크에 맞게 업데이트 하는 것 2. 단어 임베딩 활용 - 단어 수준 임베딩 - Word2Vec, FloVe, FastText, Swivel 네트워크에서 사용할 수 있음 (1) 단어임베딩 (2) Bi-LSTM (3) 어텐션(attention) - 딥러닝 모델이 특정 벡터에 주목하게 만들어 모델의 성능을 높이는 기법 (4) 피드포워드 뉴럴 네트워크 (5) 소프트맥스 * 파인튜닝? 임베딩까지 모두 업데이트하는 기법 * 피처베이스(Feature-Based)? 임베딩은 그대로 두고 그 위의 레이어만 학습하는 방법 3. 문장 임베딩 활용 - ELMo 활용 - ELMo가지고 파인튜닝 해보기 출처 1. 한국..
0. 텍스트 유사도(Text Similarity) 텍스트가 얼마나 유사한지를 표현하는 방식 중 하나 딥러닝에서는? 단어, 형태소, 유사도의 종류에 상관없이 딥러닝을 기반으로 텍스트를 벡터화 한 후 벡터화된 각 문장간의 유사도 측정 1. 자카드 유사도(Jaccard Similarity) 두 문장을 각각 단어의 집합으로 만든 뒤 두 집합을 통해 유사도를 측정하는 방식 중 하나 유사도를 측정하는 방법은 두 집합의 교집합인 공통된 단어의 개수를 두집합의 합집합 2. 코사인 유사도 두개의 벡터 값에서 코사인 각도를 구하는 방법 코사인 유사도 값은 -1과 1 사이의 값을 가지고 1에 가까울수록 유사 다른 유사도 접근법에 비해 성능이 좋다. -> 두 벡터간의 각도를 구하는 것이기 때문에 방향성의 개념이 더해진다. 3..
0. 단어 임베딩(Word Embedding)이란? - 단어의 의미를 고려하여 좀 더 조밀한 차원에서 단어를 벡터로 표현하는 것 1. 단어 수준 임베딩 2. 문장 수준 임베딩 2.1 ELMO - ELMo(Embeddings from Language Model) - 미국 연구기관 앨런 에이아이와 미국 워싱턴 대학교 공동 연구팀이 발표한 문장 임베딩 기법 - 전이학습(Transfer learning)을 자연어 처리에 접목 (전이학습? 이미 학습된 모델을 다른 딥러닝 모델의 입력값 또는 부분으로 재사용하는 기법) * ELMo는 크게 3가지 요소로 구성되어 있다. 1. Convolutional Neural Network - 각 단어 내 문자들 사이의 의미적, 문법적 관계를 도출한다. 2. LSTM 레이어 - B..