검수요청.png검수요청.png

자연어 처리

위키원
(NLP에서 넘어옴)
이동: 둘러보기, 검색

자연어 처리(natural language processing)란 컴퓨터를 이용하여 인간의 언어를 이해하고 생성 및 분석하는 인공지능 기술이다. 인간의 언어 현상을 컴퓨터와 같은 기계를 이용해서 모사할 수 있도록 연구하고 이를 구현하는 인공지능의 주요 분야 중 하나이다. 영어 약자로 NLP(엔엘피)라고 한다. 자연어 처리는 연구대상이 언어학과 언어 현상의 내적 기재를 탐구하는 언어 인지 과학과 연관이 있다. 구현을 위해 수학적 통계적 도구가 많이 활용되며, 기계 학습 도구가 많이 사용된다.

개요[편집]

각종 문서나 뉴스, SNS 등 온·오프라인을 가리지 않고 자연어는 많은 곳에서 각기 다른 난이도를 가진 채 존재한다. 바로 이 자연어를 컴퓨터가 읽고 처리할 수 있게 하는 것이 자연어 처리이다. 컴퓨터와 사람 간의 상호작용을 연구하는 컴퓨터 과학과 어학의 한 분야로, 인간의 언어를 이해하기 위해 머신러닝 기술을 적용하여 데이터를 처리하면 과거의 전통적인 방식과는 달리 좀 더 손쉽고 신속하게 정보를 얻어낼 수 있다. 따라서 자연어 처리는 정보검색, 자동통역, 문서작성, 요약분류, 철자 오류 수정 등 이용자의 의도를 컴퓨터가 파악하여 다양한 데이터를 정확하게 제공하는 데 사용된다. 대표적인 자연어 처리 서비스로는 구글 홈, 구글 어시스턴트, 워드렌즈, 왓슨, 코타나, 스카이프 트랜스레이터, 그래머리, 진저 등이 있고, 세부 기술로는 형태소 분석, 고정밀 구문분석과 같은 구조 분석을 바탕으로 한 담화 분석, 문서분류, 정보 요약, 정보추출 기술 등이 있다. 분석은 자연언어 문장에서 형태소 분석, 구문 분석, 의미 분석, 화용 분석 단계를 거쳐 결과가 도출된다.

1950년대부터 기계 번역과 같은 자연어 처리 기술이 연구되기 시작했으며, 90년대 이후에는 대량의 말뭉치 데이터를 사용하는 기계 학습 기반 및 통계적 자연어 처리 기법이 자주 사용되었다. 최근에는 자연어를 효율적으로 처리하기 위해서 딥러닝 기술을 기계 번역 또는 자연어 생성 등에 사용하고 있다. 중의성이 있는 단어, 동음이의어의 경우에는 머신러닝 기법을 통해 해결할 수 있기 때문이다. 애피어의 쑨민 최고 인공지능 과학자는 기계가 인간의 언어를 효율적으로 이해하고 번역하기 위해서는 인간이 단어 간의 관계를 명확히 밝혀줘야 한다고 말했다. 여기서 딥러닝이 사용된다면, 인공지능은 딥러닝을 통해서 단어와 구문이 상황에 따라 어떻게 사용되고 있는지 의미를 학습하는 것이 가능하다. 즉, 누군가 인공지능에 미리 정의된 내용을 입력하지 않았고, 인간이 그사이에 개입해서 관계를 정의하지 않아도, 인공지능 스스로 단어나 구문의 의미를 파악하고 기능을 수행할 수 있게 된다.[1]

딥러닝도 대량의 텍스트 데이터는 필요하다. 컴퓨터는 각각의 토큰이 나타내는 벡터를 학습하는데, 여기서 벡터는 비슷한 단어가 서로 근접하게 매핑되는 곳을 말한다. 가깝게 배치된 비슷한 컨텍스트를 가진 단어들이 의미상 같은 뜻을 공유할 가능성이 높다는 것을 보여준다. 딥러닝과 벡터 매핑을 통해 인간의 개입이 없어도 인공지능 스스로 언어를 보다 정확하게 처리할 수 있으며, 키워드 기반 마케팅이나 감정 분석에도 좋은 결과를 기대할 수 있다. 키워드 기반 마케팅에 활용할 때 벡터의 중요성은 두드러질 것이고, 딥러닝 기반의 자연어 처리를 활용하면 정교한 정서 분석이 가능해질 것이다.[2]

단계[편집]

자연어 처리는 자연어로 이루어진 문장을 입력한 후, 형태소 분석, 구문 분석, 의미 분석, 화용 분석을 거친 후, 결과를 도출하는 일련의 과정으로 이루어져 있다.

형태소 분석[편집]

자연어 처리에서의 형태소 분석은 대상을 가작 작은 의미 단위인 형태소로 분석하는 것을 의미한다. 정보 검색 엔진에서 한국어의 색인어를 추출할 때 많이 사용된다. 자연어로 작성된 SNS, 웹 문서, 뉴스 기사의 텍스트 데이터를 형태소로 변환해야 다음 단계의 분석 효율성이 올라가기 때문에, 문장을 최소단위까지 쪼개는 것이다. 형태소 분석의 치명적인 약점은 오탈자 발생, 띄어쓰기 오류, 등록되지 않은 언어 등으로 분석에 오류가 발생하거나, 중의적인 의미와 신조어 처리 등이 있다. 복합 명사의 분해도 형태소 분석의 어려운 문제 중 하나이다. 복합 명사란 하나 이상의 단어가 합쳐져 새로운 의미를 생성해 낸 단어를 말하는데, 이러한 단어는 띄어쓰기에 따른 형식도 정확하지 않고, 복합된 유형에 따라 의미와 분해가 다양한 형태를 보이기 때문이다. 형태소 분석은 전처리, 후보 생성 단계, 후처리 단계로 이루어져 있다. 형태소 분석은 띄어쓰기 단위로 진행되며, 한국어는 영어에 비교하여 형태소 분석이 복잡하다. 기계적으로 복합명사를 처리하는 방식은 N-gram, 통계 언어 모델 등등이 있는데, 그중 N-gram의 bi-gram은 음절 단위를 기반하여 연속된 두 단어를 단어별로 쪼갤 수 있다. 예를 들어, '복합 명사'를 음절 단위로 나눈다면 '복합+명사', '복+합명사', '복합명+사' 의 세 가지 형태로 쪼갤 수 있다.[3] 일반적으로 한국어의 형태소 분석에서는 태뷸러 파싱(Tabular Parsing)을 사용하여 형태소의 후보를 분석하는 방법과 기계 학습에 기반한 품사 부착이 사용된다. 과거에는 형태소를 분석할 때 HMM이나 CRF를 사용했지만, 최근에는 딥러닝을 적용하여 분석하고 있다.[4][5]

구문 분석[편집]

