반응형

자연어 처리(NLP, Natural Language Processing)

인터넷의 발달과 함께 SNS(페이스북, 트위터, 유튜브, 링크드인, 핀터레스트, 인스타그램, 스냅챗 등)의 등장과 미디어로의 확장은 각 개인의 감정 및 생각을 파악할 수 있는 새로운 장을 열었다고 생각합니다. 하루에도 10억개 이상의 글들이 생성되는 시점에서, 우리는 정보의 홍수 속에 어떤 글, 그림, 동영상을 보아야 할지 파악하기 조차 어렵습니다. 

그래서, SNS와 같은 자연어에서 인사이트(insight)를 뽑아내 활용하는 것이 매우 의미가 있을 것으로 생각합니다.

인터넷을 통해 생성되는 대부분의 텍스트 데이터는 짧은 글(Short text, Small text massages 등)로 되어 있습니다. 이에 텍스트 마이닝(Text mining) 분야에서도 짧은 글을 분석하는 연구들이 많이 진행되고 있다고 합니다. 

특히, 유사도를 비교 분석하는 것은 스펠링 체크, 키워드 서치, 단어들의 읽기 레벨, 부정/긍정, 문서 요약, 문서 분류 등 다양한 어플리케이션 영역에 활용될 수 있기 때문에 짧은 텍스트 간의 유사도(Similarity) 비교하는 연구가 많이 이루어지고 있습니다.  

이번 글에서는 NLP에서 사용하는 몇가지 용어를 정리해 보도록 하겠습니다.


1. 자연어 처리(NLP) 관련해서 나오는 용어들

챗봇(Chatbots) : 채팅 로봇의 줄임말로, 사용자와 메신저가 서로 대화를 나누고 필요한 정보를 서치해서 제공해 주는 AI 기반 커뮤니케이션 소프트웨어(SW)입니다. 정보를 검색해 주거나, 쇼핑 주문을 해 줄 수도 있습니다. 요즘에는 능동적으로 사람의 감정을 읽고 대응하거나 상황에 맞게 먼저 말을 걸 수도 있습니다.

Deep Learning for NLP : 자연어 처리를 위한 딥 러닝이라고 할 수 있습니다. 2000년 초부터 인공신경망은 언어 모형을 구현하기 위해 사용되어 왔습니다. 핵심 기법은 negative sampling과 단어 표현(word embedding)입니다. 

Word2Vec : 데이터 집합으로 주어진 단어들 사이의 관계를 학습하는 인공신경망을 이용하여 단어를 벡터 공간 상에 나타내는 것이라고 할 수 있습니다. 단어 표현을 재귀 신경망(RNN)의 입력 계층으로 이용하면 해당 신경망이 compositional vector grammer를 통해 문장과 구(phrase)를 분석하도록 학습시킬 수 있습니다. 이 compositional vector grammer는 재귀 신경망으로 구현된 probabilistic context free grammar(PCFG)라고 할 수 있습니다. 단어 표현을 기반으로 구성된 Recursivr autoencoder는 문장 간의 유사도 판단과 의역 탐지를 하도록 훈련이 가능합니다. (위키피디아 참조)

RNN(Recurrent Neural Network) 순환 신경망 : 인공신경망을 구성하는 유닛 사이의 연결이 Directed cycle을 구성하는 신경망을 말합니다. 순환 신경망은 임의의 입력을 처리하기 위해 신경망 내부의 메모리를 활용할 수 있습니다. 이러한 특성에 의해 순환 신경망은 필기체 인식(Handwriting recognition)과 같은 분야에 활용되고 있고, 높은 인식률을 나타냅니다. 

RNN(Recursive Neural Network) 재귀 신경망 : tree 구조를 가지는 데이터 처리에 사용합니다. Tree 구조는 언어 분석과 이미지 내부의 물체들의 관계에서 볼 수 있습니다. 사진을 문장으로 자동으로 변환하는 딥러닝 인공신경망에 Recursive Neural Network가 기여하고 있습니다.


2. NLP 활용 전망

자연어 검색(구어와 문어), 온라인 광고 매칭(구글 애드센스), 기계 번역 자동화(구글 번역 등), 마케팅 또는 파이낸스/트레이딩을 위한 정서 분석(물건을 팔고 사기 위한 결정을 도울 수 있는 정보), 음성 인지(알렉사, 구글 홈, 시리 등), 챗봇/다이얼로그 대리인(고객 지원 자동화, 디바이스 콘트롤, 물건 주문) 등 다양한 분야에서 사업이 추진되고 있습니다. 

앞으로 더 많은 분야로 확대되어 사용될 수 있을 것으로 전망하고 있습니다. 


3. Deep Learning이 최근에 뜨는 이유



딥 러닝 기술 자체는 80~90년대에 대부분이 개발되었다고 합니다. 다만 그 기술을 실제 적용할 수 있는 길이 최근에 생긴 것입니다. 


딥러닝에서 학습을 위해 매우 많은 데이터(빅데이터)를 이용한 학습이 매우 중요합니다. 그러나 빅데이터를 반복하여 학습시키는 데는 매우 많은 시간이 걸리게 되는데, 이러한 이유로 컴퓨팅 파워가 약한 과거의 CPU로는 많은 학습 데이터를 처리하는데 너무나 많은 시간이 걸려 실용적이지 못하였습니다.

