Juhans
article thumbnail

NLP(Natural Language Processing) 개요

컴퓨터가 인간의 언어를 이해, 생성, 조작할 수 있도록 해주는 인공 지능(AI)의 한 분야이다.

NLP는 검색, 기계번역, 챗봇, 질의응답(QA), 문서분류, 대화형 인터페이스 등등의 많은 분야에 활용된다.

 

현재에는 많은 기업에서 NLP를 사용한 서비스 구축으로 편리하게 많은 비용을 절감하고 있다.

 

NLP의 목표는 다음과 같다.

- 인간의 언어로 디지털 디바이스(SW, HW)와 interaction하여 원하는 task를 수행.

- 자연어로 된 대량의 컨텐츠를 분석하여 business insight 획득.

 

NLP의 Input과 Output

Input : 음성 or 텍스트

Output : Task가 완료된 State or Answer

 

한국어의 품사 (Parts of Speech, pos)

품사란 단어를 문법적 성질에 따라서 분류한 갈래이다.

 

한국어의 품사는 다음과 같다.

 

크게는 체언, 용언, 수식언, 독립언, 관계언

 

체언 → 명사, 대명사, 수사

용언 → 동사, 형용사

수식언 → 관형사, 부사

독립언 → 감탄사

관계언 → 조사(격조사, 접속조사, 서술격조사)

 

위와 같이 분류되기 때문에 보통 한국어의 품사를 5언 9품사 로 분류한다고 말한다.

 

품사에 대해 예시가 궁금하거나 헷갈린다면 아래의 링크를 확인해보자.https://namu.wiki/w/%ED%95%9C%EA%B5%AD%EC%96%B4%EC%9D%98%205%EC%96%B8%209%ED%92%88%EC%82%AC

 

한국어의 5언 9품사 - 나무위키

문장에서 주어나 목적어가 되는 낱말. 그래서 체언(體言)이다. 명사, 대명사, 수사가 포함된다. 다른 품사를 수식하기 위해 존재하는 품사. 문장 안의 다른 성분과 견련되는 관계를 나타내기 위

namu.wiki

 

형태소 분석

형태소 분석은 한 어절내에 있는 모든 형태소를 분리하고 원형을 복원한뒤 결합관계를 검사하는 과정이다.

 

대표적으로는 모든 형태소를 분리하는 일을 형태소 분석이라고 이해하면 편하다.

 

형태소의 결합 법칙은 아래와 같이 다양하다.

 

  • 명사
  • 명사 + 격조사
  • 명사 + 격조사 + 보조사
  • 명사 + 접미사
  • 접두사 + 명사
  • 접두사 + 명사 + 접미사
  • 명사 + 명사
  • 명사 + 명사 + 조사
  • 명사 + 명사 + 명사 + 접미사 (ex. 영장+전담+판사+실)
  • 동사 + 어미
  • 동사 + 전성어미 + 조사 (ex. 감+기+는)
  • 동사 + 선어말어미 + 어말어미 (ex. 읽+었+다)

 

형태소 분석의 모호성 (morphological ambiguity)

한국어의 형태소 분석은 동일한 표층형 어절이 여러가지 형태소 결합으로 분석이 가능한 문제가 있다.예를 들어, 아래의 두 경우를 보자.

 

"감기는"

  1. 감기 + 는 → 감기라는 질병(명사) + 는(조사)
  2. 감기 + 는 → 머리를 감을 때의 감기(동사) + 는(어미)
  3. 감 + 기 + 는 → 태엽이나 줄을 감을 때의 감(동사) + 기(전성어미/명사형) + 는(조사) 

"영장전담판사실"

  1. 영장 + 전담 + 판사 + 실
  2. 영장전담 + 판사 + 실
  3. 영장전담 + 판사실
  4. 영장전담판사 + 실
  5. 영장전담판사실

 

품사 태깅 (Parts-of-Speech Tagging)

어떤 Input의 어절이나 단어를 형태소 분석의 기준이 될 수 있도록 품사와 매칭시켜주는 작업

형태소 분석의 모호성을 해결한다. 다만 이를 위해서는 해당 문맥에 맞는 품사태그를 매칭시켜줘야 한다.

 

해결방법으로는 아래의 두가지가 있다.

  • 통계(확률) 기법에 의한 해결 → 대량의 품사 태깅된 말뭉치를 구축하여 통계적으로 확률이 높은 품사 태그를 선택.
  • 기계학습(딥러닝) 기법에 의한 해결

HMM (Hidden Markov Model) 기반 품사 태깅

HMM은 대량의 품사태깅된 말뭉치를 기반으로 통계적 기법에 따라 새로 들어오는 말뭉치를 품사 태깅한다.

 

예를 들어 "Birds like flowers"라는 문장이 있다.

이 문장은 "새들은 꽃들을 좋아한다."라고 해석될 수 있지만 "꽃들과 같은 새들"로도 해석될 수 있다.

이는 like의 품사가 어떤 것이냐에 따라 바뀐다.

 

품사를 태깅해보면, (명사, 동사, 명사) 〓 (N, V, N), (명사, 전치사, 명사) 〓 (N, P, N) 두가지로 태그열을 만들 수 있다.

 

그렇다면 어떤 것을 고르는 것이 가장 좋을까?

→ 이 때 통계적 기법으로 가장 많이 등장하는 문맥을 참고하여 태그열을 선정하고 태깅을 한다.

 

HMM 태깅 예시

Pr(N, V, N) = Pr(V|N) x Pr(N|V) x Pr(birds|N) x Pr(like|V) x Pr(flowers|N)

→ "birds like flowers" 문장이 명사 + 동사 + 명사의 의미로 만들어지는 확률

= 명사가 앞에 나왔을 때 동사가 나올 확률 x 동사가 앞에 나왔을 때 다음으로 명사가 나올 확률 x 맨앞의 명사가 "birds"일 확률 x 중간의 동사가 "like"일 확률 x 마지막 명사가 "flowers"일 확률

 

Pr(N, P, N) = Pr(P|N) x Pr(N|P) x Pr(birds|N) x Pr(like|P) x Pr(flowers|N)

→ "birds like flowers" 문장이 명사 + 전치사 + 명사의 의미로 만들어지는 확률

= 명사가 앞에 나왔을 때 전치사가 나올 확률 x 전치사가 앞에 나왔을 때 다음으로 명사가 나올 확률 x 맨앞의 명사가 "birds"일 확률 x 중간의 전치사가 "like"일 확률 x 마지막 명사가 "flowers"일 확률

 

 

 

한국어의 품사는 세종 말뭉치 품사태그를 따르며 실제로 사용되는 세부적인 태그는 아래와 같다.

세종 말뭉치 품사태그

영어의 품사도 아래와 같이 사용된다.

Penn Treebank의 품사 태그
품사 태깅된 문장 예시

 

형태소 분석의 문제

형태소 분석을 위한 위에 언급한 것 처럼 태깅을 진행하는데 이렇게 태깅을 할때에도 문제가 존재한다.

Input으로 들어오는 어절이나 단어에서 띄어쓰기, 맞춤법이 있는 경우, 이전에 언급한 모호성, 미등록어에 대한 처리 등이 있다. 

 

이런 문제를 위해서 전처리를 수행하여야 하며, 미등록어는 품사를 추정할 수 있는 기능도 필요하다. 더불어 사전을 지속적으로 업데이트하여야 신조어에 대해서도 태깅이 가능하다.