문장을 구성하는 성분 간의 관계를 분석하는 것을 말한다. 언어의 종류에 상관없이 모든 언어에는 문장을 구성하는데 규칙이 뒤따르기 때문에 필요한 과정이다. 구문 분석은 언어학에서 통사 분석이라고도 불리며, 문장을 구성 성분으로 분해하고 구성 성분 간의 위계 관계를 분석하여 문장의 구조를 결정하는 것을 말한다. 통사는 생각이나 감정을 언어로 표현할 때 완결된 내용을 나타내는 최소의 단위이다. 컴퓨터 과학에서는 일련의 문자열을 의미 있는 토큰으로 분해하고 파스 트리(parse tree)로 만드는 과정을 말한다. 이 과정에는 파서(parser)가 사용되는데, 파서는 인터프리터나 컴파일러의 구성 요소 가운데 하나이다. 인터프리터나 컴파일러의 구성 요소 중 하나로, 입력 토큰 내에 들어 있는 자료 구조를 빌드하고 문법을 검사한다. 또한, 일련의 입력 문자로부터 토큰을 생성하기 위해 별도의 낱말 분석기를 이용하기도 한다. 파서의 프로그래밍은 수작업으로 이루어지며, 도구를 사용하여 반자동 적으로 만들 수도 있다. 문장은 주어와 서술어가 모두 있어야 하는 것이 원칙이지만, 감탄사와 같은 경우 예외가 발생할 수 있다. 어휘적 중의성과 구조적 중의성이 일어날 수도 있다. 시간이 지남에 따라 의존 단계를 구 단위로 분석하는 방법에서 구성 성분 단위로 분석하는 방법으로 발전하고 있다. 세계 각국의 다양한 언어는 언어별 특성에 따라 사용되는 알고리즘이 다르며, 영어는 MST알고리즘, 한국어는 SKY알고리즘이 사용된다. 구문 분석에는 국립국어원에서 제작한 세종코퍼스가 많이 사용되고 있고, 딥러닝도 많이 활용되고 있다.

의미 분석[편집]

문장이 나타내는 의미를 분석 및 해석하여 문장 속 단어가 실제로 어떤 의미로 사용되었는가를 판단한다. 문장은 단어의 중의성, 문장의 구조 차이로 인한 통사적 중의성, 통사적으로는 옳을 수 있으나 의미상으로 틀린 중의성, 부정표현으로 인한 중의성, 상황에 따른 중의성 등이 있을 수 있다. 다음은 문법적으로 옳지만 의미적으로 틀린 문장의 예시이다.

  • 동생이 딸기를 먹는다(O)
  • 동생이 아파트를 먹는다(X)

따라서 문법적으로는 규칙에 맞지만 의미가 올바르지 못한 문장들을 알아내야 한다. 이 과정에서 형태소의 의미를 표현하는 지식 표현 기법이 필요하다. 구조 분석기에 의해 생성된 구조들은 의미가 부여된다. 상황에 맞지 않고 맥락에 맞지 않은 문장을 구분하기 위해 각 단어가 지식베이스에서 적절한 개체로 매핑되고, 각 단어의 의미가 서로 결합하는 방법으로 구조를 생성한다. 의미 구조의 대표적인 문법으로는 의미망(Semantic Network), 격문법(Case Grammer), 몬태규 문법(Montague Grammer), 개념의존(Conceptual Dependency) 등이 있다.

화용 분석[편집]

문장과 문장 간의 관계에 집중하여 상황을 분석한다. 기계가 발화자의 질문 의도를 파악하고 알맞은 응답을 하는 데 필요한 단계이다. 현실과 어떤 연관 관계가 있고 대화의 흐름으로는 어떤 의미가 있는지를 분석하기 위해, 실세계의 상식 및 지식에 대한 많은 데이터가 필요하다.

역사[편집]

전통적 자연어 처리[편집]

알고리즘 기반 후보 생성

전통적 자연어 처리 기술들은 알고리즘을 이용하여 여러 개의 후보를 생성하고, 확률적인 방법으로 애매성을 해소하는 접근법을 사용했다. 형태소 분석에 가장 많이 사용되어 온 알고리즘은 태뷸러 파싱(Tabular Parsing) 알고리즘이다. 형태소 분석을 위해서는 형태소 어휘와 품사를 저장하고 있는 자류 구조인 사전과 형태소 어휘 또는 품사의 연속 가능 여부를 담고 있는 자료 구조인 접속 정보가 필요하다. 태뷸러 파싱 알고리즘은 자소를 결합하여 형태소 후보를 생성하고 사전과 접속 정보를 이용하여 조합 가능한 모든 형태소 열을 생성한다. 의존 구조 분석도 형태소 분석과 비슷한 접근 방법을 사용한다. 어절과 어절 사이의 관계를 의존 문법으로 기술하고 해당 문법을 바탕으로 알고리즘을 적용하여 모든 가능한 의존 구조 분석 트리를 생성한다. 아래는 의존 문법의 일보를 이해하기 쉽도록 표로 정리한 것이다.[6]

의존 문법 예시
관계 의존소의 대표 품사 지배소의 대표 품사
수식 관형사, 관형격 조사, 관형사형 전성 어미, 명사, 부사 명사
수식 관형사, 관형격 조사, 관형사형 전성 어미, 부사 대명사
부가 주격 조사, 목적격 조사, 부사격 조사, 보조사,
부사, 연결형 서술 어미, 부사형 전성 어미
동사, 형용사
강조 부사 부사, 관형사

위 표에서 보듯이 입력된 문장의 각 어절은 대표 품사 형태로 변환된다. 그리고 지배 가능한 모든 어절들을 확인하면서 의존 구조 트리 후보들을 생성한다. 아래는 "나는 예쁜 꽃을 좋아한다."라는 문장의 가장 오른쪽 어절인 '좋아한다'부터 첫 어절인 '나는'까지 지배 가능 경로를 따라 이동하면서 의존 구조 트리 후보들을 생성하는 과정을 보여준다.[6]

지배 가능 경로를 이용한 오른쪽 우선 의존 구조 분석의 예
단계 의존소 후보 어절 지배소 후보 어절 의존문법 검사
1 꽃을 좋아한다 OBJ
2 예쁜 꽃을 MOD
3 예쁜 좋아한다 X
4 나는 예쁜 SUB
5 나는 좋아한다 SUB
확률 기반 애매성 해소

규칙이나 알고리즘에 기반한 자연어 처리 모델은 자연어 본연의 특성으로 인해 다수의 분석 후보들을 생성한다. 위 표만 보더라도 '나는'이 '예쁜'을 꾸미는 경우와 '좋아한다'를 꾸미는 경우가 생성된다. 그러므로 문맥을 바탕으로 어떤 것이 보편타당한 것인지를 선택하는 애매성 해소 과정이 필요하다. 전통적인 애매성 해소 방법은 대용량의 언어 지식 부착 말뭉치로부터 통계 데이터를 습득하고 이를 바탕으로 확률적 선택을 하는 것이다. 형태소 분석의 경우에 품사 정보가 부착된 대용량의 말뭉치로부터 해당 품사에서 형태소 후보과 관측될 확률과 현재 품사가 다음 품사로 전이될 확률의 곱을 계산한 후, 가장 높은 확률값을 가지는 형태소 열을 선택하는 HMM(Hidden Markov Model)을 주로 사용한다. 의존 구조 분석도 형태소 분석과 비슷한 방법으로 애매성을 해소한다. 의존 구조 정보가 부착된 대용량의 말뭉치로부터 두 어절이 특정 구문 관계로 출현할 확률을 계산하고 최댓값을 갖는 의존 구조 트리를 선택하는 방법을 주로 사용한다.[6]