요즘 CPU는 과거에 비해 비교적 빠른 처리를 할 수 있으나 획기적으로 빠른 학습을 위한 머신은 그래픽카드에 사용되는 GPU를 이용할 수 있게 된 최근 2~3년 동안 딥러닝의 성능이 크게 향상되었고 실용화될 수 있는 기반이 마련되었습니다. 


머신러닝(딥 러닝)을 공부하다 보니, 개념도 생소하지만 용어도 헷갈리는 것이 많습니다. 

앞으로 머릿 속 개념 정리를 위해서라도 용어를 일목요연하게 정리해야겠네요.






반응형
반응형

4차 산업혁명 시대의 데이터 사이언티스트(Data Scientist)를 위한 파이썬 라이브러리(Python Library)

요즘 파이썬을 배워서 진출할 수 있는 직업 중에 데이터 사이언티스트가 핫한 것 같다. 4차 산업혁명과 함께 많이들 선호하고 있는 상태가 되었다.

하지만, 언론, 소셜 등에서 너무 많은 관심을 보이는 것이 거품이 될까 우려가 좀 된다. 2000년 초에 인터넷 기업 붐이 엄청나게 일어나고, 갑자기 거품이 꺼졌을 때 처럼 될 것 같아 보이기 때문이다. 


요즘 가장 열광하는 단어는 단연 AI일 것이라고 생각한다. 

그런데, 머신러닝(machine learning), 그 중에서 딥 러닝(deep learning)에 집중하는 것은 인터넷 자체가 혁신을 일으킬 것처럼 말했던 상황을 답습하는 것이 아닐까 하는 생각이 든다.


가장 중요한 것은 고객에게 제공하는 서비스, 제품일 것이다. 그래서 고객의 요구사항(애로사항)을 파악하는 것이 무엇보다 중요할 것이다. 

이런 관점을 갖고, 데이터와 AI의 결합을 바탕으로 고객들이 원하는 서비스(제품)을 만드는 기업 또는 사람이 되어야 한다고 믿는다.


'소프트웨어(데이터)가 모든 세계를 지배하는 세상'이라는 말은 디지털화된 데이터와 그것을 다루는 기술인 AI(그 중에서 머신 러닝)가 보편화된 세상을 말한다고 본다. 인터넷처럼 우리 생활에 스며들 것이기 때문에,  AI를 다루는 것과 데이터를 다루는 것은 기본이 될 것이다. 

앞으로 이것을 통해 어떤 가치를 고객에게 제공하느냐가 중요한 생존의 문제가 될 것이라는 것이다. 

사람들이 필요로 하는 가치(서비스, 제품)을 제공하는 수준까지 가기 위한 여정을 막 시작했다고 생각한다.

 

그럼, 가장 기본이 되는 라이브러리부터 알아보도록 하자.


데이터 사이언티스트들이 파이썬에서 사용하는 라이브러리들은 Numpy, Scipy, Pandas, Scikit-Learn 등이 있다. 


요즘에는 구글의 딥 러닝 라이브러리인 tensorflow의 인기가 높다.

tensorflow에 대해서는 따로 알아보도록 할 것이다.


1. Numpy, Scipy

Numpy와 Scipy는 숫자 및 과학 계산을 수행하기 위한 라이브러리라고 할 수 있다

Numpy는 기본 계산 기능을 가진 다차원 배열과 유용한 선형대수학 함수를 지원한다.

Scipy는 숫자 알고리즘 집합과 신호 처리, 최적화, 통계 등을 포함한 도메인에 특화된 기능을 지원한다.


(참고로, Matplotlib는 데이터 시각화를 위한 많은 툴을 가지고 있다)


2. Pandas

Pandas는 고성능의 데이터 구조와 데이터 분석 툴을 제공한다. 

Pandas의 주요 특징은 통합된 인덱싱과 함께 데이터 조작이 가능한 빠르고 효율적인 DataFrame 객체이다. 

DataFrame 구조는 매우 유연한 방법들로 작업이 가능한 스프레드시트처럼 볼 수 있다.

 재구조화하고, 행과 열을 추가하거나 제거하는 것을 통해 원하는 방식으로 어떤 데이타셋으로든 쉽게 변경할 수 있다. 

또한 데이터셋 간에 계산을 하고, 병합하고, 합류하는 고성능의 기능을 제공한다. 


또한, Pandas는 다른 형태의 포멧(CSV, EXCEL, SQL 데이터베이스, HDF5)으로부터 데이터를 가져오거나 내보낼 수 있는 툴을 가지고 있다. 

많은 경우, 이들 포멧들에 있는 데이터는 완벽하거나 전체적으로 구조화되어 있지 않을 것이다. 그런 경우, Pandas는 빠진 데이터를 핸들링하고 지능적으로 데이터를 정렬할 수 있도록 해준다. 

게다가, Pandas는 편리한 Matplotlib 인터페이스를 제공한다.


3. Scikit-learn

Scikit-learn은 Numpy, Scipy와 Matplotlib로 만들어진 머신 러닝 라이브러리이다.

Scikit-learn은 계층화, 회귀, 클러스터링, 차원 감소, 모델 선택과 전처리 같은 데이터 분석에 필요한 단순하고 효과적인 툴을 제공한다.



PS) 라이브러리별로 첨부한 정리 시트를 제공하는 원본 출처 및 원본 시트를 받고자 하시면 아래 링크를 보시기 바랍니다.


https://www.continuum.io/blog/developer-blog/learning-python-data-science-cheat-sheets



다음 편에는 Jupyter Notebook 환경에 대해 알아보도록 할 예정이다.


그럼 이만...



반응형

+ Recent posts