자연어 처리
자연어 처리(Natural Language Processing, NLP)
: 컴퓨터를 사용하여 인간의 언어를 분석하고 이해하여 활용하려는 분야
자연어의 특성
형태적 구조에 따른 언어 분류
- 고립어: 단어가 의미만 나타내고 형태의 변화가 없으며,
어순에 따라 문법적 관계 결정 - 굴절어: 어근과 접사가 쉽게 분리되지 않는 형태.
시제, 격, 수 등에 따라 단어가 변하는 언어 - 교착어: 어근에 문법형태소인 접사를 붙여 단어를 파생시키거나
문법적 관계를 나타내는 언어 - 포합어: 문장을 구성하는 요소가 서로 밀접하게 결합되어 마치 전체 문장이
하나의 단어를 이루는 것처럼 보이는 구조의 언어
한국어 문법
형태론(morphology)
: 형태소들을 결합하여 어절을 형성하는 체계와 규칙을 다루는 문법 분야
- 음절: 문장을 소리 나는 대로 쓸 때 글자 한 자에 대응하는 것
예) 산에 눈이 내린다 -> 사네 누니 내린다 - 어절: 띄어쓰기가 되어 있는 말의 덩어리
- 어근: 단어형성에서 그 단어의 뜻을 나타내는 최소 의미 단위
- 접사: 단어를 형성할 때 어근에 붙어 그 뜻을 제한하는 부분
어근 앞에 오면 접두사, 어근 뒤에 오면 접이 - 어간: 동사, 형용사와 같은 용언이 활용될 때 변하지 않는 부분
- 어미: 용언을 활용할 때 어간에 붙어서 변화하는 부분
- 어말 어미: 단어의 끝자리에 들어가는 어미, 하나의 어간에 어말어미는 하나
- 선어말 어미: 어말 어미의 앞자리에 들어가는 어미, 선어말어미는 여러 개 결합 가능 - 형태소(morpheme): 의미를 가지는 요소로서 더 이상 분해할 수 없는 가장 작은 문법 단위
- 자립여부에 따른 분류
- 자립형태소: 자신이 무슨 뜻인지 알 수 있게 하는 것
- 의존형태소: 자기가 가진 의미를 나타내려면 다른 말에 의존해서 합해져야 하는 것
- 어휘형태소(실질형태소): 사전에 뜻이 나와있는 형태소
- 문법형태소(형식형태소): 문법적 기능을 나타내는 형태소
- 품사(part-of-speech): 단어를 문법적 성질의 공통성에 따라 몇 갈래로 묶어 놓은 것
- 역할에 따른 분류: 체언, 용언, 수식언, 관계 언, 독립언
- 의미에 따른 분류: 명사, 대명사, 수사, 동사, 형용사, 관형사, 부사, 조사, 감탄사

통사론(syntax)
: 어떤 순서로 단어를 배열해야 문장이 되는가에 대한 문장 구성, 구성요소 간의 관계 및 기능을 다루는 분야
- 절: 주어와 서술어 관계인 부분
- 구: 절은 아니지만 어절이 몇 개 뭉쳐서 의미적 기능을 하는 것
- 문장성분: 어절을 역할에 따라 주어, 목적어, 서술어, 보어, 관형어, 부사어, 독립어로 분류한 것
음운론(phonology) : 음운의 성질, 소리와 소리가 만나면 생기는 변화를 다루는 분야
-> 음성인식 분야의 중요한 기반 이론
- 음운
- 음소: 자음, 모음
- 운소: 소리의 길이, 높낮이, 세기 - 음운현상: 사잇소리 현상, 된소리 되기 등
형식문법
형식문법: 특정 형식 언어에 속하는 string을 생성하는 데 사용되는 유한개의 생성규칙들의 집합
형식언어: 특정 형식 문법에 따라 생성될 수 있는 모든 스트링의 집합
- 정규문법(Type-3 문법)
- 정규 언어: 정규 문법을 사용하여 생성되는 언어
-> 정규식으로 표현 가능

- 문맥 자유 문법(Type-2 문법)
: 프로그래밍 언어의 문법 - 문맥 의존 문법(Type-1 문법)
: 문맥에 따라 다르게 대치 가능 문법 - 무제약 문법(Type-0 문법)
- 생성 규칙을 정의하는데 제약이 없음
-> 가장 일반적인 형식 문법
- 튜링 머신으로 인식 가능

자연어 처리의 분석 단계

