목차
1 개요
Natural Language Processing (NLP).
컴퓨터가 인간의 언어를 알아들을 수 있게 만드는 학문분야. 인공지능의 하위 분야로, 일반적인 인공지능을 만들려던 1960년대의 시도가 실패한 후[1], 인간의 언어를 분석하고 해석하여 처리하는 인공지능이 세분화되면서 생긴 학문 분야. 흔히 우리가 아는 말하는 컴퓨터 및 인간과 대화하는 컴퓨터 관련 기술이 이 쪽에 속한다. 언어공학, 컴퓨터과학, 인공지능, 전산언어학(Computational Linguistics)의 연구 분야이며, 자연어를 컴퓨터로 해석하고, 의미를 분석하여 이해하고, 자동으로 생성하는 것 등에 관련된 분야다. 이 분야의 하위 분류로 정보 추출, 자동 교정, 대화 시스템, 기계 번역 등이 있다.
자연 언어(또는 자연어, Natural Language)란 프로그래밍 언어와 같이 사람이 인공적으로 만든 언어가 아닌, 사람이 일상생활과 의사소통에 사용해 온, 한국어, 영어와 같이 오랜 세월에 걸쳐 자연적으로 만들어진 언어라는 의미로, 우리가 흔히 말하는 언어를 뜻한다. 굳이 자연 언어라고 언급하는 까닭은 컴퓨터공학에서 언어라고 하면 우선적으로 C언어나 Java 같은 프로그래밍 언어를 먼저 떠올리기 때문.
2016년 현재, 아직 컴퓨터가 자연 언어를 사람처럼 이해하지는 못한다. 대신, 언어에 대한 깊은 이해없이 피상적인 확률 및 통계를 이용하여 대량의 정보를 처리하는 기술은 많이 발전한 상태. 대표적인 예를 들자면, 구글로 대표되는 검색 엔진들. 검색 엔진은 인간의 언어를 깊이 이해하지 않고, 단어간의 통계적 유사성에 바탕을 두고 문서를 검색해낸다.
NLP 시스템을 테스트하는 방법으로 유명한 것 중 하나로 튜링 테스트가 있다.
2 하위 분야
2.1 정보 검색
Information Retrieval. IR.
구글로 대표되는 검색 엔진을 만드는학문. 최근 10년간 가장 빠르게 발전하였고, 돈도 많은 분야. 그 만큼 많은 연구자/회사들이 달려들어 하고 있어 후발주자로 입문하기 굉장히 빡세다
넓은 의미로는 수 많은 문서 중에서 유저가 원하는 문서를 빠른 속도로 찾아내는 과정을 말한다. 윈도 시스템의 검색기능부터 온라인 검색엔진까지 전부 해당 된다. 발상은 도서관 관리 시스템에서 시작 되었다고 한다. 좁은 의미로 웹상의 텍스트 기반 문서 검색을 말한다. 유저가 던져주는 단서를 질의(query)라고 부르며 빠른 검색을 위하여 색인이 사용된다. 색인은 말 그대로 구글의 경우 웹상의 모든 문서를 단어 별로 쪼갠 다음 uni-gram, bi-gram, tri-gram 등등 으로 묶어서 해당 gram이 어떤 문서에 포함되어 있는지 링크를 저장한다. gram의 의미는 연속된 부분의 묶음을 뜻한다. uni-gram은 한 개 단어, bi-gram은 연속된 두 단어 등. 예를 유저가 "나무위키 정보검색"이라는 질의를 던지면 검색 시스템은 "나무위키"라는 단어가 포함되는 문서리스트와 "정보검색"이라는 단어가 포함된 문서리스트를 불어온다음 교집합을 구하고 연관도에 따라 랭킹하여 보여준다. 물론 실제 과정은 이보다 훨씬 복잡하며 한국어의 경우 단어 보다는 음절 gram을 사용한다. 빠른 검색을 위하여 색인의 구현이 관건이다. 윈도우 시스템의 검색기능은 잘 보면 시스템 설정에 색인허용이라는게 있다. 이걸 하면 사전에 색인을 만들어 검색을 빠르게 하는데 문제는 이로 인해 시도 때도 없이 색인을 만들어 시스템 자원을 잡아먹어 사양이 안 좋은 컴퓨터는 굉장히 느려진다. 저사양 컴퓨터를 위한 윈도우 8.1/10 최적화 팁 문서를 보면 항상 등장하는 항목이기도 하다. 상용 검색엔진은 색인을 On-disk B Tree 또는 유사한 해시를 사용한다. 소문/루머에 의하면 구글에서는 색인을 램 파일 시스템이라고 부르는 특수한 파일 시스템에 구현했다고 한다. 램 디스크와는 다르다! 이게 무슨 말이냐면 얘네는 HDD대신 SSD 도 느려터져서 램에다 전세계 웹 문서를 때려박았다는 의미다 ... 그 밖에 정확한 검색을 위해서는 질의와 문서간 유사도 계산을 개선하는 방법이 있는데 현재까지 정보검색 연구의 주된 주제이다.
이 밖에 Content-based IR 또는 Multimedia IR이라고 하여 텍스트 외에 이미지, 음성, 음악 등을 질의로 사용하는 검색 시스템이 있다. 구글의 이미지 검색이 하나의 예가 된다. 과거에는 MIT 미디어 랩의 한 학생이 멜로디를 흥얼거리기만 해도 해당 노래를 찾아주는 시스템을 만들어 화제가 되기도 했다.
2.2 정보 추출
Information Extraction. IE.
비정형의 문서로부터 정규화된 정보를 뽑아내는 기술. 예를 들면, 위키백과의 삼성전자 문서를 보고 사람 이름만 뽑아내는 기술 같은 것.
2.3 음성 인식
Speech Recognition 또는 Speech-to-text (STT).
컴퓨터가 인간의 음성 언어를 이해하게 만드는 학문 분야. 대표적인 예로 Siri.
음성 인식 분야에서 Speech Recognition과 Speech-to-text (STT)는 살짝 구분되는데, Speech Recognition이 컴퓨터가 인간의 음성 언어를 이해하는 것까지 목표로 삼는다면, STT는 인간의 음성 언어를 문자 언어로 변환 시키는 것 만을 목표로 삼는다. 즉, Siri가 Speech Recognition 시스템이라면, 청각 장애인을 위하여 소리를 글자로 화면에 표시해주는 기술은 STT.
2.3.1 유명한 오류
음성 | It's hard to recognize speech. |
STT | It's hard to wreck a nice beach. |
2.4 단어 분류
Word Classification.
문장 내 각 단어들의 카테고리를 목적에 따라 컴퓨터가 자동으로 분류하는 학문. 목적에 따라 아래와 같은 종류로 나뉘며 주로 HMM, CRF, 딥 러닝 등 기계학습 방법들이 사용된다.
2.4.1 품사 태깅
Part-Of-Speech Tagging.
주어진 문장의 단어들의 품사가 무엇인지 컴퓨터가 자동으로 인식하는 학문. 한국어나 일본어처럼 형태학적으로 풍부한 언어들은 사전에 형태소 분석 과정이 필요하다. 주로 기계 번역/감정 분석/구문 분석 등 과정의 전처리 과정으로 사용된다.
2.4.2 개체명 인식
Named Entity Recognition.
문장 내 인명, 지명과 같은 특정 단어들을 인식/분류하는 과정.
2.4.3 중의성 해소
Word Sense Disambiguation 또는 Word Sense Induction.
한 단어가 여러 의미가 있을 경우 문맥에 맞는 의미를 컴퓨터가 자동으로 인식하는 과정.
2.5 구문 분석
Sentence Parsing 또는 Syntactic Analysis.
문장의 구구조, 의존 구조 등 구조를 컴퓨터가 자동으로 인식하는 학문. 언어학적 개념/목적에 의해 구구조 구문 분석(Structural Parsing)과 의존 구문 분석(Dependency Parsing)으로 나뉜다. 주로 기계 번역/감정 분석/대화 시스템 등 과정의 전처리 과정으로 사용된다.
2.6 문장/문서 분류
Sentence/Document Classification.
한 문장/문서가 어떤 분류/카테고리에 속하는지 컴퓨터가 자동으로 분류하는 학문. 예를 들면 카테고리가 컴퓨터/스포츠/시사/연예가 있으면 포털사이트의 모 기사가 어떤 카테고리에 해당되는지 분류하는 과정.
주로 1) 자질 추출, 2) 분류기 학습 두 단계로 나뉜다.
자질 학습은 TF-IDF, PLSI, LDA 등 방법이 있고, 최근에 DBN, RNN, CNN등 딥 러닝 기반 방법도 있다.
분류기 학습은 SVM, Perceptron, Logistic Regression 등 기법이 사용된다. 기계학습 문서 참조.
2.7 감정 분석
Sentiment Analysis 또는 Opinion Mining.
한 문장이 어떤 의도/감정을 나타내고 있는지 컴퓨터가 자동으로 분류하는 학문. 예를 들면 영화평론사이트에서 남겨진 유저댓글이 해당 영화에 대해 긍정/부정으로 평가했는지 분류하는 과정. 목적/결과물에 따라 문장 분류에 포함되기도 한다. 완전히 문장 분류에 해당될 수 없는 이유는 일부 감성분석 task는 단순 분류가 아니라 감정 트리(sentiment tree)를 만들어내는 것이기 때문이다.
최근에 딥 러닝 기법이 큰 폭의 성능향상으로 주목을 받고 있다.
2.8 의미역 결정
Semantic Role Labeling.
문장에서 주어, 목적어가 무었인지, 그들의 의미적 관계가 어떠한지 컴퓨터가 자동으로 결정해주는 과정. 주로 자동 대화 시스템에서 사용된다.
2.9 자동 대화 시스템
Dialogue System 또는 Dialogue Manager.
유저가 입력/말 한 문장에 대해 컴퓨터가 자동으로 가장 적합한 문장을 생성하여 보여주거나 음성으로 전환하여 "대화"를 시뮬레이션 하는 학문을 말한다. 온라인 채팅 봇, Siri등이 해당 기술을 이용하였다. 유저의 의도를 파악하는것이 관건이고 감정 분석/의미역 결정 과정이 전처리 과정으로 사용된다. 학습에는 주로 HMM기반 기계학습 방법론이 사용된다.
2.9.1 질의 응답
Question Answering.
자동 대화 시스템의 간략화한 버전으로 질문만을 답하게 되어있다. IBM에서 개발하여 퀴즈방송에서 1위를 차지한 왓슨이 이에 해당된다.
2.10 기계 번역
Machine Translation. (MT)
언어 A로 되어있는 글을 언어 B로 자동으로 바꾸는 것을 연구하는 분야. 언어 계통적 유사성이 높은 언어간 번역(영어-프랑스어/독일어)은 잘 하는 반면, 계통적 유사성이 낮은 언어간 번역(한국어-영어)은 아직 잘 하지 못한다. 구글 번역의 예를 보면, 언어의 뉘앙스적인 면은 사용자들이 학습시키면 그럭저럭 하는 것 같다.
2.10.1 기계번역의 역사
기계번역은 컴퓨터가 발명된 시점부터 제기된 발상으로 오랜 역사를 가지고 있지만 본격적으로 연구가 진행된것은 1980년대 후반~1990년대 초반이다. 주로 다음과 같은 네 개의 패러다임 을 거쳤다.
2.10.1.1 규칙/패턴 기반 방법론
말 그대로 삽질 노가다 번역과정에서 가능한 수많은 경우의 수를 조건문(if A then B)으로 ... 구현하는것이다. 한국어의 경우 주로 형태소 분석, 품사 태깅, 구문구조 분석, 상호참조 해결, 단어 중의성 해소, 개체명 인식 등 겁나 많은 전처리 과정을 거친뒤 대역사전과 술부변환/어순조정 규칙을 이용하여 대상언어로 번역한다. 한계점은 ... 엄청 많다. 일단 언어라는 것이 제한된 단어들의 조합으로도 수많은 문장을 만들어 낼수 있고 모든 가능한 단어의 조합까지 고려하면 경우의 수는 무한대에 가깝다. 또한 언어사이의 차이점은 아무리 유사한 언어라도 무시할수 없으며 이를 염두에 두고 규칙을 개발하는 난이도는 상상에 맡긴다. 실제로 국내 모 대학에서 국내 최초로 기계번역시스템을 개발할때는 연구원 20명이 한일 대사전을 수작업으로 때려 박았다고 한다 ... 추가로 문제점이 되는것은 앞서 서술한 수많은 전처리 모듈들도 하늘에서 떨어진게 아니라 따로따로 전부 개발해야 하며 난이도는 번역에 비해 상대적으로 간단할 뿐이지 절때 쉬운 작업이 아니다. 마지막으로 특정 언어 쌍에 대해 개발한 시스템은 타 언어 쌍에 적용할 수 없으며 전부 다시 만들어야 한다 ... 또한 기능 향상 및 유지보수가 쉽지 않으며 이러한 단점은 몇개월을 주기로 신조어가 생기는 현시대에 적합하지 않으며 시스템 하나 만드는데 상상을 초월하는 인력과 돈이 든다.
2.10.1.2 예시/검색 기반 방법론
위에 서술한 규칙/패턴 기반이 하도 비용이 많이 드니 제안되어 잠깐 빛을 발했던 방법으로 데이터베이스에 수만~수십만에 달하는 번역예시를 저장해놓고 입력문장이 들어오면 그 중에서 가장 유사한것을 골라 결과를 출력하는것이다. 문장 간 유사도를 측정하기 위해 주로 정보 검색 기법으로 쓴다. 단점은 앞서도 말했지만 인간이 구사할 수 있는 모든 문장중에서 정확히 일치한 문장이 다시 나타날 확률에 0에 수렴하며 정보검색기법으로 유사도를 측정한다 하더라도 보유 데이터의 한계로 정확도는 한참 떨어진다. 이를 극복하기 위해 문장 전체가 아니라 문장을 절로 쪼개여 해당 방법론을 적용하였다. 문장을 보는 방법보다 고려할수 있는 경우의 수는 늘어나지만 획기적인 성능향상은 기대하기 힘들고 뒤에서 서술할 통계 기반 방법론에 대체되었다.
2.10.1.3 통계 기반 방법론
예시/검색 기반 방법론이 발전되어 나온 방법으로 위키러들이 주로 사용하는 구글번역을 비롯해 대부분의 온라인 서비스가 이 형태로 되어있다. 쉽게 설명하면 언어 A의 문장이 주어졌을때 언어 B중 가장 높은 확률로 나타날 문장을 구하는것이다. 이런 확률을 구하기 위하여 해당 확률을 다시 단어 번역 확률, 구 번역 확률, 어순 조정 확률로 세분화 되여 통계기반 기계학습 방법으로 학습하며 기타 도움이 되는 정보도 임의로 추가할 수 있다. 해당 방법론은 모델을 구현하기만 하면 번역 데이터가 있는 임의의 언어 쌍에 그래로 적용할 수 있다는 장점이 있다. 물론 번역 데이터를 모으는 일은 쉬운 일이 아니며 보통은 1천만 문장 쌍이 있어야 쓸만한(?) 성능이 나온다. 또한 통계기반 모델은 도메인(분야, 예를 들면 뉴스분야, 특허분야, 웹채팅, SMS등등)에 굉장히 의존적이며 뉴스 도메인 데이터로 학습한 모델을 SMS번역에 적용하면 심각한 성능저하가 생긴다. 웹상에 MOSES[2]와 같은 오픈소스 툴이 있고 유럽언어쪽은 많은 데이터가 있기에 관심있는 위키러들은 쉽게 돌려볼수 있다.
2.10.1.4 뉴럴 기반 방법론
최근에 이슈가 되고 있는 "심층학습/딥 러닝"의 빛을 빌어 빠른 페이스로 연구가 되고 있는 방법론이다. 시퀀스를 처리하기 용이한 순환 신경망이 사용되며 소스언어(번역 되어야 할 언어)를 처리하는 인코더와 타겟언어(번역 되어 출력되는 언어)를 생성한는 디코더로 구성되어 있다. 인코더는 입력 문장을 축약된 표현으로 바꾸어 주고 디코더가 다시 축약된 표현을 근거로 번역문을 생성한다. 학습을 하기 위하여 통계 기반 방법론과 마찬가지로 대규모 데이터를 필요로 한다. 성능은 현재 통계 기반 방법론에 근접 또는 더 좋으나(언어 쌍에 따라 다르다) 인공 신경망의 학습/처리 속도가 넘사벽 급으로 느린것이 단점이다. GPU연산 등으로 속도를 높일수는 있지만 통계 기반 번역기의 속도가 나올려면 cluster 급의 GPU서버가 필요하다.
2.10.2 기계번역의 문제점/미래
실제로 번역기를 사용해보면 알겠지만 ... 영 안습이다. 가장 근본적인 이유는 바로 현시점 인공지능 분야의 전반적인 한계점이다. 인간의 인지능력은 가장 기본적인 각 감각기관의 인지능력부터 모든 감각기관의 정보를 통합/취합하는 높은 단계의 인지까지 여러 단계로 나뉜다. 기계번역은 당연히 후자에 속하며 현시점 인공지능 기술은 전자를 겨우 해내가고 있는 상황이다. "사람수준"까지 끌어올린 분야는 사실상 이미지 인식분야가 유일하며 그것도 이미지를 보여주고 누구 얼굴이냐/무슨 동물이냐/어떤 자동차냐 하는 수준이다. 바둑분야의 알파고를 떠올리기 십상이지만 알파고는 바둑판의 정보를 처리하는 인공신경망과 그 학습방법을 제외하면 체스머신 딥블루와 크게 다르지 않다. 단순한 문제일수록 인간이 인지하는 방식이 아닌 단순 계산/탐색으로 해결 가능하며 체스/바둑도 이에 해당된다. 단 체스와 달리 바둑은 현재 판국의 우위를 단순 수식으로 표현하기 쉽지 않아 패턴인식 방식으로 접근한것 뿐이지 그걸 가지고 인공지능이 인간을 넘어섰다느니 하는 설레발 과대망상 오판을 해서는 안된다. 인간의 언어는 인간이 인지하고 있는 세계에 대한 종합적인 정보축약이다. 시각을 한정으로 보았을때 명사는 인간의 시각중추가 인지한 각각의 공간적(spacial) 객체(사람, 동물, 자동차, 도로, 책상 등등)이고 동사는 이런 공간적 객체들의 시간적(temporal) 시퀀스이다. 문화권에 따라 언어는 어휘/문법 상 상당히 이질성을 나타내고 있으나 사실상 인간의 뇌속의 상위 표현은 동일한것이다. 인간의 뇌속에서의 번역과정은 한 언어를 시각/청각 정보로 인지하고 다시 다른 언어로 전환하는 과정이다. 이런 과정에 대한 모델링이 없이 단순히 수백/수천만 문장을 가지고 언어패턴/통계정보만 이용하여 번역을 하겠다고 하니 한계에 봉착할수 밖에 없다. 이로 인해 최근의 기계번역 경진대회(예를 들면 workshop for machine translation)에서는 2016년 부터 입력 문장외에 추가로 연관성이 있는 이미지를 제공하는 task가 생겼다. 서로 다른 종류의 데이터(예를 들면 이미지와 텍스트)를 취합하여 학습하는 기계학습 기법을 Multi-Modal Learning이라고 하며 기계번역분야의 새로운 방향으로 급부상하고 있으며 앞서 소개한 뉴럴 기계번역 방법론에 기반을 두고 있다.
2.10.3 기계번역연구가 유명한 대학
국가 | 대학/특징 |
영국 | 스코틀랜드의 에딘버그대학교[3] (통계기계번역 전문, 최근에 뉴럴 기계번역 병행) |
독일 | KIT[4] (통계 기계번역 전문) |
미국 | 존스홉킨스대학교[5] (통계 기계번역의 창시자[6]가 교수), 펜실베니아 대학(자연언어처리분야의 거두), 뉴욕 대학(뉴럴기계번역 전문), 그외 스탠포드, CMU 등 |
캐나다 | 몬트리올대학교(뉴럴기계번역 전문, 딥러닝 패러다임의 창시자[7]가 교수) |
중국 | 중국과학원대학원[8], 하얼빈공대[9], 동북대학교[10] 등 |
국내 대학으로는 포스텍, 고려대학교 등이 있다.
2.10.4 기계번역 관련 경진대회
경진대회 | 비고 |
Workshop for Machine Translation (약칭 WMT)[11] | 매년 진행되며 유럽언어(영어, 프랑스어, 독일어, 체코어, 스페인어, 러시아어, 핀란드어) 위주 |
OpenMT | 2~3년에 한번씩 진행되며 미국정부기관 NIST에서 주관 |
IWSLT[12] | 매년 진행되며 독일 KIT에 주관하고 언어/소스는 WMT랑 동일. 단 WMT와 차이점이라면 Text번역 외에도 음성인식 및 자동통역 (Speech Translation)에 특화되어 있다. |
WAT | 네임드는 좀 떨어지지만 일본에서 주관하며 일본어, 한국어, 중국어 위주. |
2.10.5 유명한 오류
원문 | 오역 | 옳은 번역 | ||||||
Time flies like an arrow. | 시간 파리는 화살을 좋아한다. | 시간이 쏜살같이 지나간다. | ||||||
War never again! Never again war! | 결코 다시 전쟁! 결코 다시 전쟁! | 전쟁은 다시는 일어나면 안됩니다! 또 다른 전쟁이 일어나서는 안 됩니다! |
3 자연 언어 처리 분야 학술대회/학술지
3.1 학술대회[13]
학술대회명 | 약칭 | 비고 | 논문통과률 | 등급 |
Associations for Computational Linguistics | ACL | 자연언어처리분야 모든 주제 망라 | 20~30% | 최고등급 |
ACM Special Interest Group on Information Retrieval | SIGIR | 정보검색 분야 주제 | 8~15% | 최고등급 |
3.2 학술지
관심있는 위커러들은 여기에 논문을 내고 교수가 되자
학술지명 | 약칭 | 비고 |
Computational Linguistics | CL | 자연 언어 처리 분야 최고 등급 학술지, 한국인 저자는 손에 꼽을 정도이다 |
ACM Transactions on Information Systems | TOIS | 정보 검색 분야 최고 등급 학술지, 한국인 저자는 손에 꼽을 정도이다 |
4 관련 소프트웨어/리소스
4.1 학술용/오픈소스 소프트웨어
분야 | 툴 | 비고 |
기계번역 | MOSES | C++기반 통계기계번역 오픈소스 툴 |
기계번역 | dl4mt | python 기반 뉴럴기계번역 오픈소스 툴, deep learning for machine translation의 약자이다. 딥 러닝 툴 theano를 미리 깔아야 한다. |
자연언어처리 | Stanford CoreNLP | java 기반 품사 태깅, 개체명 인식, 의존 구문 분석, 분할/복원, 감정 분석, 상호 참조 해결, 정보 추출 등 기능을 제공한다. 영어한정, 일부 모듈은 중국어도 지원. |
자연언어처리 | 울산대 한국어 형태소분석/품사 태깅 툴 | 한국어 형태소분석, 품사 태깅 오픈소스 툴 |
5 관련 항목
- ↑ 흔히 인공지능 겨울 (AI winter) 이라고 부른다.
- ↑ http://www.statmt.org/moses/
- ↑ http://www.statmt.org/ued/
- ↑ http://isl.anthropomatik.kit.edu/cmu-kit/english/64.php
- ↑ http://www.statmt.org/jhu/
- ↑ http://www.cs.jhu.edu/~phi/
- ↑ http://www.iro.umontreal.ca/~bengioy/yoshua_en/index.html
- ↑ http://nlp.ict.ac.cn/english/
- ↑ 중국어 언압 주의 http://mitlab.hit.edu.cn/
- ↑ http://www.nlplab.com/
- ↑ http://www.statmt.org/
- ↑ http://workshop2016.iwslt.org/
- ↑ http://www.aclweb.org/anthology/ 여기를 참고하자