Skip to main content

자연어 처리의 주요 과제

문서 분류

텍스트 분석에서 가장 많이 하는 것은 문서 분류이다. 문서 분류는 글을 몇 개의 유형으로 정해놓고, 텍스트를 입력하면 그것을 정해진 것 중 하나로 분류해주는 것이다. 예를 들어, 스팸 필터는 메일을 스팸과 스팸이 아닌 것, 두 가지로 분류한다. 이메일이 오면 이 둘 중 하나로 분류해주는 것이다. 문서 분류는 가장 널리 활용되는 자연어 처리 과제 중 하나이다.

감성 분석은 글을 긍정과 부정으로 나누는 것이다. 이는 소비자 리뷰 같은 경우에 많이 사용되는데, 긍정 의견과 부정 의견을 파악하는 것이 중요하기 때문이다. 정서 분석은 이를 더 세분화하여 기쁨, 슬픔 등으로 나누는 것을 말한다.

의도 분류는 주로 챗봇에서 사용된다. 예를 들어, 은행 앱에서 고객이 할 수 있는 일은 정해져 있다. 계좌 개설, 돈 인출, 송금, 계좌 확인 등이 있다. 고객이 "나 돈 얼마 있지?"라고 하면 계좌를 확인하고 싶은 것이고, "누구한테 얼마 보내줘"라고 하면 송금을 하고 싶은 것이다. 고객은 다양한 방식으로 말할 수 있지만, 은행 앱에서 할 수 있는 일은 정해져 있다. 이렇게 정해진 일 중에서 고객이 지금 하고 싶은 것이 무엇인지 분류하는 것을 의도 분류라고 한다.

토큰 분류

문서 분류가 글 전체를 분류하는 것이라면, 글을 구성하고 있는 단어 또는 토큰을 분류하는 것도 있다. 이를 토큰 분류라고 한다. 토큰이라는 말을 쓰는 이유는 글을 단어 단위로 쪼갤 수도 있고, 더 작은 형태소 단위로 쪼갤 수도 있기 때문이다. 어쨌든 글을 구성한 요소라는 의미에서 토큰이라고 부른다.

예를 들어, 고객이 주문을 했을 때 고객의 의도는 알겠지만, 고객이 주문한 메뉴가 무엇인지 알아내려면 고객이 말한 내용 중 메뉴를 언급하는 부분을 뽑아낼 수 있어야 한다.

게임에서 욕설을 막고 싶을 때도 토큰 분류를 사용할 수 있다. 고객이 욕설을 우회하기 위해 숫자를 집어넣거나 말을 바꾸더라도, 각 토큰이나 단어가 욕설인지 아닌지 분류해서 욕설로 판정되는 토큰을 마스킹할 수 있다.

이메일에서 '몇 월 며칠에 회의합시다'라는 문구를 자동으로 인식하여 달력에 추가해주는 기능도 토큰 분류를 통해 구현할 수 있다.

개체명 인식은 토큰 분류의 일종으로, 이름(Name)을 찾는 토큰 분류 방법을 말한다.

질의 응답

질의응답이라고 하여 검색과 비슷하지만 다른 부분이 있다. 기본적으로 검색은 키워드를 알고 그 키워드를 찾는 것이다. 반면 질의응답은 질문한 단어를 직접 찾는 것이 아니라, 질문의 의미에 해당하는 답을 찾아준다.

예를 들어, 검색에서는 '서울'이라고 치면 서울을 검색해주지만, 'Where is the capital of Korea?'라고 입력하면 '서울특별시'라고 대답해준다. 여기에는 '서울'이라는 말이 없지만 질문에 해당하는 답을 찾아주는 것이다.

자연어 처리에서 질의응답은 이런 식으로 질문을 하면 거기에 답변을 해주는 것을 말하며, 주로 텍스트에서 답변을 찾아준다. 이를 검색과 결합하면 원하는 정보를 정확한 키워드를 모르더라도 질문만으로 찾을 수 있다.

예를 들어, 'How old is Biden?'이라고 하면 나이가 나온다. 영어의 경우 이러한 질의응답이 잘 되지만, 한국어는 아직 잘 되지 않는다.