식 (1) 

식 (1)에서 는 입력 문장과 의존 구조 트리를 의미하며, 는 문장 내 i번째 어절과 그 어절의 지배소 후보가 되는 어절을 의미한다. 그리고 사이의 구문 표지를 의미한다.

최신 자연어 처리[편집]

머신러닝의 도입

최근 딥러닝을 필두로 머신러닝 기술들이 눈부시게 발달함에 따라 자연어 처리 분야에서도 머신러닝 모델을 이용하여 애매성을 해소하고자 하는 연구들이 활발히 진행되고 있다. 머신러닝 또는 기계학습은 인공지능의 한 분야로, 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야를 말한다. 머신러닝의 핵심은 표현과 일반화에 있다. 표현이란 데이터의 평가이며, 일반화란 아직 알 수 없는 데이터에 대한 처리이다. 즉, 머신러닝이란 학습 데이터라고 불리는 주어진 데이터의 특성을 잘 설명할 수 있으면서도 평가 데이터라고 불리는 새로운 데이터에 적응성이 높은 일종의 함수를 자동으로 찾아내는 것이라고 할 수 있다. 자연어 처리와 연관된 머신러닝 문제는 분류 문제(classification problem), 순차적 표지 부착 문제(sequence labeling problem), 그리고 정책 결정 문제(policy decision problem)로 나뉠 수 있다. 아래 표는 각 머신러닝 문제와 관련이 있는 자연어 처리 기술들을 보여준다.[6]

머신러닝 문제에 따른 자연어 처리 기술
머신러닝 문제 자연어 처리 기술 설명
분류 문제 의존 구조 분석 두 어절 사이의 의존 여부와 구문 표지를 결정
순차적 표지 부착 문제 형태소 분석 문장을 구성하는 어절 열을 형태소 열로 분할하고 품사를 부착
개체명 인식 문장 내에 존재하는 개체명을 탐지하고 개체명 범주를 부착
의미역 결정 문장 내에 존재하는 서술어를 탐지하고 서술어를 수식하는 어절에
의미역 범주를 부착
정책 결정 문제 대화 상대 추적 대화를 구성하는 현재 발화에 대한 다음 발화의 의도를 결정

분류 문제가 적용된 예로는 스팸 메일 자동 필터링 시스템, 신문 기사 범주 자동 결정 시스템, 댓글 감정 분석 시스템 등이 있다. 자연어 처리 분야에서는 의존 구조 분석 시에 현재 어절의 지배소가 어느 것인지를 결정하는 것 즉, 후속 어절 각각에 대해 지배소 가능 여부를 결정하는 것에 적용될 수 있다. 순차적 표지 부착 문제는 시간 순서대로 입력되는 데이터 전체를 고려하면서 각 지점에 분류 모델을 적용하여 범주를 부착하는 것이다. 어절로 구성된 문장 전체에 품사를 부착하는 형태소 분석이나 개체명 경계를 찾고 범주를 부착하는 개체명 분석 등 자연어 처리의 많은 문제들이 순차적 표지 부착 문제에 해당한다. 정책 결정 문제는 대량의 데이터를 바탕으로 정해진 목적을 달성하기에 가장 적합한 정책인지 무엇인지를 결정하는 문제이다. 구글의 딥마인드(DeepMind)가 선보인 알파고와 같은 프로그램이 정책 결정 문제가 적용된 예라고 할 수 있다. 자연어 처리 분야에서는 대용량의 목적 지향 대화 말뭉치(Goal-Oriented Dialogue Corpus)를 바탕으로 해당 목적을 달성하기 위해서 현재 어떤 의도의 발화를 하는 것이 가장 좋은 정책인지를 결정하는 것에 적용될 수 있다.[6]

머신러닝 기반 자연어 처리 모델

머신러닝 기반의 형태소 분석, 개체명 인식, 의미역 결정 등은 식 (2)와 같이 순차적 표지 부착 문제로 변환하여 해결한다.

식 (2) 

식 (2)에서 는 입력된 문장을, 은 표지를 부착해야 하는 개의 분절 열을, 에 부착되는 개의 표지 열을 의미한다. 일반적으로 형태소 분석을 위한 분절은 음절이 되며, 개체명 인식을 위한 분절은 형태소가 되고, 의미역 결정을 위한 분절은 각 서술어를 수식하는 어절이 된다. 예를 들어, "해시넷에 갔다."라는 문장을 형태소로 분석하기 위한 분절 열은 공백을 포함하여 ' [해, 시, 넷, 에, _, 갔, 다, .]'가 되며, 개체명 인식을 위한 분절 열은 ' [해시넷, 에, _, 가, 았, 다, .]'가 된다. 의미역 결정을 위한 분절 열은 ' [해시넷에, 갔다.]'가 된다. 형태소 분석과 개체명 인식을 위한 표지는 아래 표와 같이 경계를 나타내는 표지와 범주를 나타내는 표지를 결합하여 사용한다.[6]

형태소 분석, 개체명 인식, 의미 분석을 위한 표지
구분 표지 설명 예제
형태소 분석 B_POS B: 형태소 경계 시작
POS: 품사
[해, 시, 넷, 에, _, 갔, 다, .]
[B_NNP, I, I, B_JKB, O, B_VV_EP, B_EF, B_SF]
NNP: 고유명사, JKB: 부사격 조사, VV: 동사, EP: 선어말 어미, EF: 어말 어미, SF: 마침 기호
I I: 형태소 경계 내부
O O: 형태소 경계 외부
개체명 인식 B_NEC B: 개체명 경계 시작
NEC: 개체명 범주
[해시넷, 에, _, 가, 았, 다, .]
[B_LOC, O, O, O, O, O, O]
LOC: 장소
I I: 개체명 경계 내부
O O: 개체명 경계 외부
의미역 결정 B_SR B: 의미역 경계 시작
SR: 의미역 범주
[나는, 혼자, 해시넷에, 갔다.]
[B_AGT, O, B_LOC, B_PRED]
AGT: 행위주역, LOC: 장소역, PRED: 술어
I I: 의미역 내부
O O: 비의미역

식 (2)를 단순화하려면 현재 표지는 현재 분절의 특성에만 영향을 받는다는 독립 가정을 적용하고, 현재 표지는 바로 이전 표지에 영향을 받는다는 1차 마코프(Markov) 가정을 적용하면 식 (3)과 같다.

식 (3) 

식 (3)과 같은 모델에서 성능을 좌우하는 것은 를 어떻게 표현할 것인지(어떻게 추상화할 것인지)와 주변의 문맥을 어떻게 반영할 것인지로 요약할 수 있다. MEMM(Maximum Entropy Makov Model)과 같은 전통적 머신러닝 모델에서는 를 효과적으로 추상화하기 위해서 언어 분석 전문가들이 정의한 자질들을 사용하였다. 예를 들어, 개체명 인식의 경우에 의 전체나 일부가 개체명 사전에 포함되어 있는지 여부, 의 품사, 의 품사, 의 품사 등이 주요 자질로 사용되었다. 그러나 최근데 딥뉴럴넷(Deep Neural Network)에 대한 연구가 활발히 이루어지면서 대용량의 말뭉치에서 자동으로 계산된 Word2Vec을 이용하여 를 벡터 형태로 추상화하거나 를 음절 형태로 분리한 후 CNN(Convolutional Neural Network)을 통해 추상화하는 방법이 사용된다.

