자연어 처리 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
'''자연어 처리'''(natural language processing)란 컴퓨터를 이용하여 인간의 언어를 이해하고 생성 및 분석하는 [[인공지능 기술]]이다. 인간의 언어 현상을 컴퓨터와 같은 기계를 이용해서 모사할 수 있도록 연구하고 이를 구현하는 [[인공지능]]의 주요 분야 중 하나이다. 영어 약자로 '''NLP'''(엔엘피)라고 한다. 자연어 처리는 연구대상이 언어학과 언어 현상의 내적 기재를 탐구하는 언어 인지 과학과 연관이 있다. 구현을 위해 수학적 통계적 도구가 많이 활용되며, 기계 학습 도구가 많이 사용된다.  
+
'''자연어 처리'''(natural language processing)란 컴퓨터를 이용하여 인간의 언어를 이해하고 생성 및 분석하는 [[인공지능 기술]]이다. 인간의 언어 현상을 컴퓨터와 같은 기계를 이용해서 모사 할 수 있도록 연구하고 이를 구현하는 인공지능의 주요 분야 중 하나다. 자연어 처리는 연구대상이 언어학과 언어 현상의 내적 기재를 탐구하는 언어 인지 과학과 연관이 있다. 구현을 위해 수학적 통계적 도구가 많이 활용되며, 기계 학습 도구가 많이 사용된다.  
  
 
== 개요 ==
 
== 개요 ==
248번째 줄: 248번째 줄:
  
 
=== 순환 신경망 ===
 
