본문 바로가기
개발 관련 공부/머신러닝

자연어 처리에 대하여

by swlotto 2025. 1. 9.

[오늘의 공부]

오늘은 자연어 처리에 대해 공부해보고자 한다.

 

▶ 개요

자연어는 우리가 일상 생활에서 사용하는 언어이고, 자연어 처리(Natural Language Processing)는 이러한 자연어의 의미를 분석해서 컴퓨터가 처리할 수 있도록 만들어주는 일임.

  • 대용량의 텍스트 데이터로부터 의미 있는 정보를 찾아가는 방법임.
  • NLP 응용 예, 음성인식(siri, 빅스비, Alexa..), 문서요약, 문서 분류, 이메일 필터, 감성분석, 챗봇 등이 있음.

 

▶ 자연어 처리 기술 개발의 역사

1940년대 미국의 과학자 워런 웨이버는 2차 세계대전 때 적군의 암호문을 번역해 정보를 알아내기 위한 용도로 기계번역(MT, Machine Translation)이라는 기술을 개발함. 이 후 MT는 암호문 분석뿐만 아니라 언어 번역에도 확장되어 연구되었으며, 1970년대부터 자연어 생성에 관한 연구도 진행됨.

 

1990년대를 기점으로 자연어로 된 문서를 웹상에 등록하고 자유롭게 검색 및 저장 가능한 환경이 형성되어 방대한 데이터가 쌓이게 되었고, , 주어진 데이터로 알고리즘을 만들어내는 기계학습(Machine Learning)기술이 등장함에 따라 자연스럽게 컴퓨터의 자연어 처리 학습을 도와주고 빠르게 기술 수준이 고도화되는 효과를 낳음.

 

1990년대 이후에는 말뭉치 데이터를 활용하는 기계학습 기반 및 통계적 자연어 처리 기법이 주를 이룸.

 

2018년 구글이 교육 없이 양방향으로 사전학습 하는 인공지능 언어모델 BERT(이하 버트, Bidirectional Encoder Representations from Transformers)를 공개하여 시장에 큰 변화를 일으킴. 교육이 없다는 것은 특별한 프로그램에 따르지 않고 웹상에 있는 보통의 텍스트 데이터만 가지고도 훈련이 가능하다는 의미로, 어텐션 매커니즘만을 활용해 자연어를 처리하는 방식인 셀프 어텐션 방식을 채택함.

 

어텐션 매커니즘은 문장 전체의 중요성을 모두 분석하는 대신 중요한 부분만을 집중해 문장을 분석하는 방식으로, 더 적은 연산으로도 효율적으로 문장을 이해할 수 있다는 장점이 있고, 빠르고 쉽게 성능을 향상할 수 있다는 강점이 있음.

 

2020Open AI에서 공개한 GPT-3(Generative Pre-Training)은 양방향으로 자연어를 분석하는 버트와 달리 한 방향으로 분석하는 단방향 모델임. GPT-3은 상대적으로 자연어를 이해하는 성능은 부족하지만 차례로 문장을 만들어나갈 수 있어 자연어 생성에 적합하며, 자연어 이해와 연관되면서도 보다 구현하기 어려운 상위 기술임.

 

실제로 GPT-3 모델은 4,990억개 데이터셋 중에서 가중치 샘플링해서 3,000억개로 구성된 데이터 세트로 사전 학습을 받았으며, 미세한 조정 없이 여러 자연어 처리 벤치마크에서 최첨단 성능을 달성함.

 

▶ 자연어 처리 과정

 

1) 코퍼스: 모델 생성에 필요한 텍스트 데이터 세트인 코퍼스 구성(Corpus)

기본적인 텍스트들의 집합임.

 

2) 텍스트 전처리: 텍스트 데이터에서 불필요한 부분을 제거하고, 의미 단위로 구분하는 처리과정(Text Preprocessing)

토큰화: 텍스트를 토큰이라고 불리우는 작은 단위로 분리하는 것을 말함.

 

토큰화가 필요한 이유는 자연어 처리 모델들이 토큰화된 데이터를 이용해서 학습하기 때문이며, 단어 사전을 만들기 위함임.

  • 코퍼스에서 나오는 데이터를 중복없이 만들어서 모델에서 활용할 일이 많은데 이럴 때 바로 토큰화라는 작업을 거쳐서 나온 토큰을 가지고 사전을 만들어 사용함.

토큰화의 종류는 3가지가 있는데 첫 번째는 단어 토큰화임.

  • 가장 일반적인 토큰화 방법이며, 특정 구분 기호를 가지고 텍스트를 나누는 방법임.
  • 영어의 경우 기본적으로는 공백을 구분자로 사용할 수 있으며, 이러한 방법으로 토큰화하여 사용한는 모델 중 대표적인 것이 Word2Vec임.
  • 한글의 경우 교착어라는 특징이 있어서 영어와 달리 구분자나 공백으로 단어 토큰화를 하면 성능이 좋지 않아서 잘 사용하지 않음.