식 (3)의 경우에 현재 표지의 왼쪽에 있는 표지만 문맥으로 고려되는 단방향성 문제가 존재한다. 이를 해결하고 효과적으로 주변 문맥을 반영하기 위해서 좌우 문맥을 모두 고려하는 CRFs의 모델이 제안되었으며, 최근에는 RNN(Recurrent Neural Network) 계열의 딥뉴럴넷과 CRFs가 결합된 모델들이 주로 사용한다. 좌우 문맥을 모두 고려하는 Bi-LSTM-CRF(Bidirectional Long Short-Term Memory with Conditioanl Random Fields)라는 신경망 모델도 있다. 머신러닝 기반의 의존 구조 분석은 두 어절 사이의 의존 여부와 구문 표지를 결정적으로 찾아가는 분류 문제로 변환하여 해결할 수 있다. 아래 표는 전이 기반 구문 분석 알고리즘에 따라 "나는 예쁜 꽃을 좋아한다."라는 문장의 의존 구조를 분석하는 과정을 보여준다.[6]

전이 기반 한국어 의존 구조 분석의 예
스택 분류
1 나는 예쁜 꽃을 좋아한다 Shift
2 나는 예쁜 꽃을 좋아한다 Reduce
3 나는 꽃을 좋아한다 Shift
4 나는 꽃을 좋아한다 Reduce
5 나는 좋아한다 Reduce

위 표에서 보듯이 전이 기반 한국어 의존 분석은 스택(후입 선출 형태의 자류 구조)과 큐(선입 선출 형태의 자료 구조)의 첫 어절을 비교하여 Shift 할 것인지 Reduce 할 것인지를 반복적으로 이진분류 하는 방식으로 이루어진다. Shift인 경우에 큐의 첫 어절을 스택으로 이동시키며, Reduce인 경우에 스택의 마지막 어절과 큐의 첫어절로 구성된 의존 구조 트리를 구성하고 스택의 마지막 어절을 제거한다. 이와 같은 전이 기반 방법은 두 어절 사이의 정보를 바탕으로 의존 여부를 결정하기 때문에 문장의 전체 구조를 반영할 수 없다는 단점이 있다. 이러한 문제를 해결하기 위해서 최근에는 모든 의존 관계 후보를 그래프 형태로 만들고 전체 후보 중에서 가장 높은 점수를 갖는 후보를 효과적으로 선택하기 위한 다양한 방법들이 활발히 연구되고 있다.

머신러닝 기반의 대화 상대 추적은 강화학습으로 대변되는 정책 결정 문제로 변환하여 해결한다. 대화 상태 추적에 적용된 대표적 정책 결정 모델은 POMDP(Partially Observable Markov Decision Process) 모델이다. POMDP 모델은 대용량의 대화 말뭉치로부터 강화학습을 통해 시스템의 대화 상태를 확률적으로 파악하고 다음 행동을 결정한다. 확률 기반 모델은 음성 인식 오류를 포함한 예기치 않은 사용자 입력에 대해서 부분적으로 관찰된 정보를 바탕으로 시스템의 의도를 결정할 수 있다는 장점이 있지만 학습을 위해서 매우 많은 담화 정보 부착 말뭉치를 필요로 한다는 문제를 안고 있다. 최근에는 딥뉴럴넷을 이용하여 다음 행동을 결정하는 NNMDP(Neural Network Markov Decision Process)와 같은 모델이 연구되고 있다.[6]

알고리즘[편집]

자연어 처리는 인간의 언어를 분석하고 표현하는 과정을 자동화하기 위한 계산 기법이다. 과거에는 문장을 입력하기 위해 펀치 카드를 사용하여 7분 정도의 시간이 소요됐지만, 현재는 컴퓨터가 파싱, 기계 번역, 품사 태깅 등을 수행하여 자연어를 처리할 수 있도록 꾸준히 연구되고 있다. 지난 수십 년간 자연어 처리를 해결하기 위해 사용했던 머신러닝은 고차원적인 피처를 학습한 얕은 모델에 기반한다. 머신러닝에 기반한 자연어 처리 시스템은 사람의 손길에 강하게 의존하기 때문에, 많은 시간을 낭비하고 불완전하다는 단점이 있다. 이에 따라 최근 자연어 처리와 관련하여 다양한 모델과 기법들이 적용되고 있다. 여기에는 딥러닝 기법도 해당한다. 딥러닝은 피처를 자동으로 추출하고 표현할 수 있어 새로운 연구 주제로 떠올랐고, 현재 많은 도메인에서 사용되고 있다. 딥러닝 기반의 알고리즘은 데이터의 다층 계층을 사용하여 데이터의 계층적인 표현을 학습한다. 딥러닝 알고리즘의 성장으로, 지난 2017년 기준, 6년간 딥러닝에 관한 논문은 대체로 꾸준히 늘고 있다. 딥러닝은 많은 양의 데이터를 활용할 수 있어, 관리자가 별도로 수작업을 할 필요가 거의 없다. 앞으로도 자연어 처리 시스템이 사용된 애플리케이션은 꾸준히 증가할 것이다. 수많은 딥러닝 알고리즘 및 모델들의 일부를 예시로 들자면 다음과 같다.[7]

분산 표상[편집]

언어 모델이 결합확률 함수를 학습해야 했기 때문에 초기에는 다소 어려움이 있었으나, 후에 저차원 벡터 공간의 단어 분산 표상을 학습하는 계기가 되었다. 분산 표상은 원-핫 벡터를 보완하기 위해 사용하는 방식이다. 원-핫 인코딩은 텍스트를 유의미한 벡터로 변환하는 방법으로, n개의 단어를 n 차원의 벡터로 표현한다.[8]

  • 단어 임베딩