=== 순환 신경망 ===
사용자가 '금강산도'을 입력한 뒤에는 '식후경'이라는 결과값이, '동해물과'을 입력한 뒤에는 '백두산이'라는 결과값이 나올 것이라고 대부분의 사람이 그렇게 예측한다. 순환신경망은 이러한 글이나 문장을 보고 앞뒤의 데이터 간의 연관성을 파악하여 완성시키는 알고리즘이다. 인공 신경망의 한 종류이며, 순차적인 정보를 처리하는 네트워크이다. 시간에 흐름에 따라 변화하는 데이터를 학습하기 위한 인공신경망으로, 과거에 출력했던 데이터를 기억해서 재귀적으로 참조한다.<ref name="인공지능의 이해 (5/6): 순환 신경망(RNN)"> 라인하트, 〈[https://brunch.co.kr/@linecard/324 인공지능의 이해 (5/6): 순환 신경망(RNN)]〉, 《브런치》, 2019-11-11</ref> 유닛 간의 연결이 순환적 구조인 것이 특징이며, 이러한 구조는 시변적 동적 특징을 모델링 할 수 있도록 신경망 내부에 상태를 저장할 수 있도록 해준다. 내부의 메모리를 사용하여 시퀀스 형태의 입력을 처리할 수 있기 때문에 필기체 인식, 음성 인식, 랭귀지 모델링, 기계번역, 이미지 캡셔닝과 같이 다소 변동이 있을 수 있는 데이터를 처리 할 수 있다는 장점이 있다. 전통적인 뉴럴 네트워크와는 달리 모든 입력값이 독립적이라고 가정하는 특징이 있으며, 순환 신경망(Recurrent Neural Networks)의 'recurrent'는 모델이 입력 시퀀스의 각 인스턴스에 같은 작업을 수행하며, 아웃풋은 이전 결과에 의존하기 때문에 생긴 명칭이다. 유닛에 토큰을 하나씩 입력하면 시퀀스를 표현하기 위해 일정한 크기의 벡터가 생성된다. 순환 신경망은 이 과정에서 기억한 연산 결과를 연산 과정에 활용한다.<ref>순환 신경망 위키백과 - https://ko.wikipedia.org/wiki/%EC%88%9C%ED%99%98_%EC%8B%A0%EA%B2%BD%EB%A7%9D</ref>  
+
사용자가 '금강산도'을 입력한 뒤에는 '식후경'이라는 결과값이, '동해물과'을 입력한 뒤에는 '백두산이'라는 결과값이 나올 것이라고 대부분의 사람이 그렇게 예측한다. 순환신경망은 이러한 글이나 문장을 보고 앞뒤의 데이터 간의 연관성을 파악하여 완성시키는 알고리즘이다. 인공 신경망의 한 종류이며, 순차적인 정보를 처리하는 네트워크이다. 시간에 흐름에 따라 변화하는 데이터를 학습하기 위한 인공신경망으로, 과거에 출력했던 데이터를 기억해서 재귀적으로 참조한다.<ref> 라인하트, 〈[https://brunch.co.kr/@linecard/324 인공지능의 이해 (5/6): 순환 신경망(RNN)]〉, 《브런치》, 2019-11-11</ref> 유닛 간의 연결이 순환적 구조인 것이 특징이며, 이러한 구조는 시변적 동적 특징을 모델링 할 수 있도록 신경망 내부에 상태를 저장할 수 있도록 해준다. 내부의 메모리를 사용하여 시퀀스 형태의 입력을 처리할 수 있기 때문에 필기체 인식, 음성 인식, 랭귀지 모델링, 기계번역, 이미지 캡셔닝과 같이 다소 변동이 있을 수 있는 데이터를 처리 할 수 있다는 장점이 있다. 전통적인 뉴럴 네트워크와는 달리 모든 입력값이 독립적이라고 가정하는 특징이 있으며, 순환 신경망(Recurrent Neural Networks)의 'recurrent'는 모델이 입력 시퀀스의 각 인스턴스에 같은 작업을 수행하며, 아웃풋은 이전 결과에 의존하기 때문에 생긴 명칭이다. 유닛에 토큰을 하나씩 입력하면 시퀀스를 표현하기 위해 일정한 크기의 벡터가 생성된다. 순환 신경망은 이 과정에서 기억한 연산 결과를 연산 과정에 활용한다.<ref>순환 신경망 위키백과 - https://ko.wikipedia.org/wiki/%EC%88%9C%ED%99%98_%EC%8B%A0%EA%B2%BD%EB%A7%9D</ref>  
  
 
* '''필요성''' : 순환 신경망은 데이터를 순차적으로 처리하는 성질을 지니기 때문에, 단어와 단어 사이에서 언어의 고유한 순차적 성격을 알아낼 수 있다. 또한, 매우 긴 문장이나 단락, 문서를 포함하여 다양한 길이의 글을 모델링할 수 있기때문에, 시퀀스 모델링에 적합하다. 컨볼루션 신경망과 달리 제한없이 글을 포착할 수 있는 유연성도 지니고 있으며, 처음부터 문맥 의존성을 모델링하기 위해 만들어졌다. 시간 분산 조인트 처리를 위한 네트워크를 지원하는 등 많은 장점을 가지고 있다. 컨볼루션 신경망과 비교되기도 하는데, 두 방식은 문장을 모델링하는 목적이 다르므로 어느쪽이 더 낫다고 단정할수는 없다. 컨볼루션 신경망은 n-gram을 추출하려고 하고, 순환 신경망은 경계가 없는 긴 문장을 생성하는 것이 목적이다. 둘 모두 n-gram의 피처를 잡는데는 효율적일지 몰라도, 단어 순서에 관한 민감도는 어느정도 제한되는 부분이 있다.<ref name = "딥러닝 기반 자연어처리 기법의 최근 연구 동향"></ref>
 
* '''필요성''' : 순환 신경망은 데이터를 순차적으로 처리하는 성질을 지니기 때문에, 단어와 단어 사이에서 언어의 고유한 순차적 성격을 알아낼 수 있다. 또한, 매우 긴 문장이나 단락, 문서를 포함하여 다양한 길이의 글을 모델링할 수 있기때문에, 시퀀스 모델링에 적합하다. 컨볼루션 신경망과 달리 제한없이 글을 포착할 수 있는 유연성도 지니고 있으며, 처음부터 문맥 의존성을 모델링하기 위해 만들어졌다. 시간 분산 조인트 처리를 위한 네트워크를 지원하는 등 많은 장점을 가지고 있다. 컨볼루션 신경망과 비교되기도 하는데, 두 방식은 문장을 모델링하는 목적이 다르므로 어느쪽이 더 낫다고 단정할수는 없다. 컨볼루션 신경망은 n-gram을 추출하려고 하고, 순환 신경망은 경계가 없는 긴 문장을 생성하는 것이 목적이다. 둘 모두 n-gram의 피처를 잡는데는 효율적일지 몰라도, 단어 순서에 관한 민감도는 어느정도 제한되는 부분이 있다.<ref name = "딥러닝 기반 자연어처리 기법의 최근 연구 동향"></ref>
255번째 줄: 255번째 줄:
  
 
  <math>y_{t}=W_{hy}h_{t}</math>
 
  <math>y_{t}=W_{hy}h_{t}</math>
  <math>h_{t}=tanh</math><math>(W_{hh}h_{t-1}+W_{xh}X_{t})</math>
+
  <math>h_{t}=tanh(W_{hh}h_{t-1}+W_{xh}X_{t})</math>
  
<math>h_{t-1}</math>은 이전 상태값을 나타내고, 인공지능은 현재 상태값을 계산하기 위해 이전상태값을 매번 참조한다. 즉, <math>y_{t}</math>는 <math>h_{t}</math> 값에 가중치 <math>w_{hy}</math>를 곱한 결괏값이다. 학습 단계에서 이 가중치 <math>w_{hy}</math>는 특정 값에서는 확신이 높고, 다른 값에서는 확신이 낮게 설정되도록 조정해야만 한다. 이 과정에서 은닉층이 여러 층 반복되면 다소 문제가 발생할 수도 있는데, 이를 해결하기 위해서 장단기 메모리(LSTM)가 사용되기도 한다.<ref name="인공지능의 이해 (5/6): 순환 신경망(RNN)"></ref>
+
<math>h_{t-1}</math>은 이전 상태값을 나타내고, 인공지능은 현재 상태값을 계산하기 위해 이전상태값을 매번 참조한다. 즉, <math>y_{t}</math>는 <math>h_{t}</math> 값에 가중치 <math>w_{hy}</math>를 곱한 결괏값이다. 학습 단계에서 이 가중치 <math>w_{hy}</math>는 특정 값에서는 확신이 높고, 다른 값에서는 확신이 낮게 설정되도록 조정해야만 한다. 이 과정에서 은닉층이 여러 층 반복되면 다소 문제가 발생할 수도 있는데, 이를 해결하기 위해서 장단기 메모리(LSTM)가 사용되기도 한다.<ref> 라인하트, 〈[https://brunch.co.kr/@linecard/324 인공지능의 이해 (5/6): 순환 신경망(RNN)]〉, 《브런치》, 2019-11-11</ref>
  
 
== 활용 ==
 
== 활용 ==
273번째 줄: 273번째 줄:
  
 
===사례===
 
===사례===
* '''Wordrep''' : [[카카오브레인]]은 2017년에 설립된 [[㈜카카오]]의 자회사이자 인공지능 연구소이다. Wordrep은 카카오브레인에서 2018년 진행했던 프로젝트이며, 유의미한 단어 간의 관계 데이터를 제공하자는 취지로 진행됐다. 국내에는 다양한 목적의 어휘 관계 사전이 개발되고 있으나, 이러한 대규모 사전을 편집하는데 투입되는 인력과 자금은 많지 않아 시간이 오래 걸린다는 문제가 발생하고 있다. 카카오브레인은 유의어와 반의어에 대해 알고 싶은 전 세계의 작가나 기자 등을 위해 다국어 서비스를 지원하겠다는 것이 목표였고, 단어 벡터 사전의 수집, 불필요한 자원 절약, 유사 단어 검색과 시각화 등의 단계를 거쳐 단어 간의 유사도를 표현해냈다. 자연어 문제를 해결할 때마다 단어 임베딩을 수행하는 것은 매우 비효율적이다. 카카오브레인은 페이스북이 페스트테스트(FastText) 임베딩 기법을 이용하여 생성한 벡터 사전을 이용하여 이를 해결했다.<ref name="인공지능의 이해 (5/6): 순환 신경망(RNN)"></ref>
 
 
 
* ''' 자연어 API ''' : 2017년 11월 27일, 구글 클라우드 플랫폼(GCP)에서 자연어 API를 배포했다.<ref name="구글 클라우드 홈페이지 자연어"> 구글 클라우드 홈페이지 자연어 - https://cloud.google.com/natural-language/</ref> 자연어 API는 영어뿐만 아니라 한국어, 중국어, 일본어, 이탈리어어, 독일어, 스페인어 등 다양한 언어의 분석이 가능하고, 일부 기술은 영어에만 적용이 된다. 구글 자연어 API에서는 감성 분석, 엔티티 분석, 구문 분석, 엔티티 감성 분석, 내용 분류 다섯 가지 메소드를 제공했는데, 엔티티 감성 분석과 내용 분류는 영어에만 기능이 적용된다. 감성 분석의 경우, 감성을 정향화한 스코어와, 스코어의 정도를 나타내는 수치로 나누어 점수를 매긴다. 감성을 정향화한 스코어는 -1에 가까우면 부정, +1에 가까우면 긍정의 의미를 갖게 되고, 스코어의 정도를 나타내는 수치는 0에서 무한대의 값을 가진다. 만약 긍정적인 문장 세 줄과 부정적인 문장 두 줄을 입력할 시, 시스템은 스코어와 수치를 계산하여 긍정적인 문서라고 판단한다. 엔티티 분석은 문장에서 고유 명사나 식당, 유명인 단어를 분석한다. 구문 분석은 문장을 토큰 단위로 분리하여 분석한다. 의존성, 품사, 기본형 등 분석 결과를 제공한다.<ref name="구글의 자연어 처리 기술"> 이영민, 〈[https://brunch.co.kr/@mapthecity/25 구글의 자연어 처리 기술]〉, 《브런치》, 2017-11-27</ref>  
 
* ''' 자연어 API ''' : 2017년 11월 27일, 구글 클라우드 플랫폼(GCP)에서 자연어 API를 배포했다.<ref name="구글 클라우드 홈페이지 자연어"> 구글 클라우드 홈페이지 자연어 - https://cloud.google.com/natural-language/</ref> 자연어 API는 영어뿐만 아니라 한국어, 중국어, 일본어, 이탈리어어, 독일어, 스페인어 등 다양한 언어의 분석이 가능하고, 일부 기술은 영어에만 적용이 된다. 구글 자연어 API에서는 감성 분석, 엔티티 분석, 구문 분석, 엔티티 감성 분석, 내용 분류 다섯 가지 메소드를 제공했는데, 엔티티 감성 분석과 내용 분류는 영어에만 기능이 적용된다. 감성 분석의 경우, 감성을 정향화한 스코어와, 스코어의 정도를 나타내는 수치로 나누어 점수를 매긴다. 감성을 정향화한 스코어는 -1에 가까우면 부정, +1에 가까우면 긍정의 의미를 갖게 되고, 스코어의 정도를 나타내는 수치는 0에서 무한대의 값을 가진다. 만약 긍정적인 문장 세 줄과 부정적인 문장 두 줄을 입력할 시, 시스템은 스코어와 수치를 계산하여 긍정적인 문서라고 판단한다. 엔티티 분석은 문장에서 고유 명사나 식당, 유명인 단어를 분석한다. 구문 분석은 문장을 토큰 단위로 분리하여 분석한다. 의존성, 품사, 기본형 등 분석 결과를 제공한다.<ref name="구글의 자연어 처리 기술"> 이영민, 〈[https://brunch.co.kr/@mapthecity/25 구글의 자연어 처리 기술]〉, 《브런치》, 2017-11-27</ref>  
  
315번째 줄: 313번째 줄:
  
 
== 같이 보기 ==
 
== 같이 보기 ==
* [[자연어]]
 
 
* [[인공지능]]
 
* [[인공지능]]
 
* [[딥러닝]]
 
* [[딥러닝]]
  
 
{{인공지능 기술|검토 필요}}
 
{{인공지능 기술|검토 필요}}

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)