brunch

You can make anything
by writing

C.S.Lewis

by 알바트로스 Jul 01. 2022

인공지능은 사람이 될 수 없다

첫 출근 그리고 NLP(자연어 처리)

첫 출근이 엊그제 같은데 어느새 정신없이 일주일이라는 시간이 지났다.

2년 만에 명함과 직함이 생겼고, 빌딩 숲과 커다란 산이 보이는 오피스 창가에 내 자리도 생겼다.

동료들과 함께하는 점심식사와 커피타임이 아직은 조금 낯설게 느껴지지만, 나쁘지 않은 기분이다.


입사 후 이틀 만에 진행하게 될 프로젝트가 정해졌다.

보통 신입이든 경력이든 짧게라도 적응기간을 갖는다고 하는데, 인생 참 다이내믹하다.

조금 더 웜업을 하고 싶은 마음도 있지만, 무언가에 항상 갈증을 느끼던 참에 이것 역시 나쁘지 않다.


데이터 사이언티스트로서 처음 맡게 된 프로젝트는 NLP(자연어 처리) 중에서도, TA(Text Analysis), 즉 텍스트 분석 프로젝트다. 음성 기반으로 추출된 텍스트 속에서 필요한 정보와 화자의 의도를 분석하고 의미 있는 인사이트를 도출해 내야 한다. 실전 투입에 앞서 나는 자연어 처리에 대해 얼마나 알고 있을까?(너무 모르는 것 같다...) 스스로 점검해 볼 겸 관련된 개념들을 정리해 보기로 했다.



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


오랜 시간 인간의 전유물로만 여겨져 왔던 '언어'를 컴퓨터에게 가르치고, 나아가 컴퓨터가 스스로 언어를 자유자재로 사용하게 할 수는 없을까? 이러한 질문에 답하기 위한 오랜 연구들이 모여 NLP(자연어 처리)라는 분야가 만들어졌다. 간단히 말해 NLP(자연어 처리)란 인공적이지 않은, 즉 자연스럽게 발생한 모든 언어(한국어, 영어, 일본어 등)를 컴퓨터가 처리하고 응용하게끔 해주는 모든 기법들을 다루는 머신러닝(딥러닝)의 한 분야를 말한다.


NLP는 또다시 인풋을 다루는 NLU(Natural Language Understanding)과 아웃풋을 다루는 NLG(Natural Language Generation)로 나뉘는데, 전자는 각 언어 텍스트의 문법과 문맥 등을 컴퓨터가 사람이 의도한 바와 같이 이해하게끔 하는 영역이며, 후자는 한 발짝 더 나아가 컴퓨터가 이해한 것을 바탕으로 직접 인간이 이해할 수 있는 텍스트를 생성해내는 영역이다. 번역기, 챗봇, 텍스트 분석 등 다양한 NLP 응용 기술에는 NLU(인풋)과 NLG(아웃풋)의 요소가 섞여있다고 생각하면 무리가 없을 것 같다.



- 실생활 속의 자연어 처리


텍스트의 데이터화는 이미 많은 부분 이루어져 왔고, 실생활 속 다양한 분야에서 응용되어 왔다. 챗봇, 리뷰(평점) 분석, 번역기, TA(텍스트 분석) 등 누구나 한 번쯤 사용해 본 적이 있을 법 한 모든 분야에 NLP가 활용되고 있다. 예를 들어 우리가 배달 음식을 시켜먹고 작성한 '리뷰와 평점'은 하나의 귀중한 '텍스트 데이터'가 된다. 배달 플랫폼에서는 수십만 건의 리뷰 데이터를 바탕으로 고객들의 식당에 대한 생각들을 분석하고 보다 정확히 파악할 수 있다.


우선 가게 사장님은 수십 수백만 건의 고객 리뷰를 보고 전체적인 음식에 대한 평이 긍정적인지 혹은 부정적인지를 쉽게 알 수 있다. 나아가 음식이 짠지, 양이 적은 지, 배달이 느린지 등 고객의 세부적인 의견도 한눈에 파악하고 개선할 수 있으며, 배달 플랫폼에서는 고객의 리뷰와 주문한 가게에 대한 정보를 바탕으로 고객이 선호할 만한 가게를 추천해주며, 고객별로 쿠폰을 다르게 발행할 수도 있다. 이 모든 분석의 가운데에는 자연어 처리가 있다.