컴퓨터에 '해시넷'과 '블록체인'을 보여주면 컴퓨터는 두 단어의 개념적인 차이를 이해할 수 없다. 단순히 유니코드의 집합으로만 판단할 것이다. 기계가 단어를 인지하기까지 단어는 기계가 이해하기 쉽도록 수치로 표현되어있어야 한다. 과거에는 이를 해결하기 위해서 단어가 100개가 담긴 사전이 있다면 그만큼 길이가 100인 벡터를 만들었다. '해시넷'과 '블록체인'이라는 단어를 표현하고 싶다면 벡터의 단어가 해당하는 자리에 1을 넣어 번거로움이 있었다. 큰 불편함은 없었지만, 기계가 '해시넷'과 '블록체인'이 본질적으로 무슨 차이를 가지는지 이해할 수 없다는 단점이 존재했다. 이점을 극복하기 위해 고안된 것이 단어의 의미를 온전히 벡터화시키는 것이다. 단어 여러 개를 다룰 때도 더해서 평균 구하기, 단어의 유사도 측정, 벡터 연산을 통한 추론 등이 가능하다는 장점이 있다.[9]
비슷한 의미가 있는 단어는 비슷한 문맥을 가지는 경향이 있다고 가정할 때, 분산 표상으로 표현된 벡터 또는 단어 임베딩은 자신과 이웃한 단어의 특징을 찾는다. 이러한 분산 표상 벡터는 단어 간의 유사성을 내포하고 있어 벡터 간의 유사성을 측정할 수도 있다는 장점이 있다. 단어 임베딩은 벡터 차원의 빠른 계산이 가능하고 단어 간의 문맥 파악, 문맥 유사도를 잡아내는 데 효율적이며, 주로 딥러닝 모델의 첫 번째 처리 계층에 자주 사용된다. 전통적인 단어 빈도수 기반의 모델은 딥러닝 기반의 모델은 뉴럴네트워크의 깊이에 있다. 그동안 좋은 임베딩을 생성할 때 깊은 구조의 뉴럴 네트워크는 불필요했기 때문에, 그동안 임베딩 벡터를 생성하는 모델은 보통 얕고 간단한 뉴럴 네트워크였다. 하지만 딥러닝 기반 모델의 경우에는 임베딩 벡터를 활용하여 단어, 구, 문장을 표현하기 때문에 비교적 중요성이 높다.
단어 임베딩에도 한계점이 있다. 첫 번째는 둘 이상의 단어를 개별 단어 벡터로 만들 수 없다. 이를 해결하기 위해서는 동시 등장 단어에 기반한 구문을 찾아 별도로 학습시키거나, 레이블이 없는 데이터에서 N-gram 임베딩을 직접 학습시켜야 한다. 두 번째는 임베딩이 사용된 애플리케이션에 크게 의존한다. 어떠한 사전 준비도 없이 임베딩을 학습시키면 시간과 자원을 많이 소비하게 되므로 주의해야 한다.[7]
  • 워드 투 벡터 (Word2Vec)
워드 투 벡터는 2013년 구글에서 발표된 연구로, 토머스(Tomas Mikolov)와 연구자들이 함께 고안했다. 워드 투 벡터를 구성하는 네트워크 모델은 CBOW와 Skip-gram 두 가지이다.
CBOW 모델은 n개의 주변 단어를 줬을 때 중심 단어의 조건부 확률을 계산하는 모델이다. 문장 중간중간에 필요한 단어가 없더라도 주어진 단어의 앞뒤로 n/2개씩 총 n개의 단어를 인풋으로 사용하고, 단어를 맞추는 네트워크를 생성한다. CBOW 모델은 크게 인풋 레이어, 프로젝션 레이어, 아웃풋 레이어로 구성되어있다. 인풋에서는 단어를 원-핫 인코딩으로 넣고, 여러 개의 단어를 프로젝션시킨다. 그리고 벡터들의 평균을 구하여 프로젝션 레이어에 보내면, 연산하여 아웃풋 레이어로 전송된다.
Skip-gram 모델은 CBOW 모델과 달리, 중심 언어를 줬을 때 주변 단어를 예측하는 모델이다. Skip-gram 모델은 CBOW 모델보다 학습이 조금 느리지만, 실제로 실험을 진행해봤을 때는 Skip-gram이 CBOW에 비해 전체적으로 다소 좋은 결과를 냈다.[9]
  • 문자 임베딩  : 단어 임베딩은 주어진 단어의 문법적인 정보와 의미적인 내용을 파악할 수 있다. 하지만 품사 태깅인 개체명 인식의 경우 단어의 형태 또한 중요하다.
문자 수준의 자연어 처리 시스템은 다양한 해결방안과 논문이 작성되고 있다. 어떤 연구에서는 개체명 인식 문제에서 단어 임베딩과 문자 수준 임베딩을 함께 적용하여 포르투갈어와 스페인어 말뭉치에서 성과를 냈고, 다른 연구에서는 개채명인식에서 미리 학습된 레이블 임베딩을 학습하기 위해 다른 임베딩 기법들을 활용했다. 특정 언어에 딥러닝 기법을 적용하는 연구들은 단어 임베딩보다는 문자 임베딩을 택하는 경우가 많다. 그 이유는 단어는 문자가 결합하어 생성한 형태라서, 문자 임베딩은 사전에 없는 단어에 자연스럽게 대처할 수 있기 때문이다. 중국어와 같은 언어를 예로 들 수 있는데, 문장이 단어뿐만 아니라 문자로도 구성되는 특정 언어의 경우, 단어보다는 문자 수준 시스템의 구축이 필요하다.

컨볼루션 신경망[편집]

워드 임베딩이 성능을 인정받고 인기를 끌 게 되자, n-gram에서 높은 수준의 피처를 추출하는 효율적인 함수의 필요성이 대두됐다. 그리고 컨볼루션 신경망은 입력한 문장에서 핵심적인 n-gram 피처를 추출할 수 있는 장점이 있었다. 이러한 추상화된 피처들의 경우, 자연어 처리에서 요약, 감성 분석, 기계번역, 질의응답 같은 문제들에 유용하게 사용될 수 있었기 때문에, 컨볼루션 신경망(CNN)의 인기가 상승했다. 문장 모델링 작업을 할 때 컨볼루션 모델링을 사용하는 일은 2008년 Collobert와 웨스턴의 연구부터 시작됐다. 이들은 다범주 예측 결과를 출력하는데 품사 태깅, 개체명인식, 의미역결정, 언어 모델과 같은 자연어 처리 문제를 해결하기 위해 다중작업 러닝을 적용했다. 참조 테이블은 각 단어를 사용자 정의 벡터로 변형하여 사용되는데, n개의 단어로 구성된 문장을 참조 테이블을 사용하여 n개의 벡터의 나열로 변환된다. Collobert는 기존에 넘쳐나던 자연어 처리 문제를 해결하는데 컨볼루션 신경망 기반 프레임워크를 제안하고, 많은 연구자가 사용하도록 촉발했다.

문장의 번째 단어의 임베딩 벡터를 라고 하고 벡터의 차원 수가 라고 가정한다. 개의 단어로 구성된 문장이 주어졌을 때, 문장은 x 크기의 임베딩 행렬로 표현된다. ,,..., 결합을 라고 하면, 컨볼루션은 이 값에서 수행된다. 컨볼루션 필터 는 차원 수가 인 벡터이다. 이 필터는 h개 단어 벡터에 적용된다. 예를 들면 컨볼루션 필터로 추출된 피처 를 활용하여 생성되어 다음과 같은 식이 만들어진다.


b는 bias term을 의미하며, 는 비선형 활성 함수를 의미한다. 필터 는 동일한 가중치를 사용한다. 컨볼루션 신경망의 커널은 보통 수백 개에 이르며, 폭은 각기 다르다.


개체명인식, 품사 태깅과 같은 다양한 자연어 처리 문제를 해결하기 위해서 단어 단위 예측이 다소 필요하며, 이를 위해 윈도우 접근법이 쓰이기도 한다. 단어의 범주가 이웃 단어에 의존할 것이라는 가정하에, 고정된 크기의 윈도우가 가정되고, 윈도우 내의 하위 문장들도 고려된다.[7]

