1. 자연어란?
프로그래밍 언어와 같이 사람이 인공적으로 만든 언어가 아닌, 사람이 일상생활과 의사소통에 사용해 온 한국어, 영어와 같이 오랜세월에 걸쳐 자연적으로 만들어진 언어
자연어 처리(Natural Language Processing)
컴퓨터가 인간의 언어를 알아들을 수 있도록 인간의 언어를 분석하고 해석하여 처리하는 인공지능의 한 분야
자연어를 컴퓨터로 해석하고, 의미를 분석하여 이해하고 자동으로 생성하는 것 등에 관련된 분야
2. 자연어처리 테스크
자연어처리가 다학제 연구인만큼 다양한 테스트들이 있다.
크게 Linguistics, Text Mining, Artificial Intelligence(AI) 세가지 범주에서 테스크를 구분함.
Linguistics
언어학에서는 자연어를 이해하고 생성하는 문제를 여러 단계의 언어 계층 구조로 분해해서 해결한다12. 예를 들어, Phonology 분석으로 여러 개의 phonemes를 하나의 morpheme으로 만들고, Morphology 분석으로 여러 개 또는 하나의 morpheme을 하나의 word로 구성한다. 이는 인지과학 프로세스와 관련이 있다.
- 음운론 (Phonetics and Phonology) – 발화의 소리 특징 및 패턴을 연구
- 형태론 (Morphology) – 형태소 의미와 구조의 이해를 연구
- 통사론 (Syntax) – 단어/구/문장 구조를 연구
- 의미론 (Semantics) – 언어의 의미(meaning)를 연구
- 담화론 (Discourse) – 문장의 묶음(담화)를 연구
Text Mining
Text Mining은 데이터 마이닝의 KDD (Knowledge Discovery in Databases) 프로세스를 그대로 따르며 정보 검색과 정보 추출에 집중한다. Information Retrieval은 Text Mining과 구별되지만 여기서는 Text Mining의 범주에 포함시킨다. Retrieval은 정보 선택을, Mining은 지식 추출에 초점을 맞춘다.
- Information Retrieval (IR)
- Information Extraction (IE)
- Clustering
- Topic Analysis
- Visualization
AI (Artificial Intelligence)
AI 항목에는 깊은 레벨의 언어 분석이 필요한 고차원 테스크로 구성된다. 이들은 많은 서브 테스크들을 포함하며 자연어 이해에서부터 생성에 이르기에 대부분 어려운 테스크이다. 이들은 주로 자연어생성(NLG)에 속한다.
- Automatic Summarization / Paraphracing
- Natural Language Generation
- Dialogue System (=Conversational Agent, =Chatbot)
- Machine Translation
- Question Answering
3. 자연어 처리는 왜 이렇게 어려울까?
인간의 언어를 컴퓨터에게 전달하고, 컴퓨터의 언어를 인간이 이해할 수 있게 바꾸는 과정은 쉬운 일이 아니다. 이는 언어 자체가 갖고 있는 여러 특징 때문이다.
모호성(Ambiguity)
1) 표현의 중의성
차를 마시러 공원에 가는 차 안에서 나는 그녀에게 차였다.
위 문장을 영어 번역기에 입력했을 때, 우리가 이해한 것을 정확하게 구현하는 영어 문장을 과연 확인할 수 있을까? 인간의 언어에는 ‘차’와 같이, 소리와 모양은 동일하지만 맥락에 따라 의미가 달라지는 단어들이 있다. 우리는 이 문장을 보고 직관적으로 맥락을 파악해내지만, 컴퓨터는 그렇게 할 수 없다.
2) 문장 내 정보 부족
나는 철수를 안 때렸다.
[해석 1] 철수는 맞았지만 때린 사람이 나는 아니다.
[해석 2] 나는 누군가를 때렸지만 그게 철수는 아니다.
[해석 3] 나는 누군가를 때린적도 없고 철수도 맞은 적이 없다.
...
위 문장은 여러 가지 의미로 해석될 수 있다. 언어는 효율성 극대화를 위해 커뮤니케이션 과정에서 많은 정보가 생략되기도 한다다. 하지만 컴퓨터는 자연어를 인간처럼 이해하는데 한계가 있기 때문에, 정보의 생략이 많을수록 자연어 처리는 굉장히 어려워진다.
4. 한국어 자연어처리가 어려운 이유
1) 접사 추가에 따른 의미 발생
한국어로 ‘사과’라는 단어와 접사를 붙여 문장을 만들어 보자. ‘사과(어간)’ + ‘를(접사)’일 때는 ‘사과’가 목적어가 되지만, ‘사과(어간)’ + ‘가(접사)’일 때는 ‘사과’가 주어가 되어 같은 언어도 문법적 기능이 달라지는 걸 볼 수 있다. 이는 교착어인 한국어의 대표적인 특징이다.
2) 유연한 단어 순서
나는 밥을 먹으러 간다.
밥을 먹으러 나는 간다.
나는 간다, 밥을 먹으러.
한국어는 단어의 순서를 바꾸어도 전체 맥락을 이해하는데 전혀 문제가 없다. 몇 가지 경우를 제외하면, 어순이 바뀌어도 문법적인 오류가 없는 올바른 문장이라 볼 수 있다. 이러한 언어적 특징은 인간에게는 편리하지만, 컴퓨터에게는 매우 어렵다. 어순이 제각각이지만 의미는 동일한 이 문장들을 동일한 정보로 처리하는 것이 쉽지 않기 때문이다. 한국어의 자연어 처리가 유독 더 어려운 이유이다.
3) 모호한 띄어쓰기 규칙
한국어의 띄어쓰기는 근대에 들어서 도입 되었으므로 문장에서 띄어쓰기의 중요도가 낮다. 영어의 경우, 띄어쓰기만으로 단어의 분리가 가능하지만 한국어는 불가능하다.
4) 평서문과 의문문의 차이 없음, 주어 부재
점심 먹었어. (I had lunch.)
점심 먹었어? (Did you have lunch?)
어순의 변화 없이, 주어가 생략되어도 한국어는 이해하는데 큰 문제가 없다. 하지만 똑같은 의미의 문장을 영어에서 한국어로 컴퓨터가 번역하는 것과, 한국어에서 영어로 변환하는 데에는 큰 차이가 있다. 동일한 문장에 마침표 대신 물음표를 붙이고, 주어에 대한 정보를 생략하더라도 한국어에서는 문장이 완성된다. 따라서, 컴퓨터가 숨겨진 맥락이나 의미를 파악하는데 더 까다로울 수밖에 없다.
5) 한자 기반의 단어
한자는 표어문자, 한글은 표음문자
표어문자 : 하나 하나의 문자가 하나의 말, 단어, 형태소를 이루는 문자시스템
표음문자 : 문자에서 각 글자가 특정 의미를 가지지 않고, 단지 각 음성에 대응하여 발음을 나타내는 문자 시스템
한글이 한자를 대체하면서 문제가 발생
한자(표어문자) ➔ 한글(표음문자) ➔ 정보의 손실 발생 ➔ 모호성 등의 문제 유발
인간은 정보의 손실로 발생한 모호성을 문맥의 이해를 통해 해석 가능. 기계는 어려움
다른 언어보다 중의성에 따른 문제가 더욱 가중됨
'Deep learning > 자연어처리' 카테고리의 다른 글
BERT (0) | 2023.08.03 |
---|---|
bert 모델 공부하기 (0) | 2023.07.28 |
02. 전처리 : 토큰화 (0) | 2022.09.06 |
트랜스포머 , GPT 코드 구현 (0) | 2020.10.16 |