Yeon's 개발블로그

지식을 전파하는 개발자가 되고싶습니다.

NLP 8

8. 텍스트 분류

텍스트 분류란 문장을 입력으로 받아 사전에 정의된 클래스 중 어디에 속하는지 분류하는 과정을 말한다. 감정분석, 스팸메일탐지, 사용자 의도분류, 카테고리 분류 등 많은 분야로 응용될 수 있다. 전처리를 하는 과정에서 분류를 하기전에 표제어나 어간을 추출의 여부에 대해 무조건적인 답이 정해져 있는 것은 아니다. 딥러닝의 시대에 접어들면서 차원 축소가 가능해졌기 때문에, 희소성에 관련한 문제는 어느정도 해결되었고, 그에 따라 표제어와 어간추출을 하지 않기 시작했다. 처음에는 일단 추출을 하지 않고, 나중에 코퍼스 양의 부족이 성능저하의 원인이 된다면 그때 추출을 시도해보는 것이 좋다. 1. RNN을 활용한 텍스트 분류 파이토치를 활용하여 코드를 구성하였고, LSTM 내부의 각 계층간에는 드롭아웃이 추가되어있..

NLP 2021.07.23

7. 시퀀셜 모델링

1. RNN (Recurrent Neural Network) 자연어 처리 분야에서 문장내 단어들은 순서에 따라 서로 영향을 주고받기때문에 순서 정보가 굉장히 중요하다. 따라서 순서정보를 사용하여 학습하는 것을 시퀀셜 모델링 (Sequential Modeling)이라고 한다. 순환신경망(RNN)은 입력과 그 직전의 hidden state를 참조하여 다음 hidden state를 결정하기 때문에 시퀀셜 모델링이 가능하다. RNN은 foward와 back-propagation 과정을 거치며 학습한다. 1) 피드포워드 함수 f는 xt와 h t-1를 입력으로 받아서 파라미터 Θ를 통해 h t 를 계산한다. ReLU대신 tanh를 활성화 함수로 사용하고, 최종적으로는 각 time-stamp에 대한 손실 L을 구한 ..

NLP 2021.07.23

6. 단어 임베딩

1. 차원축소 높은 차원에서 자연어를 벡터로 추출하는 과정에서 희소성 문제가 많이 나타난다. 따라서 낮은 차원으로 정보를 효율적으로 표현하는 차원축소가 필요하다. 대표적인 차원축소의 방법으로는 주성분 분석(Principal Component Analysis)이 있다. 고차원에서의 데이터를 임의의 평면에 투사했을때 투사한 점들간의 사이가 최대한 멀어야 하며, 투사될때 원래 벡터와 투산된 점의 거리가 최소가 되어야 한다는 조건을 지키며 낮은차원으로 압축하게 된다. 하지만 투사하는 순간 거리가 생기므로, 정보의 손실이 일어날 수 밖에 없기때문에 매니폴드 가설을 통해 좀더 효과적으로 접근해야한다. 매니폴드 가설이란, 높은차원에 존재하는 데이터들의 경우에는 실제로 해당데이터들을 아우르는 낮은 차원의 매니폴드가 존..

NLP 2021.07.21

5. 자연어의 중의성을 해결하는 법

자연어가 가지는 중의성이란? 사람은 주변정보를 사용하여 숨겨진 의미를 파악하지만, 기계에게 주어지는 것은 텍스트이기 때문에 자연어 처리분야에서 중의성을 해결하는 것은 굉장히 중요한 부분이다. 형태는 같으나 뜻은 서로 다른 동형어, 한 형태의 단어가 여러 의미를 지닌 다의어의 경우에는 꼭 중의성을 해소(Word-Sense Disambiguation)하여 의미를 명확히 해야한다. 또한 의미가 같은 단어들은 동의어 집합으로 묶고, 상위어와 하위어의 단어 구조를 계층화하여 자연어처리에 유용하게 쓸 수 있다. 1. 원 핫 인코딩 (One-Hot Encoding) 단 하나의 1과 나머지의 0으로 이루어진 벡터를 이용한 표현방법을 말한다. 벡터의 차원은 전체 어휘의 개수가 되며, 보통 3만에서 10만까지의 범위를 가..

