목차


1. 동기

1990년대 이후, 컴퓨터의 대중화로 수많은 데이터를 저장하게 되면서 NLP 방법론이 사람의 믿음에 근거로 하는 Rational NLP에서 경험(데이터)을 근거로 의사결정을 하는 Empirical NLP로 옮겨졌다. 지금까지 데이터를 기반으로 의사결정을 하는 모델은 더욱 발전했고, 전통적인 규칙 시스템은 주목을 받지 못하고 있다.

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

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


2. NLP 개요

2.1. NLP 테스크

NLP 테스크를 분류하는 기준은 다양하다. 여기서는 같은 성격의 테스크를 그룹별로 묶어보고 난이도를 기준으로 문제가 쉬운 순에서 어려운 순으로 vertical하게 나열했다.

테스크가 쉽고, 어렵다는 것은 어떤 의미일까?

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

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

2.2. NLP 방법론

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

규칙과 통계에 대해서 자세히 살펴보자. 이들의 장단점과 함께 서로 비교해보자.

규칙 (Rules)

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

통계 (Statistcis)

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

이들의 장단점과 trade-off 관계를 잘 이해하면, 상황에 맞는 적합한 방법론을 선택하거나 조합할 수 있다.


3. 실무를 위한 NLP

NLP의 실무적인 측면을 이해하는 것이 본 글의 제목의 궁금증을 푸는 열쇠이다. 이 장에서는 학계가 아닌 산업에서의 NLP를 살펴본다.

3.1. 종류

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

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

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

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

3.2. 유의할 점

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

4. 올바른 전략

다양한 변수와 조건이 있는 리얼월드 환경에서는 어떤 방향으로 NLP 개발을 하면 좋을까?

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

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

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

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

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

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

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

보통 NLP 시스템은 여러 개의 모듈로 구성된 파이프라인으로 구성된다. 각 모듈은 규칙 시스템이거나 통계 모델이 된다. 이들은 단계적으로 구성된다. 선두 모듈의 에러가 후미 모듈에 증폭되어 전달되는 단점이 있지만, 서로 상호작용을 통해 전체 성능을 높일 수 있는 장점도 있다. 이러한 구조를 반복적으로 파이프라인 싸이클을 돌리면서 발전해야 한다. 모든 모듈의 성능을 최적화 과정을 통해 끌어올리는 것과 같다. 이 과정에서 규칙과 통계 방법론이 서로 보완재 역할을 한다. 이러한 최적화 관점뿐만 아니라, 항상 변하는 데이터의 특성을 따라가기 위한 이유도 있다. 세상은 급변하고 있고, 이를 토대로 관측된 데이터도 변한다. 더군다나 언어는 내재적으로 계속 변하기 때문에 NLP에선 이런 싸이클이 더욱 중요하다.


5. 마무리

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


6. 각주

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

7. 참고

  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