What is Natural Language Processing?
자연어처리(natural language processing, NLP) 분야는 인공지능의 큰 줄기 중에 하나입니다. 특히, 컴퓨터에게 사람이 사용하는 언어를 처리하고 이해하도록 함으로써, 사람과 컴퓨터 사이의 매개체 또는 인터페이스 역할을 할 수 있습니다. 따라서 computer science 뿐만 아니라, linguistics와 같은 다른 학문과의 융합적인 요소도 갖고 있습니다. 실제로 NLP는 아래와 같이 세부적인 주제로 나누어 볼 수 있습니다.
- Phonetics and Phonology – the study of linguistic sounds
- Morphology – the study of the meaning of components of words
- Syntax – the study of the structural relationships between words
- Semantics – the study of meaning
- Discourse – they study of linguistic units larger than a single utterance
따라서, 이러한 NLP의 세부적인 부분들이 합쳐져 최종적인 목표는 사람의 언어를 이해하여 컴퓨터로 하여금 여러가지 tasks를 수행할 수 있도록 하는 것입니다. 컴퓨터는 이제 우리와 뗄 수 없는 존재가 되었고, 그러므로 이미 실제로 NLP는 우리의 일상에 가장 깊숙히 들어와 있는 분야이기도 합니다. NLP에 의해서 수행되는 대표적인 task 또는 응용분야들은 다음과 같습니다.
- Siri, Alexa와 같이 사용자의 의도를 파악하고 대화하거나 도움을 주는 task
- 요약, 번역과 같은 task
- 감성분석과 같이 대량의 텍스트를 이해하고 수치화 하는 task
- 사용자로부터 입력을 받아 사용자가 원하는 것을 검색 및 답변을 주는 task
우리는 이 책을 통해서 위의 task들을 위한 기술들의 대부분을 다루고자 합니다. 위의 대부분의 기술들이 deep learning에 의해서 비약적인 발전이 있었지만, 그 기반이 되는 수십년의 역사 또한 중요합니다. 따라서 최신 기술에 대해서 다루기 위해서는 그 이전의 기술들에 대해서도 다루고, 무엇이 문제였으며, 어떻게 최신의 기술이 어떤 돌파구를 마련했는지 아는 것도 중요합니다. 따라서, 이 책은 이러한 task들에 대한 최신 기술 뿐만 아니라, deep learning 이전의 주요 기술들에 대해서도 간략히 다루어 기초부터 차근차근 쌓아올릴 수 있도록 하고자 합니다.