메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일 >

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

한빛미디어

|

2021-01-25

|

by Hackernoon

13,513

자연어 처리(Natural Language Processing, NLP)는 인공지능의 하위 분야이다. 자연어를 분석하고 처리하는 능력이다. 자연어는 인간의 의사소통에서 의미를 나타낸다고 할 수 있다.

 

이 분야는 언어의 구조와 의미를 이해하기 위한 연구를 다룬다.

 

자연어 처리에서는 다음과 같은 흥미로운 연구 주제를 찾아볼 수있다.

  • 텍스트의 의미를 이해하는 방법
  • 문장의 의미를 파악하고 context에서 추출하는 방법, 그 단어의 의미를 이해하는 방법
  • 문장 구조를 분석하는 방법
  • 문장의 의미를 만들기 위해 문장 구조를 이해하는 방법

자연어 처리에 가장 널리 사용되는 툴은 다음과 같다.

  1. NLTK
  2. Gensim
  3. Stanford NLP
  4. SpaCy
  5. OpenNLP

 

자연어 처리의 원리

자연어 처리가 어떻게 쓰이는 지에 대한 총 정리는 우리의 초점에 벗어난다. 여기서는 자연어 처리에 대한 개괄적인 개요를 다뤄볼까 한다.

 

자연어 처리는 두 가지 중요 작업, 이해(understanding)와 생성(generation)으로 이루어져 있다. 

 

‘이해’는 문장을 받아들이고 이해하는 것이며, ‘생성’은 의미를 받아들이고 이를 바탕으로 문장을 생성하는 것이다.

 

이해

문장을 이해하는 첫걸음은 각 품사(Parts Of Speech, POS)를 파악하기 위해 문장을 이해하는 것을 시작한다. 다음 단계는 품사 정보를 통해 단어 사이의 구문 관계(syntactic relationships)를 파악하는 것이다.

 

영어에서 구문 관계는 학교에서 배우던 “sentence diagramming” 연습과 유사하다.

 

다음과 같은 문장을 예시로 들어보자.

 

The dog chased the cat.

 

이제 이 문장을 분석하기 위해 각 단어의 품사를 파악한다.

 

The: 명사

dog: 명사

chased: 동사

the: 관사

cat: 명사

 

이제 단어 사이의 구문 관계를 파악한다.

 

The dog는 문장의 주어(subject), The cat은 문장의 직접 목적어(direct object)이며 The는 관사다.

 

그 다음 단계는 문장의 의미를 파악하는 것이다. 기본적으로 품사를 의미로 매핑하는 언어 모델(language model)을 사용해서 해볼 수 있다. 동사의 경우, 그 의미는 동사의 행동이 될 것이다.

 

예를 들어, 동사 chased(쫓다)는 “어떤 대상을 잡을 의도로 뒤를 급히 따르다”라는 의미를 가지고 있다. 마지막 단계는 문장으로부터 추론(inference)하여 누락된 정보를 채우는 것이다. 예를 들어 고양이는 잡히지 않았다고 추론해볼 수 있다.

 

생성

생성 작업은 의미를 통해 문장을 생성하는 것이다. 똑같은 예시를 사용해보겠다.

 

The dog chased the cat.

 

첫번째 단계는 문장의 의미를 파악하는 것이며 그 다음 단계는  문장을 생성하기 위해 이 의미를 사용하는 것이다.

 

이를 위해 의미를 파악하고 단어를 함께 연결함으로써(concatenate) 새로운 문장을 만들어 볼 수 있다.

 

예를 들어 dogchased를 연결하여 "The dog chased"라는 문장을 만들 수 있다.

 

그러면 dogcat을 연결해 “The dog chased the cat”이라는 문장을 만들 수 있다.

 

이와 같은 방식은 “순차 생성”이라 부르며 생성적인 시스템의 핵심 요소다.

 

자연어 처리의 용도

자연어 처리는 텍스트의 의미를 파악하고 이해하는데 사용된다. 다른 언어로 텍스트를 자동으로 번역하고 해석하는데 사용될 수도 있는 것이다.

 

또한 문서에서 정보를 추출할 때도 쓰일 수 있으며 심지어는 텍스트의 정서를 알아볼 수도 있다. 

 

자연어 처리 사용 사례

자연어 처리 API를 위한 다방면의 사례를 보여주기 위해 자연어 처리 사용 사례를 몇 가지 정리해봤다. 추후에도 사용 사례를 설명하기 위해 블로그 연재를 계획하고 있다.

 

자연어 검색

아마도 자연어 처리가 가장 흔히 사용되는 곳은 자연어 검색일 것이다.

 

자연어 처리 검색 API는 문서 내 연관된 텍스트를 검색하기 위해 쓰인다. 검색 결과는 스코어(score) 순서로 나열되어 문서 리스트로 반환된다. 스코어 값이 높을 수록 검색한 내용과 더욱 연관된다.

 

예시로 대규모 문서 모음집에 대한 검색 엔진을 만들어 본다고 해보자. 자연어 처리 검색 API를 사용하여 “JavaScript”라는 단어를 포함한 모든 문서를 찾을 수 있다. 이로써 검색값과의 연관성에 따른 각기 다른 스코어 값이 매겨진 문서 리스트를 검색할 수 있게 된다.

 

언어 감지

언어 감지는 자연어 처리의 또 다른 흔한 예이다. 자연어 처리 언어 감지 API는 문서의 언어를 감지할 수 있게 해준다.

 

문서들을 다양한 언어로 볼 수 있게 만들고 싶다고 해보자. 이 때 자연어 처리 언어 감지 API로 각 문서의 언어를 감지하고 유저가 선택한 언어로 보이게 할 수 있다.

 

개체명 분석

개체명 분석에도 흔하게 사용된다. 자연어 처리 개체명 분석 API는 문서에서 사람, 장소, 기관, 제품 등과 같은 개체명을 추출할 수 있게 해준다. 추출된 개체는 사전(辭典) 리스트로 반환된다.

 

예시로 여행 웹사이트를 만들고 있다고 해보자. 자연어 처리 개체명 분석 API를 사용해 문서로부터 장소에 대한 모든 연관된 정보를 추출해볼 수 있을 것이다.

 

그리고 여기서 추출한 개체로 유저들이 보기 좋게끔 정보를 진열해놓으면 되는 것이다.

 

텍스트 분류

텍스트 분류는 또 다른 사용 사례이다. 자연어 처리 텍스트 분류 API는 텍스트를 많은 카테고리 중 하나로 분류해준다. 이미 알려진 분류 체계로 텍스트를 알맞은 카테고리로 분류할 수도 있고 자신만의 분류 체계를 만들 수도 있다.

 

이번에는 이메일에 적용해보자. 받는 메일들을 자연어 처리 텍스트 분류 API로 알맞는 카테고리로 분류할 수 있다. 이런 카테고리들을 사용해 적절한 메일을 쉽게 나열해줄 수 있다.

 

끝으로

자연어 처리에 대한 얘기는 끝도 없을 것이다. 하지만 자연어 처리가 무엇이고, 어떻게 작동되며, 어디에 쓰이는 지에 대해 간략하게 설명하고 싶었다.

 

 

*****

원문: What is Natural Language Processing? A Brief Overview   Originally published on Hacker Noon

번역: 김정욱

댓글 입력
자료실