순환 신경망[편집]

사용자가 '금강산도'을 입력한 뒤에는 '식후경'이라는 결과값이, '동해물과'을 입력한 뒤에는 '백두산이'라는 결과값이 나올 것이라고 대부분의 사람이 그렇게 예측한다. 순환신경망은 이러한 글이나 문장을 보고 앞뒤의 데이터 간의 연관성을 파악하여 완성시키는 알고리즘이다. 인공 신경망의 한 종류이며, 순차적인 정보를 처리하는 네트워크이다. 시간에 흐름에 따라 변화하는 데이터를 학습하기 위한 인공신경망으로, 과거에 출력했던 데이터를 기억해서 재귀적으로 참조한다.[10] 유닛 간의 연결이 순환적 구조인 것이 특징이며, 이러한 구조는 시변적 동적 특징을 모델링 할 수 있도록 신경망 내부에 상태를 저장할 수 있도록 해준다. 내부의 메모리를 사용하여 시퀀스 형태의 입력을 처리할 수 있기 때문에 필기체 인식, 음성 인식, 랭귀지 모델링, 기계번역, 이미지 캡셔닝과 같이 다소 변동이 있을 수 있는 데이터를 처리 할 수 있다는 장점이 있다. 전통적인 뉴럴 네트워크와는 달리 모든 입력값이 독립적이라고 가정하는 특징이 있으며, 순환 신경망(Recurrent Neural Networks)의 'recurrent'는 모델이 입력 시퀀스의 각 인스턴스에 같은 작업을 수행하며, 아웃풋은 이전 결과에 의존하기 때문에 생긴 명칭이다. 유닛에 토큰을 하나씩 입력하면 시퀀스를 표현하기 위해 일정한 크기의 벡터가 생성된다. 순환 신경망은 이 과정에서 기억한 연산 결과를 연산 과정에 활용한다.[11]

  • 필요성 : 순환 신경망은 데이터를 순차적으로 처리하는 성질을 지니기 때문에, 단어와 단어 사이에서 언어의 고유한 순차적 성격을 알아낼 수 있다. 또한, 매우 긴 문장이나 단락, 문서를 포함하여 다양한 길이의 글을 모델링할 수 있기때문에, 시퀀스 모델링에 적합하다. 컨볼루션 신경망과 달리 제한없이 글을 포착할 수 있는 유연성도 지니고 있으며, 처음부터 문맥 의존성을 모델링하기 위해 만들어졌다. 시간 분산 조인트 처리를 위한 네트워크를 지원하는 등 많은 장점을 가지고 있다. 컨볼루션 신경망과 비교되기도 하는데, 두 방식은 문장을 모델링하는 목적이 다르므로 어느쪽이 더 낫다고 단정할수는 없다. 컨볼루션 신경망은 n-gram을 추출하려고 하고, 순환 신경망은 경계가 없는 긴 문장을 생성하는 것이 목적이다. 둘 모두 n-gram의 피처를 잡는데는 효율적일지 몰라도, 단어 순서에 관한 민감도는 어느정도 제한되는 부분이 있다.[7]
  • 구조 : 자연어 처리에서 순환 신경망의 네트워크 구조는 다층 퍼셉트론이고, 주로 엘먼 네트워크(Elman network)에 기반을 두고 있다. 입력층, 은닉층, 출력층의 3단계 계층구조로 이루어진 네트워크이다. 은닉층은 이전 데이터를 참조하도록 각기 서로 연결되어 있는 형태이다. 즉, 입력값이 일 때 출력값이 라면, 출력과 동시에 이 사실이 다음 출력값인 에 영향이 있다. 이전 데이터가 현재 데이터에 영향을 미치는 과정을 수식으로 표현하면 다음과 같다.


은 이전 상태값을 나타내고, 인공지능은 현재 상태값을 계산하기 위해 이전상태값을 매번 참조한다. 즉, 값에 가중치 를 곱한 결괏값이다. 학습 단계에서 이 가중치 는 특정 값에서는 확신이 높고, 다른 값에서는 확신이 낮게 설정되도록 조정해야만 한다. 이 과정에서 은닉층이 여러 층 반복되면 다소 문제가 발생할 수도 있는데, 이를 해결하기 위해서 장단기 메모리(LSTM)가 사용되기도 한다.[10]

활용[편집]

기술[편집]

최근 인간의 이해를 바탕으로 인간 친화적 서비스를 제공하기 위한 지능형 시스템의 발전이 꾸준히 이루어지고 있다. 이러한 인공지능 시스템의 핵심 기술은 사용자가 손쉽게 원하는 지식을 대화하면서 서비스받거나 언어 제한 없이 다양한 정보를 획득하고 의사소통할 수 있는 언어지능 기술이다. 또한, 언어지능을 위한 핵심 기술로서 질의응답 기술과 자동통역 기술이 상용화된다면 다양한 언어로 만들어진 다양한 정보를 한국어로 검색하여 정보를 획득할 수 있고 다른 언어를 사용하는 사람들과도 자유롭게 소통할 수 있게 된다. 원활한 의사소통과 지식획득을 위한 언어지능기술의 실현으로 인간 중심의 편리한 세상은 더욱 앞당겨질 것으로 기대된다. 이러한 자연어 기반의 언어지능기술의 핵심 기술인 음성 인터페이스 기술, 자동통역 기술, 그리고 자연어 질의응답 기술은 자연어 처리 기반의 인공지능 기술이다.[12]

음성 인터페이스 기술

음성 인터페이스 기술은 인간의 자연스러운 통신 수단인 음성을 인식하여 기계와의 인터페이스를 가능하게 해 주는 기술이며 사람의 말을 이해하고 대화를 통해 사용자의 의도와 상황에 맞는 서비스 및 응답을 제공하는 기술인 대화처리 기술과 같이 사용되어 자연스러운 사용자 인터페이스(NUI, Natural User Interface)의 근간이 되는 기술이다. 이를 위한 주요 기술로 자연어 음성 인터페이스 기술과 자연어 대화처리 기술이 있다. 자연어 음성 인터페이스 기술은 인간의 자연스러운 말을 인식하는 음성인식 기술로 입력 음성에 대한 음향 및 언어 모델링, 환경에서의 강인안 잡음 처리가 기본적으로 필요하며, 음성인식 기반의 정보 처리를 위한 핵심어 검출 기술 개발이 필요하다. 음성인식 기술의 핵심 기술로 자연어 음향모델링 기술, 의미기반 언어모델링 기술, 환경에 강인한 음성 인식 기술, 핵심어 검출 기술 등이 있다. 음성인식 기술의 활용 서비스로 언어 이러닝 서비스가 개발되고 있는데, 자유 발화를 인식하여 대화형태의 언어 학습 시스템을 이용해 언어 사교육비 문제 및 다문화 가족의 언어소통 문제를 해결할 수 있을 것으로 기대된다. 자연어 대화처리 기술은 사람과 기계 간의 대화를 처리하는 기술로써 입력 대화체 문장에 대해 발화자의 의도를 이해하기 위한 대화 이해 기술, 자연스러운 대화 유도를 위한 대화모델링 기술, 외국어 교육 등에 적용할 수 있는 대화 오류 교정 기술 등으로 구성되어 있다. 대화 이해 기술은 사용자 대화의도를 인식하는 기술로 도메인 독립적인 통계적 기반 방법이 대세로 사용된다. 대화처리 기술을 외국어 교육에 접목하여 자동 교육 방식을 제공하려는 연구가 활발히 진행 중이며 향후 대화식 외국어 교육 피드백에 대한 연구가 활발할 것으로 예상된다.[12]

