티스토리 뷰

이번 글에서는 NLU(Natural Language Understanding) 즉 자연어 이해에 대해 알아보겠습니다.


NLU란 무엇인가?


NLU의 목표기계에 기계어가 아닌 사람이 평소에 쓰는 자연스러운 표현을 그대로 제공해도 알아들을 수 있게끔 하는 것입니다.

  • 자연어 : 사람들이 일상적으로 쓰는 언어, 인간적인 표현
  • 기계어 : 의도어 목적에 따라 인공적으로 만든 언어,
    예를 들어, '엄마한테 오늘 늦는다고 문자 보내줘'라고 할 때, 'send_message'와 같은 코딩을 하지 않아도 그대로 알아듣게 하는 것입니다.

 

여기서 언어란 무엇일까?

만약 드라마 '더 글로리'를 설명하려고 할 때, '학창시절 학교폭력을 당한 주인공이 복수한다' 이렇게 한 줄 줄거리만으로 설명을 할 수 있을가요? 만약 드라마 영상(다차원 데이터)를 보여 주면 한 줄 줄거리보다 더 많은 정보를 포함할 수 있습니다.

반면 텍스트 형식으로 표현된 언어 데이터그 많은 정보를 굉장히 함축하여 인코딩한 자료입니다. 

사람은 언어가 표현하는 대상의 내용을 머릿속으로 상상할 수 있지만 기계는 언어만으로 그러한 사전정보를 얻을 수 없습니다. 

그러므로 기계가 언어를 인식하고 의미와 문맥을 이해하는 것은 쉽지 않습니다.

 


NLU는 NLP와 함께 혼용해서 사용합니다. 하지만 NLP가 좀 더 포괄적인 개념이라 할 수 있습니다.

 

 

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

● 기계가 단어나 문장 형태인식하도록 하는 것입니다.

● 형태소 분석(문장 → 형태소로 쪼갬), 구문 분석 등의 작업을 수행합니다.

 

NLU(Natural Language Understanding, 자연어 이해)

 자연어(텍스트)의 의미와 문맥 인식하도록 하는 것입니다.

 문장의 의도 분류, 언어 간 문장 번역, 문장 내 표현된 감성분류 , 문서 내 중요한 부분 요약고차원의 자연어 작업을 수행합니다.

 


딥러닝 방식의 NLU


초창기 NLU는 룰 기반의 방식이었습니다.하지만 이러한 전통적인 방식은 아래와 같은 특징이 있습니다.

  • 사람이 직접 추출한 dictionary(feature)을 이용하였습니다.
    예를 들면, 감성사전(각각의 단어의 부정/긍정을 사람이 태깅한 사전)등에 의존하여 수행하였습니다.
  • 수작업으로 feature을 만드는 데에 많은 시간과 노동력이 필요합니다.
  • 예외 처리에 취약합니다.
  • 자연어의 길이기 길어지면 정확도가 낮아집니다.


하지만 딥러닝이 인기를 끌며 NLU에서도 사용하게 되었습니다, 딥러닝 방식의 NLU

  • 모델을 사용하여 데이터로부터 feature을 자동으로 학습합니다.
  • 룰 기반의 방식보다 폭넓은 문맥 정보를 처리할 수 있습니다.
  • 사진, 음성 등 다양한 분야의 모델과 연결한 multi-modal 모델 구축도 가능합니다.

구글에서 사용되는 번역 서비스 역시 딥러닝 방식을 도입한 후에 기존 방식에서 있던 오류를 확 줄일 수 있었다고 합니다.


NLU의 사례



1) 문장/ 문서 분류
자연어로 입력된 텍스트나 문서를 k개의 category로 분류합니다.
예를 들어, 영화에 대한 관람객의 반응을 댓글 감성분석을 통해 알 수 있습니다. 그리고 네이버 메일에서와 같이 특정 보안 규정을 위반한 이메일을 스팸으로 분류하는 것도 텍스트 분류의 한 사례입니다.

 

[RNN 기반의 문장 분류]

순차적으로 들어오는 Sequential data에 적합, 매 시점의 데이터를 누적하여 분류, 학습속도가 느리며 입력문장이 길어질수록 정확도 낮아짐

[CNN 기반의 문장 분류]

이미지 처리하듯 텍스트를 처리하는데 위치 무관하게 문장의 특징을 뽑아내어 분류, 병렬처리가 가능해 속도가 빠름



2) 유사도 판별
두 문장 혹은 문단의 유사도를 분석합니다.
두 개의 텍스트를 입력받아, 문장간의 유사도 점수를 예측하게 됩니다.
예를 들어, 사용자의 질문과 가장 유사한 질문을 찾아서 답변을 낼 때 사용할 수 있습니다.

3) 기계독해
기계가 자연어로 된 문서를 읽고 이해하여 사용자 질문에 해당하는 답변을 찾아서 결과를 내줍니다.
수많은 문서와 질의응답 데이터셋을 학습함으로써, 모델은 문서로부터 질문의 답을 도출하는 방법을 학습하게 됩니다.
특히 학습에 사용되지 않은 처음 보는 문서와 질문이 들어올 때도 답변을 추론할 수 있습니다.

4) Seq2Seq
자연어로 입력된 문장 또는 문서를 다른 형태의 자연어 문장으로 결과로 반환합니다.
대표적으로 기계 번역(네이버 파파고-N2MT, 구글번역-GNMT)과 문서 요약 업무(네이버 뉴스기사 요약봇)를 예시로 들 수 있습니다.

 

[Seq2Seq]

Encoder - Input 문장을 하나의 벡터로 압축

Decoder - Encoding된 벡터에서 정답 단어를 하나씩 추출

[Attention]

매 출력 순간, 사람과 마찬가지로 어디에 집중해서 결과를 낼지 고민하는 기술

 


5) Natural Language Generation

자연어 문장을 생성하는 업무입니다. 예를 들어 이미지를 보고 자막을 생성하거나, 사용자 채팅에 대해 적절한 답변을 생성하는 챗봇을 생각할 수 있습니다. (페이스북에서 발표한 오픈 도메인 챗봇 모델 Blender)

6) 질의 응답(Question Answering)

사용자의 질문이 들어오면 특정 메뉴얼 내에서 가장 답변이 될 가능성이 높은 영역을 리턴하는 MRC(Machine Reading Comprehension)와 가장 유사한 과거 질문/답변(FAQ)를 꺼내주는 IR(Information Retrieval)가 있습니다.

주로 상담 챗봇 및 콜센터에 자주 활용되는 기술입니다.

 

여기서 MRC에 대해 추가적으로 설명을 해보겠습니다.
① 많은 문서와 다양한 질의 응답을 학습하고

② 문서로부터 질문의 답을 도출하는 법을 찾아냅니다.

③ 처음 보는 문서와 질문이 들어와도 답변을 추론합니다.

 

 


NLU을 위한 필수 요건


1) 서비스의 목표를 명확히 한다.

2) 다량의 고품질 학습 데이터를 확보한다.

3) 비언어적 표현, 오타(의도적/비의도적), 신조어 표현들을 주의한다.

4) 텍스트 데이터를 만드는 과정의 오차를 주의한다.