NLP 2021.07.21

4. 전처리

전처리란? 머신러닝 또는 딥러닝 학습을 위해 데이터를 사용할 때, 모델이 사용가능할 수 있는 형태로 변환하고 품질을 올리는 과정을 전처리과정이라고 한다. 자연어처리에서 자주 등장하는 코퍼스(corpus)는 한국말로 말뭉치라고도 하며, 여러 단어들로 이루어진 문장을 뜻한다. 코퍼스가 많고 오류가 없을수록 자연어처리 모델의 정확도가 높아진다. 자연어처리에서 전처리과정은 코퍼스수집-> 정제 -> 문장단위분절 -> 분절 -> 병렬코퍼스 정렬 -> 서브워드 분절 의 과정으로 이루어진다. 이제부터 하나씩 살펴보려고 한다. 1. 코퍼스 수집 공개된 데이터를 사용하거나 크롤링을 통하여 코퍼스를 수집할 수 있다. 한가지 언어로 구성된 단일언어 코퍼스는 인터넷에 널려있기 때문에 수집하기 쉽지만, 목적에 맞게 적절한 코퍼스..

NLP 2021.07.19

3. 파이토치 기초문법

파이토치란(PyTorch)? 구글이 만든 텐서플로우(Tensorflow)에 대항하여 페이스북이 만든 딥러닝 프레임워크이다. 텐서플로우와 달리 대부분의 모듈이 파이썬으로 짜여있어 코드가 깔끔하고, 넘파이(NumPy)와 의 호환성이 뛰어나다. 또한 한줄의 명령어로 역전파 알고리즘을 수행하고, 연산과 동시에 동적그래프가 생성되어 자유로운 수정이 가능하다는 장점이 있다. 1. Tensor 파이토치의 텐서는 넘파이의 배열인 ndarray와 같은 개념이다. 파이토치는 텐서를 통해 값을 저장하고 함수를 수행한다. import torch import numpy as np x=torch.Tensor([[1,2],[3,4]]) y=np.array([[1,2],[3,4]]) 위의 예제에서 파이토치와 넘파이 코드 모두 2*2..

NLP 2021.07.13

2. 자연어처리를 위한 기초수학

1. 확률변수와 확률분포 -확률변수:무작위 실험을 했을때, 특정 확률로 발생하는 결과를 수치적 값으로 표현한 변수이다. -이산확률변수: 랜덤변수는 보통 불연속적인 이산값인 경우가 많은데, 이를 이산확률변수라 한다. 이산적인 확률변수를 갖는 확률 분포로는 베르누이분포와 멀티눌리 분포가 있는데, 베르투이 분포는 0과 1의 값만 가질 수 있고, 멀티눌리 확률분포는 여러개의 이산값을 가질 수 있다. -연속확률변수: 연속적인 값을 다루는 확률변수로, 확률 질량 함수대신 확률 밀도 함수를 통해 정의할 수 있다. 정규분포라고 불리는 가우시안 분포함수가 그 예이다. -결합확률: 2개 이상의 사건이 동시에 일어날 확률을 말하며, 독립사건인 경우 두 확률의 곱으로 표현된다. P(A,B)=P(A)P(b) -조건부확률: 하나..

NLP 2021.07.13

1. 자연어 처리란?

1. 자연어 처리, NLP Natural Language Processing, 줄여서 NLP는 인공지능의 한 분야로, 컴퓨터가 사람의 언어를 이해하고 처리하는 기술을 말한다. 요약, 기계 번역, 감정분석, QA 등 많은곳에서 응용된다. 인간의 언어는 단어간의 순서가 고려되는 시퀀셜 데이터기 때문에 딥러닝 분야에서 상대적으로 나중에 발전되어 왔지만, end to end 모델로 대체되면서 빠르게 발전되어 왔다. *시퀀셜데이터(sequential data): 순차 데이터라고도 하며, 데이터의 집합 내에서 객체들이 순서를 가진 데이터이다. 순서가 변경되면 데이터가 변경된다. *end-to-end: 어떤 문제를 해결함에 있어서 여러가지 과정들을 하나의 신경망을 통해서 재배치 하는과정. 하나의 파이프라인을 하나의 ..

NLP 2021.07.13