- 컴퓨터가 자연어를 이해하는 과정


아시다시피 거의 모든 경우 컴퓨터가 인식할 수 있는 것은 주로 0과 1로 이루어진 숫자뿐이다. 음성, 이미지, 텍스트 등 어떠한 형태의 데이터도 컴퓨터는 숫자의 형태로 인식하게 된다. 그럼 어떻게 아이폰 siri는 어떻게 '오늘의 날씨는?'이라는 숫자가 아닌 '자연어'로 된 질문을 알아듣고 날씨를 알려주는 것일까? 마찬가지로 언어도 컴퓨터는 숫자로 된 데이터가 아니면 인식하지 못한다.  그래서 어떤 모델을 사용하든 자연어를 컴퓨터가 이해할 수 있는 형태(숫자)로 만들어주는 작업이 필요하다.


이것을 벡터화(Vectorization)라고 한다. 그 밖에도 의미 혹은 단어 단위로 문장을 잘라주는 토큰화(tokenization)와 모델에 따라 정보 손실을 방지하기 위한 패딩(Padding) 그리고 정규화(Normalization) 등의 작업, 그리고 더 모델이 더 좋은 성능을 낼 수 있도록 불용어(Stop word) 지정과 범주화(Categorization) 등 전처리 과정이 필요하다.


데이터가 준비되었다면 이제 본격적으로 머신러닝(딥러닝) 모델을 만들어볼 차례다.  크게 두 가지 분류로 나누어 볼 수 있을 것 같은데, NLP를 가능하게 해주는 모델들은 word2 vec, fasttext 등 통계적 언어 모델(Statistical Language Models) 계열과 RNN, CNN 등 신경망 기반의 전이 학습(transfer learning) 계열 모델들로 나눌 수 있을 것 같다. 방대한 양의 사전학습(pre-trained)을 마친 전이 학습 계열의 모델들은 대부분의 경우 통계적 언어 모델보다 성능이 좋을 수밖에 없고, 실제로도 요즘 많이 쓰이고 있다.



- TA(Text Analytics)란?


TA(텍스트 분석)이란 말 그대로 텍스트의 패턴을 분석하여 글의 의도를 파악하거나 핵심과 의도 등을 알아내는 NLP의 한 기법이다. 텍스트 분석은 비즈니스와 실생활에서 다방면으로 응용되고 있다.


예를 들어 여러 사람 간의 대화를 텍스트로 옮겨놓았을 때, 발화자가 뒤섞여 있다면, 우리는 누가 어떤 말을 했는지 어떻게 구분할 수 있을까? 또한 글쓴이가 특정 문장이나 단어를 말했는지 여부를 알아보고 싶을 때에는 어떻게 하면 될까? 혹은 수백, 수천 건이 넘는 긴 리뷰를 하나하나 읽어보지 않고도 글쓴이의 의도를 파악할 수는 없을까?  이처럼 텍스트 분석은 비즈니스와 실생활 등 다방면에서 매우 유용하게 쓰인다.



- NLP의 한계점 : 인공지능은 사람이 될 수 없다



최신 모델로 아무리 사람의 언어를 잘 '유추' 해낼 수 있고, 그럴듯한 문장을 '생성'해 낼 수 있다고 해도,

정형화되지 않은 텍스트 데이터를 분석해서 사람의 의도를 파악하려는 시도는 정말 쉽지 않은 것 같다.


생각해보면 '말뿐인' 사람이 얼마나 많은가? 말을 아무리 그럴듯하게 했다고 해서 그 사람이 내뱉은 말을 지킬지는 미지수이다. 뿐만 아니라 가지고 있는 데이터가 문맥을 알기 힘든 대화 형식의 텍스트인 경우, 문맥이 일정하지 않아 컴퓨터가 화자의 의도를 파악하기가 너무 힘들다.


대부분의 데이터 분석 프로젝트는 '데이터 확보와 전처리'가 90%라고 한다.  그 많은 데이터 중에서 쓸만한 데이터를 구하는 것이 너무 힘들고, 구했다고 해도 쓸만한 형태로 가공하기 까지는 수많은 난관이 기다리고 있다. 어쨌든 출근을 했고 다이내믹한 한 주가 지났다.  앞으로도 수많은 난관이 있겠지만. 나는 늘 그래 왔듯이 묵묵히 하려던 일을 할 것이다.


매거진의 이전글 모든 점은 연결된다
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari