목차


1. 시작하기에 앞서

2012년 ImageNet 대회를 앞도적으로 우승하면서 딥러닝 방법론이 본격적으로 각광을 받기 시작했다. 이미지를 시작으로 음성과 텍스트에도 빠르게 스며들었다. 규칙(휴리스틱)과 함께 고전적인 기계학습 방법론은 딥러닝 방법론의 베이스라인이 되었다.

1990년대 이후, 컴퓨터의 대중화로 수많은 데이터를 저장하게 되면서 NLP 트렌드는 사람의 믿음에 근거로 의사결정하는 Rational NLP에서 경험(데이터)을 근거로 하는 Empirical NLP로 이동했다. 그 이후 지금까지 데이터를 기반으로 의사결정을 하는 모델을 중심으로 NLP는 발전했고, 전통적인 규칙 시스템은 메인에서 멀어졌다.

최근 NLP를 접하다보면 자연스럽게 기계학습, 딥러닝 모델의 우수함을 자연스럽게 느끼게 된다. 하지만, 실제 비즈니스 환경은 인력, 비용, 시간 등 고려해야 될 변수가 많고, 문제를 해결하는 방법이 한 가지만 존재하는 것이 아니다. 실무에서는 주어진 조건에 맞게 가장 적합하고 효율적인 방안을 선택하는 일이 중요하다. 이 글에서는 이러한 관점으로 실전에서 NLP를 개발할 때 유의해야 할 점과 올바른 방향성을 정리해보았다.


2. NLP 훑어보기

지피지기면 백전백승! 우리가 사냥할 먹잇감(NLP 테스크)과 이를 해결할 수 있는 무기(방법론)를 알아보자.

2.1. NLP 테스크

텍스트를 컴퓨터가 이해하기 용이한 형태(ex. 심볼, 벡터)로 변환하고, 이를 재료로 어떤 액션(ex. 분류)을 취하는 일을 모두 NLP 테스크라 볼 수 있다. 여기서는 비슷한 특징을 가지는 테스크를 그룹별로 묶어보고, 난이도를 기준으로 문제가 쉬운 순에서 어려운 순으로 vertical하게 나열했다.

NLP 테스크는 다양한 기준으로 구분될 수 있지만, 여기는 크게 Linguistics-base NLP, NLG, Text Mining 으로 그룹핑해보았다. Linguistics-base NLP는 근본적인 언어 분석을 하기 때문에 다른 테스크의 기초가 된다. 모두 이질적인 테스크라기 보다는 서로 밀접한 관련이 있다. 이와 관련된 글인 자연어처리 개요(Overview) 도 참고해주세요.

NLP 테스크(문제)가 쉽고, 어렵다는 것은 어떤 의미인지 한 번 생각해보자.

  • 단순한 규칙, 리소스로 해결할 수 있으면 쉬운 문제라 볼 수 있고, 복잡한 규칙 또는 수학 모델, 방대한 데이터로 풀 수 있다면 어려운 문제라고 볼 수 있다.
  • 언어 계층 구조로 NLP 테스크를 구성하면 난이도 순서와 같아진다. 예를 들어, 음운론은 가장 하위 단계로 쉬운 문제이고, 의미론과 담화론은 상위로 어려운 문제라 볼 수 있다.
  • 어려운 테스크는 여러 개의 쉬운 테스크들을 포함하기도 한다. 예를 들어, 대화 시스템을 위해서 토크나이징, 검색, 질의응답 등의 문제를 서브로 모두 해결해야 한다.
  • NLP 도전 과제로 중의성(ambiguity), 상식(common knowledge) 등이 있다. 문제가 어려워질수록 이러한 도전 과제는 더 두드러진다.

문제를 푸는 방향성은 효율성을 중시하는 실무에서 특히 중요하다. 무작정 개발을 착수하기 보다는 목표와 문제의 본질을 잘 이해해서 올바른 방향을 설정해야 한다.

2.2. NLP 방법론

NLP 방법론은 큰 범위에서 보면 규칙(rules)과 통계(statistics)로 두 가지 진영이 있다. 초기에는 규칙에 전적으로 의존했지만 데이터가 풍부해짐에 따라 이를 핸들링하는 기술인 통계가 각광을 받기 시작했다1. 단순한 규칙, 복잡한 규칙, 얕은 통계, 깊은 통계 등과 같이 각 방법론에서도 레벨의 정도가 다양하게 있을 수 있기에 이들은 horizontal하게 나열될 수 있다.

규칙은 리소스와 휴리스틱한 알고리즘을 모두 포함하며 대표적으로 사전, 지식그래프, 정규표현식, 언어지식 등을 활용한다. 통계는 n-gram, 기계학습, 딥러닝 모델 등이 있다.

큰 틀에서 규칙과 통계의 장단점을 비교하면서 살펴보자. (+)는 장점을, (-)는 단점을 나타낸다.

규칙 (Rules)

  • 사람의 전문성에 의지함.
  • top-down 방식으로 전문가를 흉내냄.
  • (+) 빠르게 프로토타입형 시스템 구축이 가능함.
  • (+) if, then으로 모호하지 않은 확실한 응답을 출력함.
  • (+) 시스템의 유지보수와 오류 분석(디버깅)이 쉬움.
  • (-) 오래된 규칙은 쓸모가 없어질 수 있음. 시간에 따라 업데이트 필요함.
  • (-) 휴먼 리소스 비용이 큼. 전문가, 전문적인 도메인 지식 수작업.
  • (-) 시스템이 복잡하고 거대해질수록 – 예외가 많음, 서로 상호작용하는 규칙이 많음. 겹칠 시에 우선순위 할당이 어려움. 규칙 추가가 어려움.
  • (-) 특정 상황/도메인에서만 효과적임.
  • (-) 시스템 확장성이 낮음. 규칙의 복잡성과 특이성 때문임.

통계 (Statistcis)

  • 데이터의 힘을 믿음.
  • bottom-up 방식으로 inductive함.
  • (+) 확장성이 좋음.
  • (+) 도메인 전이가 쉬움.
  • (+) 시스템 변화/업데이트에 유연함.
  • (-) 개발 비용이 큼. (학습 데이터, 리소스, GPU 장비)
  • (-) 블랙박스 문제 – 오류의 원인을 해석하기 어려움.
  • (-) 일반적이지 않는 논리적 추론(logical reasoning)을 하기 어려움. (규칙은 아주 쉬움)

각각 분명한 특징이 있고, 결이 달라 보이지만, 서로 부족한 점을 보완해주는 관계가 될 수 있다. 이들의 장단점과 trade-off 관계를 잘 이해한다면, 상황에 맞게 적합한 방법론을 선택하거나 조합할 수 있을 것이다.


3. 실전에서 NLP 개발

3.1. NLP 서비스

비즈니스적으로 많이 활용되는 NLP 서비스는 무엇이 있을까?

학계에서는 NLP를 주로 기술적인 관점으로 정리한다. 반면, 실무에서는 사용자 관점 혹은 특정 어플리케이션을 위해 여러 개의 세부적 테스크들을 묶어서 하나의 제품(또는 솔루션)으로 표현한다. 대상이 텍스트 분석을 원하는 개발자 혹은 일반 사용자에 따라 크게 두 가지 종류가 있다.

개발자를 대상으로 하는 가장 대표적인 NLP 제품은 클라우드에서 출시되는 제품이다. Google Cloud, Amazon Comprehend, Microsoft Azure Cognitive Services, IBM Watson Cloud 등이 있다. 감정 분석, 구문 분석, 분류, 엔티티 인식 등의 NLU 엔진을 기본으로 제공한다. 일반 사용자들을 타겟으로 하는 NLP 제품은 무엇이 있을까? 기계번역, 문서요약, 질의응답 등과 같은 인공지능 제품이 있고, 맞춤법 검사기, 카타카나, 로마자 변환기 등과 같은 실생활에 실용적인 제품도 있다.

도메인 영역도 살펴보자. NLP 기술이 상용적으로 잘 활용되는 도메인으로 크게 검색, 대화 플랫폼이 있다. 첫 번째 도메인은 검색이다. 검색 품질은 회사의 매출과 직결되기 때문에 이를 높이기 위한 NLP 기술은 매우 중요하다. 텍스트 상품 데이터를 의미 단위로 분석해 랭킹, 추천 등의 모듈에서 사용한다. 두 번째 도메인은 대화 플랫폼이다. 대화는 인간의 편리성을 극대화시켜준다. 어떤 상품의 인터페이스로 사람과의 대화가 지원된다면 진정한 인공지능이 될 수 있다. 음성 대화의 분석 단계는 텍스트 기반의 자연어처리에서 이뤄진다.

실사용자가 사용하는 서비스를 위한 NLP는 많은 서브 테스크와 어플리케이션이 서로 공존한다. 전체 시스템을 먼저 고려한 뒤, 우선적으로 집중해야 될 세부적인 부분을 확인하는 것이 중요하다.

3.2. 유의사항

NLP 서비스를 개발할 때 유의해야 할 사항을 정리해보았다.

  • 프로토타입을 먼저 빠르게 개발하면 좋다. 문제의 난이도를 쉽게 파악할 수 있고 메인시스템의 베이스라인이 되어 성능 비교 분석이 용이하다.
  • 보통 실무에서 주어진 조건은 충분하지 않다. 인력, 시간, 장비, 학습 데이터, 리소스, 특정 도메인 이해도 등이 부족할 수 있다. 주어진 상황에 맞게 우선순위를 정하고 방향성을 정해야 한다.
  • 약간의 오류는 괜찮은 문제가 있는 반면 한치의 오차도 허용되지 않는 문제가 있다. 오류허용하는 범위에 따라서 방법론이 아예 달라질 수 있다.
  • 산업은 트렌드에 민감하다. 수시로 변하는 데이터를 시기에 맞게 잘 분석해야 하고 이를 감지해야 한다. 특히, 텍스트는 사람이 작성하기 때문에 트렌드 영향을 많이 받는다.
  • 실제 자연어 데이터는 정갈하지 않고, 노이즈, 생략 등으로 인한 데이터 변이가 심하고, 짧은 문장으로 정보량도 충분하지 않다. 분석하는 기술뿐만 아니라 정제하는 기술도 매우 중요하다.
  • 배포 환경이 무엇인가? 모바일이라면 시스템을 경량화할 필요가 있다.
  • 사용자는 속도에 민감하다. 시스템에 대한 최적화가 필수이다.
  • 서비스의 최전선에 있는 제품인 경우에는 장애 대응을 신속하게 해야 한다. 또는, 급하게 시스템을 수정할 상황이 생긴다. 통계 기반인 머신러닝과 딥러닝 모델은 재학습 때문에 시간적 비용이 많이 소모되는 단점이 있다.
  • 버그는 미연에 방지해야 한다. 사소하더라도 크리티컬한 문제가 될 수 있다. 코드 구조화테스트 코드에 신경써야 한다.
  • 정량적 평가뿐만 아니라 정성적 평가도 같이 고려해야 한다. 유창성은 정량적 평가에서 잘 도출해낼 수 있지만, 단어/구 레벨의 부분적인 오류는 정성적 평가로 사람이 직접 확인할 필요도 있다.

3.3. 중요한 포인트

다양한 변수와 조건이 있고, 사용자의 니즈를 만족시켜야 하는 리얼월드 환경에서는 어떤 방향으로 NLP 개발을 하면 좋을까. 세 가지 정도 중요한 포인트를 정리해봤다.

  • 첫째, 주어진 조건에 맞는 방향을 설정하자.

실무에서 제일 중요한 점이 주어진 조건을 잘 이해하고, 그 속에서 가장 효율적인 방안을 마련하는 것이다. 한정된 자원과 허용되는 오류의 범위를 파악한 뒤, 우선순위를 설정해 가장 필요한 일부터 해야 한다. 방향을 잘못 잡으면 많은 시간을 허비할 수 있다.

예를 들어, 모든 일을 홀로 다 수행해야 한다면, 연구 과정은 축소하고 오픈소스 사용을 먼저 고려하자. 처음부터 개발 비용이 큰 머신러닝 파이프라인을 구축하기 보다는 프로토타입용으로 규칙 시스템을 먼저 개발해보자. 참고로 실전에서 규칙으로만 해결될 수 있는 문제들이 많다. 특히, 오류에 민감한 시스템일수록 규칙의 비중은 늘어난다.

  • 둘째, 하이브리드 방법론은 필수이다.

최근에는 머신러닝, 딥러닝 모델 기반의 통계 방법론이 인기가 많다. 기본적으로 통계는 데이터의 평균을 따라가기 때문에 세세한 부분은 놓치기 쉽다. 실무에서는 이런 부분이 더욱 두드러지기 마련이다. 규칙과 통계 방법론을 적절히 조합해서 사용하면 서로의 장단점이 보완되므로 시너지 효과를 얻을 수 있다.

NLP는 다학제 연구인데, 컴퓨터과학과 언어학 비중이 가장 크다. 또한, NLP 연구는 대표적으로 Empirical 진영과 Rational 진영이 있다. 이러한 측면으로, 규칙과 통계적인 방법론을 모두 활용해야 한다는 점을 항상 인지하고 있어야 한다.

넷플릭스 성공 사례를 참고하자. 넷플릭스 Prize 대회를 개최해 많은 머신러닝 연구자들이 참여해 핵심 기술인 추천 시스템의 성능을 끌여올렸다. 제품 혁신 부사장인 토드 옐린은 넷플릭스 초창기 성공 비결은 수많은 인력을 동원한 ‘노가다’식 시스템이라 했다. 머신러닝 뒤에서 엄청난 조력자가 있었던 것이다[3].

  • 셋째, 파이프라인 싸이클이 중요하다.

NLP 시스템은 여러 개의 모듈로 구성된 파이프라인으로 구성된다. 후미 모듈의 에러가 선두 모듈에 증폭되어 전달되는 단점이 있지만, 각 모듈별 성능을 집중적으로 관리할 수 있고, 서로 상호작용으로 좋은 시너지를 얻어 전체 성능을 높일 수 있는 장점도 있다.

이러한 파이프라인에서 가장 중요한 특징은 피드백 구조가 있는 싸이클 형태에 있다. NLP 시스템이 정적이 아닌 동적으로 변화하고 발전할 수 있는 형태인 셈이다. 피드백을 얻고 수정하는 과정에서 규칙과 통계 방법론이 서로 보완재 역할을 할 수 있다. 이러한 싸이클을 빈번하게 돌리면서 모든 모듈의 성능을 최대한 끌어올릴 수 있어야 한다.

항상 변하는 데이터의 특성을 따라가기 위한 이유도 있다. 세상은 빠르게 변하고 있고, 이를 토대로 관측된 데이터도 변한다. 더군다나 언어는 자연적으로 계속 변하는 성질이 있기 때문에, NLP에선 이런 싸이클이 더욱 중요하다.


4. 마무리

NLP 학계에서는 규칙보다는 통계 기반의 모델 연구가 더 활발합니다. 보통 규칙 기반은 베이스라인이고, 통계 모델이 새로운 방법론이 되는 경우가 많아 통계가 더 우월하다고 생각하기 쉽습니다. 실무에서도 요즘 트렌드인 머신러닝, 딥러닝을 먼저 선택하기 쉬운데 주어진 조건에서 효율적인 방법론인지 따져보는 것이 좋습니다. 나아가 규칙과 통계 방법론을 조화롭게 잘 사용한다면 좋은 NLP 서비스를 만들 수 있습니다.


5. 각주

  1. 자연어처리 방법론은 크게 Rationalist 이상주의(규칙)에서 Empirical 실증주의(전통적 통계)로의 흐름이 있다. 딥러닝 내부에서도 3가지 흐름이 있다. cybernetics -> connectionism -> deep learning

6. 참고

  1. (책) Sowmya Vajjala, Bodhisattwa Majumder, Anuj Gupta, Harshit Surana – Practical Natural Language Processing_ A Comprehensive Guide to Building Real-world Nlp Systems-Oreilly & Associates Inc (2020)
  2. (블로그) Why businesses fail at machine learning – Why businesses fail at machine learning | Hacker Noon – https://hackernoon.com/why-businesses-fail-at-machine-learning-fbff41c4d5db
  3. (기사) [넷플릭스 랩스데이] 넷플릭스 추천 시스템의 비밀: ‘노가다’와 ‘머신러닝’ – https://it.donga.com/23942/
  4. (블로그) 쿠팡 기술 블로그 – 두 종류의 상이한 AI시스템 – https://www.theteams.kr/teams/8226/post/73237
  5. (논문) Rule-based Information Extraction is Dead! Long Live Rule-based Information Extraction Systems, IBM – https://aclanthology.org/D13-1079.pdf