본문 바로가기

자연어처리

(5)
자연어처리(5) - Word2Vec 들어가기전에 다시 처음으로 돌아가서 우리는 문서를 분석할때 가장 먼저 하는 일은 토큰화해서 쪼개는 일이였다. 쪼개고 나면 우리는 단어 사전을 가지게 된다. 우리는 그 단어 사전에 있는 단어들을 컴퓨터가 특정 연산을 할 수 있도록 뭔가 수치화해야한다. one-hot-encoding이라는 방법이 있었는데 one-hot-encoding은 단어사전에서 특정 단어의 인덱스를 통해서 벡터로 표현만 해줄 뿐이지 각 단어들간의 관계( 유사도 등)는 전혀 담을 수가 없다. ( 총 5개 단어들을 가지는 단어사전에서 3번째 단어를 [ 0 0 1 0 0 ] 로 인코딩 하는 방식 ) 위와 같은 단순한 인코딩으로는 단어의 의미를 녹여내는 것에 문제가 있고 sparse 하기 때문에 메모리의 낭비가 심하므로 embedding이 필요..
자연어처리 스터디기록(3)-딥러닝 정리 개인적으로 공부한 것을 정리한 내용이므로 틀린 곳이 있을 수 있습니다 자연어처리 모델들을 본격적으로 보려고 하기 시작하니까 필연적으로 머신러닝/딥러닝에 대한 이야기들이 나오기 시작했다. 웹개발에 집중하다보니 전에 공부했던 딥러닝 내용들을 많이 잊어버렸는데 다시 떠올려봐야겠다. 문제해결 패러다임의 변화!! 기존에는 "문제해결"이라고 하면 알고리즘을 많이 떠올렸다. 알고리즘이란 어떠한 문제를 해결하는 정확한 일련의 방법들이다. 이렇게 알고리즘이라고 정의할 수 있으려면 몇가지 필요조건들이 있다. 1. 입력 2. 출력 3. 명확성 4. 유한성 5. 실현가능성 위의 조건들을 통해 다시 정리하자면 알고리즘은 입력과 출력을 만들기 위해 유한번 실행되는 명확하고 실현가능한 명령들의 나열이라고 정의할 수 있을 것이다. ..
자연어처리 스터디(4)- neural language model NPLM(Neural Probabilistic Language Model) 앞서 "단어가 어떤 순서로 쓰였는가"의 철학으로 만든 모델 n-gram 모델의 문제점은 바로 n을 크게 하면 할 수록 많은 단어들의 history를 확인해야 하는데 만약 예측단계에서 들어온 단어가 history에 등장하지 않은 단어라면 굉장히 자연스러운 문장이 자연스러울 확률이 0이 나오는 대참사가 일어나게 되는 문제점이였다. 정리하면 학습 데이터에 존재하지 않는 n-gram이 포함된 문장이 나타날 확률을 0으로 매긴다 n을 5이상으로 설정하기 어렵기 때문에 문장의 장기 의존성을 포착해내기 어렵다. 단어/문장 간 유사도는 고려조차 하지 않는다. neural net을 쓰기 이전에는 smoothing( 작은 상수를 더해서 0이 안나오..
자연어처리 스터디 기록(2)-임베딩의 의미 벡터가 어떻게 의미를 가지는가 컴퓨터가 자연어를 처리하는 과정의 본질은 결국은 계산일뿐이다. 다만 여기서 계산이란 자연어를 임베딩한 벡터를 이용한 계산을 의미한다. 그렇다면 자연어의 의미를 어떻게 임베딩에 함축시킬 수 있을까 자연어의 통계적 정보를 임베딩에 넣는 방법이 있다. 이때 통계정보는 크게 3가지가 있다. 백오브워즈/언어모델/분포 가정 백오브워즈 가정 언어 모델 분포 가정 내용 어떤 단어가 많이 쓰였는가 단어가 어떤 순서로 쓰였는가 어떤 단어가 같이 쓰였는가 대표 통계량 TF-IDF - PMI 대표 모델 Deep Averaging Network ELMo, GPT Word2Vec 백오브워즈(bag of words) 가정 "bag"은 집합을 의미한다. 집합이기때문에 원소의 순서는 당연히 고려되지 않는..
자연어처리 스터디 기록(1)-임베딩 임베딩이란 자연어처리 분야에서 임베딩이란 사람이 쓰는 자연어를 기계가 이해할 수 있는 숫자의 나열인 벡터로 바꾼 결과 혹은 그 과정 전체를 의미한다. 단어나 문장을 각각 벡터로 변환해서 벡터공간으로 끼워 넣는다. 이 "끼워넣는다"라는 의미에서 임베딩이라는 이름이 붙었다. 임베딩의 예시로는 단어의 빈도를 벡터로 사용한 경우이다. 아래 표는 특히 단어-문서 행렬[Term-Document-Matrix] 이라고 한다 메밀꽃 필 무렵 운수 좋은 날 사랑 손님과 어머니 삼포 가는 길 기차 0 1 9 8 막걸리 1 2 3 5 선술집 2 8 0 3 위의 표에서 [운수 좋은 날]의 임베딩은 [ 1, 2, 8 ] 이다. [막걸리]라는 단어의 임베딩은 [ 1, 2 , 3, 5] 이다 임베딩의 역할 임베딩은 단어/문장간 관련..