1. 형태소 분석: 입력된 문자열을 분석하여 형태소 단위로 분해하는 과정
- 불규칙한 활용이나 축약, 탈락 현상이 일어난 경우에 원형 복원
- 규칙 기반 분석
형태소 분석의 활용
- 맞춤법이나 띄어쓰기 교정
- 단어의 품사 결정 정보 제공
- 단어의 의미 추정 정보 제공
품사 태깅(POS tagging)
: 문장의 각 단어에 품사의 범주 및 문법적 기능에 대한 태그를 붙이는 것.
말뭉치(corpus)
: 언어 연구를 위해 컴퓨터가 읽을 수 있는 형태로 텍스트를 모아 놓은 것.
품사태깅 기법
1) 규칙 기반 품사 태깅 방법
: 문장 구성의 원리, 문맥적인 정보와 형태소 정보 등을 이용하여 수작업으로 만든 규칙 사용
2) 기계학습 기반 품사 태깅 방법
: 품사 태깅이 되어있는 말뭉치를 학습 데이터로 사용하여 분류기를 학습하여 사용
말뭉치를 이용한 품사 태깅 방법

개체명 인식(named entity recognition)
: 텍스트에서 인명, 지명, 기관명과 같은 개체명을 인식하여
텍스트에 해당 객체명 태그를 달아 주는 것.
-> 정보검색, 정보추출,질의응답에서 중요한 역할
개체명 인식 기법
1) 규칙 기반의 방법: 개체명을 인식하기 위해 사전들과 규칙들 이용
2) 기계학습 기반의 방법
2. 구문 분석
- 구문에 따라 문장이 가지는 구문 구조를 분석하여,
문장을 구성하는 문자열들이 문장에서 어떤 역할을 하는지 결정 - 구문 분석 결과는 파스 트리 형태로 표현
-> 파싱(parsing)이라고 한다
* 구문(syntax): 문장이나 구절을 만드는 규칙
구문 분석 방법
1) 규칙 기반 구문 분석
: 문맥 자유 문법 형태의 구구조 문법을 이용하여 문장 분석
구구조 문법이란?
문장의 문법을 품사 기호와, 구(句) 기호를 사용하여 문맥 자유 문법 형태로 기술한 것.
- 트리 구조의 생성 진행 방향에 따라 하향식 파싱과 상향식 파싱으로 분류한다.
- 하향식 파싱: 문장 시작 기호 S에서 시작, 생성 규칙을 반복 적용하여 주어진 문장을
얻는 과정을 통해 구문의 구조 파악 - 상향식 파싱: 문장에서 시작하여 문장 시작 기호 S방향으로 파싱 트리를 생성
- 구분 분석은 어려움이 있다
- 구조적 중의성: 하나의 문장이 다수의 구조로 해석될 수 있는 성질
- 어휘적 중의성: 하나의 단어가 여러 품사로 사용되어 다수 구조로 해석될 수 있는 성질
2) 기계학습 기반 구문 분석
: 사람이 구구조 문법을 정의할 필요 없음.
구문 분석이 된 학습 데이터를 사용하여 구문 분석을 하는 모델을 학습을 통해 구축
3. 의미 분석: 구분 분석의 결과를 해석하여 문장의 의미를 결정하는 것.
담화가 이루어지는 상황에 대한 세계 모델(world model)과 상식에 대한 지식 필요.
- 단어 의미 중의성 해소
: 특정 문장에 등장하는 단어가 어떤 의미인지 판별하는 작업
- 화행 분석: 대화 중의 발화가 어떤 종류인지 파악하는 것.
- 문맥 함의: 문장에 표면적으로 나타난 사실 이외에 함의된 사실을 파악하는 것.
- 의미 분석: 통사적으로 옳으나 의미적으로 틀린 문장이 있을 수 있다.
예) 돌이 걸어간다. -> 말이 안되는 문장
또는 모호한 문장
예) 말이 많다
- 단어의 수치화
- one-hot 벡터: 단어 별로 하나의 좌표축을 대응시킨 공간에서, 해당되는 단어 위치에만 1을
설정하고 나머지에는 0을 설정하여, 공간 상에 단어 표현
단점: 단어 간의 유사도를 계산하기 곤란하다.

- Word2Vec 또는 단어 임베딩: 단어의 의미를 충분히 잘 나타내도록 단어를 공간상의
실수 벡터로 표현
-> 유사한 의미의 단어가 벡터공간 상에서 근처에 위치

- CBOW 모델
- V 차원의 one-hot 벡터로 표현된 단어를 N차원의 실수 벡터로 바꾸는 역할
- 입력에 주변 단어들이 주어질 때, 출력에서는 해당 단어가 나타날 확률이 높아지도록 학습
Skip-gram 모델
- CBOW와 대칭적인 구조
- 입력에 학습 대상이 되는 단어가 주어질 때, 출력에서는 해당 단어의 주변 단어들이
나타날 확률이 높아지도록 학습
4. 화용 분석: 실제 상황적 맥락을 고려하여 문장이 실세계와 가지는 연관 관계를 분석하는 것