자동통역 기술

자동통역 기술은 크게 다국어 자동번역 기술과 다국어 음성 자동통역기술로 구성되어 있다. 다국어 자동번역 기술은 다국어 문서 또는 대화를 자국의 언어로 자동으로 번역하는 기술로써 입력 텍스트 및 대화체 문장에 대한 언어분석, 변환·생성 기술이 기본적으로 필요하며, 번역 성능 향상 및 언어 확장성을 위해 지식 추출·학습 기술과 하이브리드 자동번역 기술이 필요하다. 이를 위한 주요 기술로 다국어 언어분석 기술, 다국어 생성 및 변환 기술, 지식추출 및 학습 기술, 하이브리드 자동번역 기술 등이 주요 구성 요소이다. 다국어 언어분석 기술은 다국어 입력 문장에 대해 컴퓨터가 이해할 수 있는 단위로 언어학적으로 분석하는 기술로 구성되며 형태소 분석, 구문 분석 및 의미 분석 기술은 자연어 처리의 기반 기술로써 크게 규칙 기반 방법과 통계 기반 방법으로 나눌 수 있다. 지식추출 및 학습 기술은 기존의 소규모 지식 전문가에 의한 번역지식 수동 구축의 한계를 벗어나 대용량 말뭉치로부터 번역지식을 자동으로 추출 및 학습하는 기술로 지식의 용도에 따라 언어 분석과 생성을 위한 지식학습과 자동번역을 이한 단어 및 구 단위 번역 지식학습 등으로 나눌 수 있다. 하이브리드 자동번역 기술은 단일 자동번역 엔진에서의 번역 성능 한계로 복수개의 엔진에서 최적의 번역결과를 선택하는 기술이다. 다국어 음성 자동통역 기술은 사람의 말을 인식하고 다국어로 통역하는 기술로써 편리한 인터페이스를 위해 텍스트, 제스처, 음성 등을 활용하는 멀티모달 인터페이스 기술과 연결될 필요가 있다. 자동통역시스템은 주로 여행·관광 분야 의사소통이 1차 목표이며 일상, 비즈니스 등 다양한 영역으로 확대될 전망이며 웨어러블 컴퓨터의 발달에 따라 스마트폰이 아닌 착용형 안경, 착용형 시계에 통역기가 장착되어 사용성의 편리함이 극대화될 것으로 예상된다.[12]

자연어 질의응답 기술

자연어 질의응답 기술은 사용자의 자연어 질문에 맞는 정답 후보들을 추출하여 그중에 최적 정답을 제시하는 기술로 다양한 인공지능 응용 시스템에서 언어지능 핵심 모듈로 활용이 가능한 기술이다. 자연어 질의응답 기술은 다섯 개의 세부 기술로 구성되어 있다. 첫 번째는 자연어 질문분석 및 이해 기술이다. 최적의 정답추출 전략을 결정할 수 있도록 질문을 정답추출의 전략별 유형을 구분하고 인식하는 자연어 질문 분류 기술로 정답 유형 인식 기술을 포함한다. 두 번째는 정답 후보 생성 기술이다. 정답후보 생성을 위한 효과적인 문서·단락인 구문 분석 기술과 의미 분석 기술인 개체명 인식 기술을 통합적으로 활용하여 언어의 내용을 이해하는 기술이다. 네 번째는 개방형 지식 추출 기술이다. 빅데이터 처리를 위해 구문분석 결과나 의미역 할당 결과를 이용하여 이벤트 템플릿을 생성하는 기법과 텍스트 자체만 이용해서 사건의 주체와 객체들을 파악하여 지식을 추출하는 기법을 포함한다. 마지막으로 지식-지식베이스 연동 기술이 있다. 텍스트에서 추출된 지식을 지식베이스에 존재하는 지식들과 비교·대조하여 지식의 진실성, 중복성, 개연성 등을 분석하고 최종적으로 삭제할 것인지 유지할 것인지 결정하는 기술이다.[12]