두 번째는 문자 토큰화임.

  • 코퍼스를 문자로 분리하는 것으로, 영어 같은 경우는 알파벳 26개 로 하나씩 분리하고, 한글의 경우 자음과 모음으로 분리함.

마지막으로 서브 단어 토큰화임.

  • n개의 문자를 가지구 나누는 방법으로, 한국어는 형태소 분절 기반의 서브 단어 토큰화가 좋은 성능을 보여 많이 사용됨.
  • 문장을 형태소로 나누어서 각 형태소 별로 인코딩을 하는 방법임.

 

3) 임베딩: 컴퓨터가 처리할 수 있도록 비정형 텍스트 데이터를 정형화하는 과정(Text Embeding)

Bag of words(BOW): 단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도에만 집중하는 텍스트 데이터의 수치화 표현 방법임.

 

  • 어휘의 빈도(개수)에 대해 통계적 언어 모델을 적용해서 나타낸 것이라고 생각하면 됨.
  • 실제 분석이나 활용 시 단어 사전을 만들어 놓은 후에 텍스트가 있으면 그걸 벡터로 바꿔줌.

 

N-gram: 통계학 기반의 언어 모델 중 하나로, 단어를 예측할 때 문장 내 모든 단어를 고려하지 않고 특정 단어의 개수(N)만 고려함.

  • N개의 연속적인 단어의 나열을 하나의 묶음으로 간주함.
  • 문장을 몇 개의 단어 개수에 따라 나눌지에 종류가 결정됨.

 

TF/IDF(Term Frequency - Inverse Document Frequency): 단어의 빈도와 역 문서 빈도(문서의 빈도에 특정 식을 취함)를 사용하여 DTM 내의 각 단어들마다 중요한 정도를 가중치로 주는 방법임. 우선 DTM을 만든 후, TF-IDF 가중치를 부여함.

  • 주로 문서의 유사도를 구하는 작업, 검색 시스템에서 검색 결과의 중요도를 정하는 작업, 문서 내에서 특정 단어의 중요도를 구하는 작업 등에 쓰일 수 있음.
  • 문서를 d, 단어를 t, 문서의 총 개수를 n이라고 표현할 때 TF, DF, IDF는 각각 다음과 같이 정의할 수 있음.
  • tf(d, t): 특정 문서 d에서의 특정 단어 t의 등장 횟수로, DTM에서의 각 문서에서의 단어의 등장 빈도 값임.
  • df(t): 특정 단어 t가 등장한 문서의 수로, 여기서 특정 단어가 각 문서, 또는 문서들에서 몇 번 등장했는지는 관심가지지 않으며 오직 특정 단어 t가 등장한 문서의 수에만 관심을 가짐.
  • idf(d, t): df(t)에 반비례하는 수로, DF의 역수를 취함.

  • log와 분모 1을 더해주는 식을 쓰는 이유는 총 문서의 수 n이 커질 수록, IDF의 값은 기하급수적으로 커지게 되기 때문임.

 

  • TF-IDF는 모든 문서에서 자주 등장하는 단어는 중요도가 낮다고 판단하며, 특정 문서에서만 자주 등장하는 단어는 중요도가 높다고 판단함.

 

Word2Vec: 말 그대로 단어를 벡터로 나타내는 것을 뜻하며 가장 널리 사용되고 있는 임베딩 기법 중 하나임.

  • 특정 단어 양 옆에 있는 두 단어의 관계를 잘 활용하기 때문에 분포가설을 잘 반영함.

임베딩 : 사람이 쓰는 자연어를 기계가 이해할 수 있는 숫자인 벡터로 나타내는 결과나 과정을 의미함.

분포 가설 : 비슷한 위치에서 등장하는 단어들은 비슷한 의미를 가지고 있음.

윈도우: 단어를 중심으로 앞, 뒤에서 몇 개 의 단어를 살펴볼 것인지(어떤 문맥 단어로 둘 것인지)를 정해주는 것임.

  • Word2vec은 CBoW와 Skip-gram 방식으로 나누어짐.

 

  • CBOW는 주변 단어들의 정보를 통해 중심 단어를 예측하는 방법임.
  • Skip-gram은 CBOW와 반대로 뒤집었다고 생각하면 되며, 하나의 중심 단어에서 주변 단어를 예측하는 방법임.

 

4) 적용 모델

㉮ 토픽모델링: 문장들의 코퍼스에 내재되어 있는 화제를 끌어내는데 쓰이며 전체 문서를 하나의 주제로 보고 주제를 구성하는 토픽을 찾아내어 문장을 분류하는 방법론임.

주제뿐만 아니라 단어차원축소, 동음이의어를 찾아내는 부가적인 기능도 수행할 수 있음.

 