이 기술이 발전하면 보험 약관과 같은 전문적인 문서에서도 유용하게 사용될 수 있다. 보험 약관의 전문 용어나 법률 용어를 모르더라도 질문을 통해 해당되는 약관을 찾을 수 있게 된다. 이는 자연어 처리 또는 텍스트 분석에서 활용할 수 있는 한 가지 방법이 된다.

언어 모형

언어 모형은 주어진 문장이 나올 확률을 계산한다. 주로 다음에 나올 단어를 예측하는 형식으로 작동한다. 예를 들어, 어떤 문장이 있으면 처음에 나올 단어, 그 다음에 나올 단어, 그 다음에 나올 단어를 순차적으로 예측하여 문장 전체의 확률을 계산할 수 있다.

언어 모형은 다양한 분야에서 활용된다. 음성 인식의 경우, 소리만으로 단어를 구별하기 어려울 때 맥락을 고려하여 다음에 나올 단어를 예측한다. 이를 통해 더 정확한 음성 인식이 가능해진다. 문자 인식, 필기 인식, 번역, 철자 수정 등에서도 언어 모형이 사용된다.

또한, 언어 모형은 새로운 문장을 생성하는 데에도 활용된다. 예를 들어, 새해 인사 문자를 작성할 때 "새해 복 많이 받으시고" 다음에 올 적절한 단어나 문구를 예측할 수 있다. 맥락에 따라 "가족들과 함께" 또는 "앞으로도" 등의 단어가 적절하다고 예측할 수 있다.

Seq2Seq

시퀀스 투 시퀀스(sequence-to-sequence)라고 하여 텍스트를 입력으로 주면 새로운 시퀀스, 즉 문장을 생성하는 형태의 과제도 있다. 이런 과제는 앞서 언급한 문서-단어 행렬로는 해결할 수 없고, 어순을 처리해야 한다. 최근 딥러닝 분야의 발전으로 이러한 기술들이 가능해졌다.

예를 들어, 번역은 문장을 입력받아 다른 언어의 문장을 만드는 것이다. 이는 입력도 시퀀스이고 출력도 시퀀스인 형태다. 요약도 긴 문장을 입력받아 짧은 문장을 내놓는 것으로, 시퀀스 투 시퀀스 방식으로 수행된다.

챗봇의 경우, 앞서 언급한 의도 분류처럼 정해진 의도 중에서 분류하는 방식은 주로 서비스용 챗봇에 사용된다. 반면, 사용자와 자유롭게 대화하는 챗봇도 있을 수 있다. 예를 들어, 심심해서 챗봇과 농담을 주고받고 싶은 경우, 정해진 답변만 하는 챗봇은 재미가 없을 것이다.

이런 경우 챗봇은 자연스럽고 다양한 대화를 할 수 있어야 한다. 사용자가 질문을 입력하면 챗봇이 답변을 하는데, 이는 앞서 언급한 질의응답처럼 정해진 답을 주는 것이 아니라 다양한 답변을 줄 수 있어야 한다. 예를 들어, 사용자가 "심심하다, 오늘 뭐 하지?"라고 물으면 정해진 답변이 아닌 다양한 답변을 줄 수 있어야 한다. 이러한 경우도 시퀀스 투 시퀀스 구조로 만들게 된다.

토픽 모델링

마지막으로 토픽 모델링이라는 기법이 있다. 이전까지 다룬 기법들은 대체로 어느 정도 정답이 있는 문제를 푸는 것이었다면, 토픽 모델링은 문서의 잠재된 구조를 찾는 것이다.

토픽 모델링에서는 실제로 정확한 정답이 있다기보다는, 대량의 문서를 효과적으로 분석하는 방법을 제공한다. 예를 들어, 100만 개의 고객 리뷰가 있을 때 이를 모두 읽어보는 것은 불가능하다. 이때 토픽 모델링을 사용하면 문서들을 대략적인 큰 토픽들로 나눌 수 있다.

이 방법은 정확한 정답이 있는 문제는 아니지만, 더 좋은 답과 나쁜 답을 구별할 수 있다. 토픽 모델링은 주로 텍스트 마이닝에 활용되며, 고객들의 의견을 대략적인 큰 덩어리로 나누는 데 사용된다.

퀴즈