What is Natural Language Processing(NLP)?
30 Oct 2019 | NLP
NLP란 컴퓨터가 인간의 언어를 이해할 수 있게 처리하는 것이 NLP이다. 인간은 언어라는 도구로 구어와 문어를 구사한다. 컴퓨터는 인간이 둘 중 어떤 방식으로 언어를 전달하더라도 그의 의미를 이해할 수 있어야한다. 컴퓨터가 인간의 언어를 이해하기 위해서 우선 언어의 형태를 분석하고(형태소 분석) 그를 기반으로 각각의 의미를 분석한 후 전체 의미를 해석할 수 있어야한다. 예를 들어 누군가 완벽히 조립해 놓은 레고 모형이 있다고 생각해보자. 이 모형이 어떻게 만들어진 것인지 알기 위해 우선 레고를 하나하나 분해 한 후 각각의 레고 조각들이 어느 부위에서 어떻게 쓰였던 것인지 그의 역할에 대해 생각해 보고 다시 그 레고를 스스로 조립해보면 해당 모형에 대해 이해할 수 있을 것이다. 이와 같은 흐름으로 컴퓨터는 인간의 언어를 이해한다. NLP의 최종 목표는 다양한 task(질의 응답, 번역, 다양한 업무 수행, 예약하기, 물건구매 등)를 처리하기 위해 컴퓨터가 자연어를 완벽히 이해할 수 있도록 하는 것이다.
현재 NLP 응용분야로는 맞춤법 검사, 키워드 검색, 동의어 탐색, 정보 추출, 문서 분류, 기계번역, 질의응답 등이 있다.
What’s Natural Language?
자연어란 인간이 일상 생활에서 사용하는 언어를 가리킨다. 인간의 언어는 인간이 의사소통에서 사용하는 도구로 표현될 수 있는데 언어라는 도구를 사용하여 인간은 서로 신호를 보내고 받는 행위를 한다. 일반적으로 언어라 통칭되는 것은 linguistic entity가 아니라 단순 symbol이다. 즉, 하나의 단어는 기의(시니피에)과 기표(시니피앙)을 mapping한 것이다. 예를 들어 “책상”이라는 단어는 해당 물체를 가리키는 단어이다. Symbol은 여러 방식으로 표현될 수 있는데 어떠한 방식으로든 언어는 연속적인 신호들(continuous signals)로 뇌에 전달된다. (기호학)
이러한 행위는 위에서 언급한 바와 같이 구어 혹은 문어로 표현될 수 있다. 어떠한 방식으로 표현이 되어도 본질적으로 전달하려는 의미는 변하지 않는다. 따라서 컴퓨터가 자연어를 완벽히 처리하기 위해서는 자연어가 어떤 방식으로 들어가도 모두 이해할 수 있어야 한다.
What’s Deep Learninig?
딥러닝은 머신러닝의 하위 분야이다. 머신러닝은 human-designed representations과 input features로 기계를 학습시킨다. 뒤에서 에서 더 자세히 다룰 것이지만 간단히 말하자면 기계학습은 위에서 언급한 human-designed representations과 input features와 같이 정해진 condition 즉, 인간이 선택한 Feature로 최적의 결과를 예측할 수 있는 “weight(parameter)”(변수값)를 찾는 optimization 역할을 한다. 여기에서 과거 머신러닝을 통해 이루어지던 자연어처리가 큰 성과를 거두지 못한 이유가 드러난다. 인간이 사용하는 언어를 기계에 학습시키기 위해 인간이 학습시킬 Feautre들을 선택하는 것은 너무 인간 중심적 생각이다. 물론 인간이 중심이 되어야 하지만, 선생님이 학생들의 눈높이에 맞춰 강의를 진행하지 않고 본인 지식을 중심으로 강의를 진행한다면 학생들은 강의 내용을 제대로 이해하지 못 할 것이다. 가장 좋은 방법은 학생들에게 날것의 지식을 던져주고 자유롭게 창의성을 키우도록 길을 잡아주는 것이다. 자연어처리도 마찬가지이다. 인간은 선생이고 기계가 학생인 입장에서 가장 좋은 방법은 기계에게 raw-data를 던져주고 기계가 자동으로 그의 Features를 찾아 그를 기반으로 optimizing하는 것이다. 이는 딥러닝(Deep Neural Network)을 통해 가능하기 때문에 딥러닝이 도입된 후 자연어처리가 빛을 보기 시작한 것이다. (딥러닝에서는 지도학습(supervised)과 비지도학습(unsupervised)이 모두 가능하다.)
딥러닝 알고리즘은 위에서 언급한 바와 같이 머신러닝 알고리즘보다 뛰어난 성능을 자랑하며 많은 관심을 받고 있다. 딥러닝이 가능해진 이유는 크게 컴퓨터 성능의 발전과 새로운 모델, 알고리즘 그리고 아이디어들의 등장 덕분이다. 컴퓨터 성능의 발전으로 많은 양의 데이터를 빠르게 처리할 수 있게 되었고 이를 기반으로 새로운 알고리즘과 모델들을 구현할 수 있게 되었다.
딥러닝은 세상에 대한, 즉 시각적으로 존재하는 것들 혹은 인간이 구사하는 언어와 같은 세상에 대한 정보를 flexible하고 universal하며 learnable한 framework를 제공한다.
딥러닝이 raw-data의 Features를 찾아내는 방식은 이후 더 자세히 다룰 것이지만 여기에서 한번개괄적으로 설명하고 지나가겠다.