토픽모델링을 적용할 때 적절한 토픽의 수를 결정하는 것도 중요함.

 

국내외 연구에서 주로 사용되고 있는 토픽모델링 알고리즘은 LDA(Latent Disrichlet Allocation), LSA(Latenet Semantic Analysis), 딥러닝 모델 등이 있음.

 

 

㉯ 감성분석: 글에 내재되어 있는 사람들의 주관적 태도나 감성을 추출해 내는 분석 기법

텍스트에 나타난 주관적 요소인 긍정/부정 감정을 판별해 수치/도식/등급 등으로 정량화 하는 작업임.

 

단순 긍정/부정을 추출하는 것이 아닌 대상이 되는 개체나 속성을 추출하거나, 감성을 표현하는 이들의 감정, 감성, 태도, 입장 등을 분석함.

 

감성분석 방법에는 3가지가 있음.

 

기계학습 기반 => 주어진 문자 데이터의 패턴을 학습해 감성 분류 예측 모델을 구축함.

  • 구축한 모델에 학습 데이터와 유사한 특성을 갖는 분석 대상 데이터를 넣어 분석을 수행해야 함.
  • 모델의 학습을 위해 문서 또는 문장에 ‘긍/부정’ 라벨이 충분히 있어야 함.

감성사전 기반 => 수집된 문자 데이터를 전처리해 정리한 후 미리 구축된 감성 사전과 매칭하여 극성감성단어 빈도를 정량화하여 분석 진행함.

  • 감성사전은 감성단어에 긍정/부정과 그 극성 범주 값과 특성을 나타내는 감성 점수로 구성됨.
  • 감성 사전의 품질이 분석의 성과에 직결됨.

속성 기반 => 전반적인 긍/부정이 아닌 속성 단위의 감성분석으로 분석 대상을 더욱 정교하게 분석함.

  • 다수의 문서에서 나타나는 속성별 감정/평가를 해당 속성별로 취합해 제공하여 정교한 분석결과 제시가 가능함.

 

▶ 국내 자연서 처리 활용 서비스 사례

역대 최고의 자연어 처리 기반 AI로 평가 받는 Open AIGPT-3 API를 분석해보면 97%가 영어이고 한국어는 0.01%에 불과하다고 함. 애초에 한국어 데이터가 0.6% 밖에 되지 않음.

 

하지만 국내 기업들은 앞다투어 자연어 처리 기술과 관련된 서비스 개발에 온힘을 기울이고 있음.

 

네이버가 2021년 공개한 하이퍼클로바는 AI 모델의 크기와 성능을 보여주는 매개변수가 2040억 개로 오픈 AIGPT-3를 넘음.

  • 하이파클로바는 GPT-3보다 한국어 데이터를 6500배 이상 학습함.

 

카카오는 카카오디벨로퍼스를 통해 자체 개발한 한국어 특화 초거대 AI 언어 모델 KoGPT를 오픈 API로 공개함.

  • 이용자가 입력한 한국어를 사전적, 문맥적으로 이해하고 이용자 의도에 적합한 문장을 생성하는 기능을 제공하는 도구임.
  • 맥락과 의도에 따라 문장을 생성해 상품 소개글 작성, 감성분석, 기계 독해, 기계 번역 등 높은 수준의 언어 과제를 해결함.

에듀테크 스타트업 뤼튼테크놀로지스가 개발한 AI 기반 문서작성 도구 뤼튼은 문서작성 전부터 작성하는 과정, 작성 후 피드백까지 모든 과정을 지원함.

  • 연구활동, 자기소개서, 에세이 등 작성하고자 하는 양식을 설정하면 뤼튼은 가장 적합한 템플릿과 프레임워크를 제공해 독창적인 생각을 짜임새 있는 글로 표현할 수 있게 도움.

 

▶ 일반적인 활용 예시

챗봇

  • 챗봇은 인공지능 기술과 자연어 처리 기술을 활용하여 인간과 대화하는 프로그램입니다. 챗봇은 고객상담, 예약, 주문 등 다양한 업무에서 활용됨. 예를 들어, 한국전력공사는 인공지능 챗봇을 도입하여 전기 사용자의 문의와 응답을 자동화함.

기계 번역

  • 기계 번역은 인간이 사용하는 언어를 다른 언어로 번역하는 기술임. 기계 번역은 국제적인 비즈니스나 여행, 문화 교류 등에서 유용하게 활용됨. 구글 번역은 많은 언어를 지원하여 인기가 높은 기계 번역 서비스임.

자동 요약

  • 자동 요약은 긴 텍스트를 짧은 요약문으로 만드는 기술로, 자동 요약은 대량의 뉴스 기사나 연구 논문 등에서 효율적인 정보 추출에 유용함. 예를 들어, 스포츠 뉴스 사이트에서 경기 결과를 요약하는 것이 자동 요약의 예시임.

 

▶ 참고자료