사례[편집]

  • Wordrep : 카카오브레인은 2017년에 설립된 ㈜카카오의 자회사이자 인공지능 연구소이다. Wordrep은 카카오브레인에서 2018년 진행했던 프로젝트이며, 유의미한 단어 간의 관계 데이터를 제공하자는 취지로 진행됐다. 국내에는 다양한 목적의 어휘 관계 사전이 개발되고 있으나, 이러한 대규모 사전을 편집하는데 투입되는 인력과 자금은 많지 않아 시간이 오래 걸린다는 문제가 발생하고 있다. 카카오브레인은 유의어와 반의어에 대해 알고 싶은 전 세계의 작가나 기자 등을 위해 다국어 서비스를 지원하겠다는 것이 목표였고, 단어 벡터 사전의 수집, 불필요한 자원 절약, 유사 단어 검색과 시각화 등의 단계를 거쳐 단어 간의 유사도를 표현해냈다. 자연어 문제를 해결할 때마다 단어 임베딩을 수행하는 것은 매우 비효율적이다. 카카오브레인은 페이스북이 페스트테스트(FastText) 임베딩 기법을 이용하여 생성한 벡터 사전을 이용하여 이를 해결했다.[10]
  • 자연어 API  : 2017년 11월 27일, 구글 클라우드 플랫폼(GCP)에서 자연어 API를 배포했다.[13] 자연어 API는 영어뿐만 아니라 한국어, 중국어, 일본어, 이탈리어어, 독일어, 스페인어 등 다양한 언어의 분석이 가능하고, 일부 기술은 영어에만 적용이 된다. 구글 자연어 API에서는 감성 분석, 엔티티 분석, 구문 분석, 엔티티 감성 분석, 내용 분류 다섯 가지 메소드를 제공했는데, 엔티티 감성 분석과 내용 분류는 영어에만 기능이 적용된다. 감성 분석의 경우, 감성을 정향화한 스코어와, 스코어의 정도를 나타내는 수치로 나누어 점수를 매긴다. 감성을 정향화한 스코어는 -1에 가까우면 부정, +1에 가까우면 긍정의 의미를 갖게 되고, 스코어의 정도를 나타내는 수치는 0에서 무한대의 값을 가진다. 만약 긍정적인 문장 세 줄과 부정적인 문장 두 줄을 입력할 시, 시스템은 스코어와 수치를 계산하여 긍정적인 문서라고 판단한다. 엔티티 분석은 문장에서 고유 명사나 식당, 유명인 단어를 분석한다. 구문 분석은 문장을 토큰 단위로 분리하여 분석한다. 의존성, 품사, 기본형 등 분석 결과를 제공한다.[14]
  • 엑소브레인 : 과학기술정보통신부가 국가적으로 추진 중인 국가 혁신기술 연구개발 프로젝트로, '내 몸 밖의 인공두뇌'라는 의미이다. 2016년 EBS 장학퀴즈에서 인간과 함께 대결한 결과, 압도적으로 승리하여 유명해졌다. 이를 통해 대중에게 '한국형 알파고'라고 불리기도 했다. 프로젝트의 비전은 '세계 최고의 인공지능 기술을 선도한다'며, 최종 목표는 '자연어를 이해하여 지식을 자가학습하며, 전문 직종에 취업 가능 수준의 인간과 기계의 지식 소통이 가능한 지식과 지능이 진화하는 소프트웨어'를 개발하는 것이다. 프로젝트는 핵심 기술 개발, 응용 기술 개발, 글로벌 기술 개발 3단계로 진행될 계획이며, 10년이 넘는 개발 과정 동안 약 800여억 원이 넘는 자본이 투자됐다. 프로젝트에는 한국전자통신연구원(ETRI)와 카이스트(KAIST), 그리고 자연어처리 기업 ㈜솔트룩스 등이 참여했다. 2018년 8월, 한국전자통신연구원과 ㈜솔트룩스, 카이스트는 '엑소브레인 언어지능 심포지엄'을 개최했다. 한국전자통신연구원의 김현기 박사는 인공지능 문어체 구문 분석의 경우 언어학자 수준의 분석이 가능하지만, 의미 분석은 연구 초기 단계에 해당한다고 말했다.[15]
  • 카이 : 카카오에서는 2018년부터 형태소 분석기 카이를 오픈소스로 제공하고 있다. 딥러닝 기술을 기반으로 개발된 형태소 분석기를 오픈소스로 제공한 것은 국내에서 카카오가 최초이다. 딥러닝 기술 중 하나인 CNN을 사용하여 형태소가 분석되며, 국립국어원에서 배포한 세종 코퍼스를 기반으로 데이터 오류는 없는지 검사하고 수정했다. 카이의 딥러닝 과정에는 C++ 언어가 사용되어 그래픽처리장치를 사용하지 않아도 분석 속도가 빠르다.[16][17]
  • 그래머리 : 2009년에 설립된 영문 문법 검사기이다. 현재 수백만 명의 사용자가 이용하고 있는 온라인 편집 기업이다. 사용하고 있는 브라우저에 무료 브라우저 확장 프로그램을 설치하면 손쉽고 용이하게 사용이 가능하다. 머신러닝, 딥러닝, 자연어 처리 방식 등 인공지능 방법론을 조합하여 구축된 프로그램으로, 인공지능 시스템에는 피드백 메커니즘을 가지고 있다. 따라서 문법적인 특정 피드백을 다수의 사용자가 거절할 경우 연구원이 알고리즘을 조정하여 프로그램의 지속적인 성장과 유지보수가 용이하다.

"그래머리(grammar.ly)의 맞춤법 검사는 인공지능과 결합하며 더 똑똑해지고 있습니다. 잘 작성된 영문 콘텐츠를 머신러닝한 덕분이죠. 이 덕분에 시중 사전이나 번역기보다 문장을 훨씬 더 자연스럽게 교정합니다. 신조어를 무조건 오류로 출력하지 않죠. 다른 영문과 비교해 많이 사용되는 단어로 인식되면 오류 표시를 하지 않습니다."[18]

  • 샤오아이스  : 마이크로소프트가 중국에서 선보인 챗봇으로, 일상 대화를 50문장 이상 진행할 수 있다.
  • 봇숍 : 미국의 메신저 업체 킥은 20, 30대 젊은 소비자를 타깃으로 운영중인 기업으로, 화장품 및 의류 기업들과 제휴하여 봇숍이라는 챗봇을 운영하고 있다. 봇숍은 코디네이터처럼 사용자와 대화하며 사용자에게 옷과 화장품을 추천해준다. 또한 메뉴에서 원하는 업체나 메신저를 고르고 원하는 서비스를 말하면, 해당 업체에서 서비스를 제공한다.

각주[편집]

  1. SD아카데미, 〈인공지능(A.I)기술과 자연어 처리(Natural Language Processing)〉, 《네이버 블로그》, 2018-03-23
  2. 애피어, 〈딥러닝이 자연어 처리(NLP)에 가장 효과적인 이유〉, 《애피어》, 2019-07-16
  3. 자연어 처리 위키백과 - https://ko.wikipedia.org/wiki/%EC%9E%90%EC%97%B0%EC%96%B4_%EC%B2%98%EB%A6%AC
  4. 김경선, 〈[인공 지능 기반 언어 처리 기술 - 자연어 대화 인터페이스를 중심으로]〉, 《새국어생활》
  5. 국민대학교 자연언어처리 연구실 - http://nlp.kookmin.ac.kr/main.html
  6. 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 김학수 강원대학교 컴퓨터정보통신학전공 교수, 〈우리말 자연어 처리 기술 - 과거와 현재〉, 《(특집) 4차 산업 혁명 시대의 국어 생활》
  7. 7.0 7.1 7.2 7.3 이기창, 〈딥러닝 기반 자연어처리 기법의 최근 연구 동향〉, 《깃허브》, 2017-08-16
  8. 이수경, 이주진, 임성빈, 〈단어 간 유사도 파악 방법〉, 《카카오브레인》, 2018-01-31
  9. 9.0 9.1 김범수, 〈word2vec 관련 이론 정리〉, 《개인 블로그》, 2016-01-17
  10. 10.0 10.1 10.2 라인하트, 〈인공지능의 이해 (5/6): 순환 신경망(RNN)〉, 《브런치》, 2019-11-11
  11. 순환 신경망 위키백과 - https://ko.wikipedia.org/wiki/%EC%88%9C%ED%99%98_%EC%8B%A0%EA%B2%BD%EB%A7%9D
  12. 12.0 12.1 12.2 12.3 한국전자통신연구원 최미란 책임연구원, 〈자연어처리 기반의 인공지능 기술 현황〉, 《한국전자통신연구원》
  13. 구글 클라우드 홈페이지 자연어 - https://cloud.google.com/natural-language/
  14. 이영민, 〈구글의 자연어 처리 기술〉, 《브런치》, 2017-11-27
  15. 강승만 에디터, 〈ETRI 언어지능 심포지엄, ‘구문분석’ 언어학자 수준…의미분석은 초기단계 “고품질 학습테이터 필요”〉, 《사이언스모니터》, 2018-08-13
  16. 플래텀, 〈카카오, 딥러닝 기술 기반의’형태소 분석기’ 오픈소스 제공〉, 《플래텀》, 2018-11-30
  17. 카카오 정책산업 연구, 〈카카오의 딥러닝 기반 형태소 분석기〉, 《브런치》, 2018-11-29
  18. 생각노트, 〈Grammarly는 어떻게 '맞춤법 검사'로 매일 700만 명이 찾는 서비스가 됐을까?〉, 《오픈애즈》, 2018-05-28

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 자연어 처리 문서는 인공지능 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.