이 그림에서 보이는 동그라미들을 Neuron이라고 부른다. 딥러닝에서는 그림과 같은 구조 통해 Neuron들이 input data(x)의 features를 찾아낸다. 그림을 예로 들자면 위와 같은 구조를 통해 기계는 고양이에 대한 정보를 고양이의 얼굴, 꼬리, 발, 털 등으로 분해하여 각각의 Neuron에 담아 고양이에 대한 정보를 학습한다. 이처럼 딥러닝은 raw data(e.g., sound, characters of words)인 input data로부터 좋은 features를 자동으로 추출하여 학습하는데 이를 다른 말로 Representation learning이라고도 한다.
Reference
Francois Chaubard, Michael Fang, Guillaume Genthial, Rohit Mundra, Richard Socher.”CS224n: Natural Language Processing with Deep Learning: Part1,”(winter 2017)
NLP란 컴퓨터가 인간의 언어를 이해할 수 있게 처리하는 것이 NLP이다. 인간은 언어라는 도구로 구어와 문어를 구사한다. 컴퓨터는 인간이 둘 중 어떤 방식으로 언어를 전달하더라도 그의 의미를 이해할 수 있어야한다. 컴퓨터가 인간의 언어를 이해하기 위해서 우선 언어의 형태를 분석하고(형태소 분석) 그를 기반으로 각각의 의미를 분석한 후 전체 의미를 해석할 수 있어야한다. 예를 들어 누군가 완벽히 조립해 놓은 레고 모형이 있다고 생각해보자. 이 모형이 어떻게 만들어진 것인지 알기 위해 우선 레고를 하나하나 분해 한 후 각각의 레고 조각들이 어느 부위에서 어떻게 쓰였던 것인지 그의 역할에 대해 생각해 보고 다시 그 레고를 스스로 조립해보면 해당 모형에 대해 이해할 수 있을 것이다. 이와 같은 흐름으로 컴퓨터는 인간의 언어를 이해한다. NLP의 최종 목표는 다양한 task(질의 응답, 번역, 다양한 업무 수행, 예약하기, 물건구매 등)를 처리하기 위해 컴퓨터가 자연어를 완벽히 이해할 수 있도록 하는 것이다.
현재 NLP 응용분야로는 맞춤법 검사, 키워드 검색, 동의어 탐색, 정보 추출, 문서 분류, 기계번역, 질의응답 등이 있다.
What’s Natural Language?
자연어란 인간이 일상 생활에서 사용하는 언어를 가리킨다. 인간의 언어는 인간이 의사소통에서 사용하는 도구로 표현될 수 있는데 언어라는 도구를 사용하여 인간은 서로 신호를 보내고 받는 행위를 한다. 일반적으로 언어라 통칭되는 것은 linguistic entity가 아니라 단순 symbol이다. 즉, 하나의 단어는 기의(시니피에)과 기표(시니피앙)을 mapping한 것이다. 예를 들어 “책상”이라는 단어는 해당 물체를 가리키는 단어이다. Symbol은 여러 방식으로 표현될 수 있는데 어떠한 방식으로든 언어는 연속적인 신호들(continuous signals)로 뇌에 전달된다. (기호학)
이러한 행위는 위에서 언급한 바와 같이 구어 혹은 문어로 표현될 수 있다. 어떠한 방식으로 표현이 되어도 본질적으로 전달하려는 의미는 변하지 않는다. 따라서 컴퓨터가 자연어를 완벽히 처리하기 위해서는 자연어가 어떤 방식으로 들어가도 모두 이해할 수 있어야 한다.
What’s Deep Learninig?
딥러닝은 머신러닝의 하위 분야이다. 머신러닝은 human-designed representations과 input features로 기계를 학습시킨다. 뒤에서 에서 더 자세히 다룰 것이지만 간단히 말하자면 기계학습은 위에서 언급한 human-designed representations과 input features와 같이 정해진 condition 즉, 인간이 선택한 Feature로 최적의 결과를 예측할 수 있는 “weight(parameter)”(변수값)를 찾는 optimization 역할을 한다. 여기에서 과거 머신러닝을 통해 이루어지던 자연어처리가 큰 성과를 거두지 못한 이유가 드러난다. 인간이 사용하는 언어를 기계에 학습시키기 위해 인간이 학습시킬 Feautre들을 선택하는 것은 너무 인간 중심적 생각이다. 물론 인간이 중심이 되어야 하지만, 선생님이 학생들의 눈높이에 맞춰 강의를 진행하지 않고 본인 지식을 중심으로 강의를 진행한다면 학생들은 강의 내용을 제대로 이해하지 못 할 것이다. 가장 좋은 방법은 학생들에게 날것의 지식을 던져주고 자유롭게 창의성을 키우도록 길을 잡아주는 것이다. 자연어처리도 마찬가지이다. 인간은 선생이고 기계가 학생인 입장에서 가장 좋은 방법은 기계에게 raw-data를 던져주고 기계가 자동으로 그의 Features를 찾아 그를 기반으로 optimizing하는 것이다. 이는 딥러닝(Deep Neural Network)을 통해 가능하기 때문에 딥러닝이 도입된 후 자연어처리가 빛을 보기 시작한 것이다. (딥러닝에서는 지도학습(supervised)과 비지도학습(unsupervised)이 모두 가능하다.)
딥러닝 알고리즘은 위에서 언급한 바와 같이 머신러닝 알고리즘보다 뛰어난 성능을 자랑하며 많은 관심을 받고 있다. 딥러닝이 가능해진 이유는 크게 컴퓨터 성능의 발전과 새로운 모델, 알고리즘 그리고 아이디어들의 등장 덕분이다. 컴퓨터 성능의 발전으로 많은 양의 데이터를 빠르게 처리할 수 있게 되었고 이를 기반으로 새로운 알고리즘과 모델들을 구현할 수 있게 되었다.
딥러닝은 세상에 대한, 즉 시각적으로 존재하는 것들 혹은 인간이 구사하는 언어와 같은 세상에 대한 정보를 flexible하고 universal하며 learnable한 framework를 제공한다.
딥러닝이 raw-data의 Features를 찾아내는 방식은 이후 더 자세히 다룰 것이지만 여기에서 한번개괄적으로 설명하고 지나가겠다.

이 그림에서 보이는 동그라미들을 Neuron이라고 부른다. 딥러닝에서는 그림과 같은 구조 통해 Neuron들이 input data(x)의 features를 찾아낸다. 그림을 예로 들자면 위와 같은 구조를 통해 기계는 고양이에 대한 정보를 고양이의 얼굴, 꼬리, 발, 털 등으로 분해하여 각각의 Neuron에 담아 고양이에 대한 정보를 학습한다. 이처럼 딥러닝은 raw data(e.g., sound, characters of words)인 input data로부터 좋은 features를 자동으로 추출하여 학습하는데 이를 다른 말로 Representation learning이라고도 한다.
Reference
Francois Chaubard, Michael Fang, Guillaume Genthial, Rohit Mundra, Richard Socher.”CS224n: Natural Language Processing with Deep Learning: Part1,”(winter 2017)