본문 바로가기
AI

자연어 처리 진행 순서

by 코낄2 2024. 1. 19.

1. 자연어 처리의 다양한 Task

자연어 처리(Natural Language Processing, NLP)는 기계가 인간의 언어를 이해하고 처리하는 데에 관한 분야로, 다양한 작업(Task)들이 이루어지고 있습니다. 

https://medium.com/nlplanet/two-minutes-nlp-33-important-nlp-tasks-explained-31e2caad2b1b

 

Two minutes NLP — 33 important NLP tasks explained

Information Retrieval, Knowledge Bases, Chatbots, Text Generation, Text-to-Data, Text Reasoning, etc.

medium.com

1-1. Text Classification

  • 단어, 문장, 문서 단위의 텍스트에 사전 정의된 카테고리를 할당하는 작업입니다.
    • Sentiment Analysis: 주어진 문장의 감정을 분류
    • Abusing Detection: 주어진 문장의 어뷰징 여부(욕설, 비속어 등 공격적인 언어)를 판별

1-2. Information Retrieval and Document Ranking

  • 두 문서나 문장 간 유사도를 결정하는 작업입니다. 이는 Text Similarity Task로 확장될 수 있습니다. 예를 들면, document DB가 있을 때 query text에 대해 가장 유사한 문서를 반환하는 작업이 있습니다.

1-3. Text to Text Generation

  • 텍스트를 입력으로 받아 목표를 달성하는 텍스트를 생성하는 작업입니다.
    • 번역 : 소스 언어의 텍스트를 의미를 유지한 채 타켓 언어의 텍스트로 번역합니다.
    • 요약: 여러 문서들의 의미를 유지한 채 더 짧은 버전의 텍스트로 요약합니다.
    • 자연스러운 텍스트 생성: 사람이 작성한 것 같은 텍스트를 생성합니다.

1-4. Knowledge Bases, Entities and Relations

  • 지식 기반, 의미론적인 엔티티나 관계를 파악하는 자연어 처리 분야입니다.

1-5. Topics and Keywords

  • 문서나 문장 내의 주제나 키워드를 파악하는 자연어 처리 분야입니다.

1-6. Chatbots

  • 음성이나 문자를 통한 인간과의 대화를 통해 특정한 작업을 수행하도록 제작된 컴퓨터 프로그램입니다. 정해진 규칙에 맞춰 메시지를 입력하면, 발화를 출력하는 규칙 기반 챗봇과 문맥을 입력으로 받아 적절한 답변을 생성/검색하는 인공지능 기반 챗봇으로 나뉩니다.

1-7. Text Reasoning

  • 주어진 지식이나 상식을 활용하여 일련의 추론 작업을 수행하는 작업입니다. 일련의 계산 과정에 의해 답을 추론하는, 간단한 수학 문제를 푸는 것을 예로 들 수 있습니다.

1-8. Fake News and Hate Speech Detection

  • 허위 정보나 혐오 표현이 포함된 텍스트를 감지하고 필터링하는 작업입니다. 예를 들어 소셜 미디어 혹은 배포중인 제품에서 발생하는 어뷰징 컨텐츠들을 필터링 하는데 사용됩니다.

1-9. Text to Data and Vice-versa

  • 음성을 텍스트로(STT) 혹은 텍스트를 음성으로(TTS) 변환하는 작업, 혹은 텍스트를 이미지로(Text to Image) 변환하는 작업 등이 포함됩니다. 최근에 실무와 학회에서 많이 논의되고 있습니다.

문제에 대한 솔루션이 있어야 하고, 명확하고 구체적일수록 알맞는 자연어 처리 기술을 찾을 수 있습니다.

2. 데이터 수집 및 분석

먼저, 다양한 학습 데이터를 확보하기 위해 유료 데이터셋, 공개된 데이터셋, 또는 웹 크롤링을 활용하여 데이터를 수집합니다. Papers with Code와 같은 플랫폼에서는 다양한 자연어 처리 작업을 위한 데이터셋을 찾을 수 있습니다. 웹 크롤링을 통해 데이터를 수집했다면, 이후에는 EDA(탐색적 데이터 분석) 및 분석 작업을 통해 수집한 데이터의 품질을 철저하게 검증해야 합니다. 또한, 필요한 경우 데이터에 레이블을 부착하여 학습용 데이터로 준비합니다.

 

Papers with Code - Machine Learning Datasets

275 datasets • 116829 papers with code.

paperswithcode.com

3. 데이터 전처리

자연어 처리 과정에서 데이터의 품질과 구조는 매우 중요합니다. 따라서 데이터를 학습에 용이하게 수정 및 보완하는 작업이 필요합니다.

- 토큰화(Tokenization): 주어진 데이터셋에서 문장이나 문서를 토큰이라 불리는 단위로 나누는 작업을 수행합니다. 이는 텍스트를 모델이 이해하기 쉬운 형태로 변환하는 기초 단계입니다.

- 정제(Cleaning): 데이터셋으로부터 노이즈 데이터(이상치, 편향 등)를 제거하는 작업을 포함합니다. 불필요한 정보를 제거하고 데이터를 정리함으로써 모델의 학습을 더 효과적으로 만듭니다.

- 정규화(Normalization): 서로 다른 표현 방법을 갖는 데이터들을 통합시켜서 동일한 항목으로 합칩니다. 예를 들어, 동의어나 다른 형태의 표현을 통일하여 데이터 일관성을 유지합니다.

3-1. 토큰화(Tokenization)

토큰화(Tokenization)는 텍스트를 의미 있는 최소 단위, 즉 토큰으로 나누는 작업으로, 자연어처리의 핵심 단계 중 하나입니다. 토큰은 보통 단어, 구두점, 혹은 의미 있는 부분으로 정의되며, 언어에 따라 다양한 규칙이 적용됩니다. 토큰화는 주어진 코퍼스 내의 텍스트 데이터셋을 모델이 이해할 수 있는 단위로 분해하여 처리할 수 있도록 합니다. 이를 통해 모델은 문장의 문맥을 이해하고 의미를 파악할 수 있게 됩니다. 사이버 보안이나 NFT 생성과 같은 다양한 분야에서도 토큰화는 중요한 역할을 수행합니다.

* 코퍼스란 자연어 처리 연구나 어플리케이션 활용을 위해 수집된 텍스트 데이터셋을 의미합니다.

3-2. 토큰화 과정의 필요성

  • 언어 모델의 자연어 이해 능력 향상: 토큰화는 언어 모델이 텍스트를 이해하고 처리하는 능력을 향상시킵니다. 
  • 다양한 자연어를 효율적으로 표현 가능: 토큰화를 통해 언어 모델은 다양한 자연어 문장을 각각의 의미 있는 단위로 분해하여 이해할 수 있습니다.
  • 대규모 자연어 코퍼스 내 토큰의 집합(단어 사전) 사용: 중복을 제거하고 적절한 정보를 내포하는 토큰의 단어 사전을 만들어 사용합니다. 이는 모델이 학습하는 데 필요한 효과적인 수단이 됩니다.
  • 단어 사전 크기 관리: 적절한 정보를 내포하면서도 전체 단어 사전의 크기가 너무 크지 않도록 토큰의 단위를 잘 정의해야 합니다. 일반적인 자연어 처리 작업에서 단어 사전의 규모는 약 10,000 ~ 50,000개 정도로 구성됩니다.( 현대 한글의 글자수는 11,172개 )

3-3. 토큰화 방법

  • 문장 토큰화: 문장을 기준으로 하는 토큰화 방법으로, 문장의 끝에 오는 문장 부호를 기준으로 코퍼스를 자르는 작업입니다.
  • 단어 토큰화: 단어를 기준으로 하는 토큰화 방법으로, 일반적으로 구분 기호를 가지고 텍스트를 나누고, 구분 기호로는 주로 공백을 사용합니다. 단어 토큰화는 한국어와 같이 교착어인 경우에는 공백으로만 토큰화하면 성능이 좋지 않을 수 있습니다. 또한 새로운 단어가 추가될 수록 단어 사전의 크기는 계속해서 증가하며 OOV(Out of Vocabulary)문제가 발생할 수 있습니다.
  • 문자 토큰화: 토큰의 기준을 문자로 하는 토큰화 방법으로, 단어 토큰화의 한계점을 극복하기 위한 방법입니다. 영어는 26개의 알파벳에 따라 분리하고, 한국어는 자음과 모음을 기준으로 분리합니다. 하지만 문장 하나를 생성하는데 문자 단위는 너무 많은 추론을 필요로 해서, 단어 사전은 작지만 예측 시간에 문제가 생길 수 있습니다.
  • 서브 워드 토큰화: 토큰의 기준을 서브워드로 하는 토큰화 방법으로, 단어 토큰화와 문자 토큰화의 한계점을 극복하기 위한 방법입니다. 서브워드는 토큰의 단위를 n개의 문자로 정의하고 해당 기준에 따라 텍스트를 분절하는 방법으로, 한국어에서도 좋은 성능을 가질 수 있습니다(형태소 분절 기반의 서브워드 토큰화). 이를 위한 알고리즘 중에서는 BPE가 가장 유명합니다.

4. 서브워드 토큰화

서브워드(subword): 서브워드는 단어보다 더 작은 의미의 단위를 나타내며, 단어를 여러 서브워드로 분리하여 단어 사전을 구축하는 토큰화 방법입니다. 주로 신조어나 합성어 등에서 발생하는 OOV(Out of Vocabulary) 문제를 완화하는 데 활용됩니다. 예를 들어, "Birthday"는 "birth"와 "day"로 분리될 수 있으며, "아침밥"은 "아침"과 "밥"으로 나뉠 수 있습니다.

4-2. BPE(Byte Pair Encoding)

BPE(Byte Pair Encoding): BPE는 코퍼스 내 단어의 등장 빈도에 따라 서브워드를 구축하는데 사용되는 토큰화 방법입니다. 2016년에 발표된 "Neural Machine Translation of Rare Words with Subword Units" 논문에서 처음 제안되었습니다. BPE는 Bottom-up 방식의 접근 방식으로, 자연어 코퍼스 내 모든 단어들을 글자 단위로 분리한 뒤, 등장 빈도에 따라 글자들을 서브워드로 통합하는 방식을 채택합니다.

 

Neural Machine Translation of Rare Words with Subword Units

Neural machine translation (NMT) models typically operate with a fixed vocabulary, but translation is an open-vocabulary problem. Previous work addresses the translation of out-of-vocabulary words by backing off to a dictionary. In this paper, we introduce

arxiv.org

4-3. WordPiece Tokenizer

WordPiece Tokenizer는 구글이 2016년에 발표한 "Google's Neural Machine Translation System Bridging the Gap between Human and Machine Translation" 논문에서 소개된 BPE의 변형 알고리즘입니다. 두 문자를 병합할 때, 각각의 문자가 따로 있을 때와 병합되었을 때를 고려하여 중요도를 판단하는 차이점을 가지고 있습니다. GPT 모델과 같은 생성 모델에서는 BPE 알고리즘이 주로 사용되며, BERT, ELECTRA와 같은 자연어 이해 모델에서는 WordPiece Tokenizer가 주로 채택되어 사용됩니다.

 

Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation

Neural Machine Translation (NMT) is an end-to-end learning approach for automated translation, with the potential to overcome many of the weaknesses of conventional phrase-based translation systems. Unfortunately, NMT systems are known to be computationall

arxiv.org

이러한 서브워드 토큰화 방법들은 텍스트의 다양성과 새로운 단어에 대한 대처 능력을 향상시키며, OOV 문제를 완화하여 자연어 처리 모델의 성능을 향상시킬 수 있습니다.

5. 정제(Cleaning)

정제(Cleaning) 토큰화 작업에 방해가 되거나 토큰화 이후에도 남아있는 노이즈를 제거하는 전처리 과정으로, 텍스트 데이터를 더 깨끗하고 유용한 형태로 만들기 위해 수행됩니다. 어떤 특성이 노이즈인지 판단하거나 모든 노이즈를 완벽하게 제거하는 것은 어렵기 때문에 일종의 합의점을 찾아야합니다.

5-1. 정제 작업의 종류

  • 불용어(stopword) 처리 : 불용어 처리는 불용어를 토큰화에서 제외하거나 제거하는 작업을 의미합니다. 불용어의 정의는 가변적이며, 특정 작업에 따라 추가적인 불용어를 정의할 수 있습니다. 한국어의 경우, 불용어 리스트를 참고하여 선택할 수 있습니다.
 

Korean Stopwords

 

www.ranks.nl

  • 불필요한 태그 및 특수 문자 제거 : HTML 태그, XML 태그, 특수 문자 등 텍스트에 포함된 불필요한 요소들을 제거합니다.
  • 코퍼스 내 등장 빈도가 적은 단어 제거 : 코퍼스 내 단어들의 빈도를 분석하여 분포를 확인하고, 특정 threshold 이하의 빈도를 가지는 단어들을 필터링하여 제거하는 방식으로 정제합니다. 이는 모델의 학습에 미치는 영향을 최소화하면서 효과적인 단어 선택을 가능하게 합니다.

5-2. 정제 과정에서 유의해야할 점

- 특수 문자 활용 여부: 특수 문자(@ 등)는 일반적인 작업에서는 정보량이 적은 토큰으로 간주될 수 있지만, 특정 작업에서는 유용한 토큰으로 활용될 수 있습니다. 예를 들어, 이메일 주소나 소셜 미디어 태그 등이 해당됩니다.

- 목적에 맞는 노이즈 검사: 자연어 처리 작업에서 데이터를 수집한 이후에는 항상 목적에 맞지 않는 노이즈가 있는지 검사하고, 발견된 노이즈를 정제하는 작업이 필요합니다. 목적에 따라 노이즈의 정의와 처리 방식이 달라질 수 있습니다.

6. 정규화(Normalization)

머신러닝 작업에서 데이터  정규화(Normalization) 는 학습 데이터의 값들이 적절한 범위를 유지하도록 데이터의 범위를 변환하거나 스케일링하는 과정입니다. 자연어 처리에서의 정규화는 표현 방법이 다른 단어들을 통합하여 동일한 단어로 만들어주는 과정을 의미합니다.

6-1. 정규화 작업이 필요한 이유

  • 단어 통합: 자연어의 특성상 의미가 같은데 표기가 다른 단어들이 존재할 수 있습니다. 혹은 의미가 같지만 표기가 다른 동의어들을 통합함으로써 통일된 표현을 얻을 수 있습니다.
  • 의미 유사성 강조: 의미는 같지만 사용 빈도가 낮은 동의어들은 학습에 유용하게 활용되지 않을 수 있습니다. 통합된 단어의 사용 빈도가 높아지면서 빈도가 낮은 단어들도 모델의 학습에 기여할 수 있습니다.

6-2. 정규화 작업의 종류

  • 어간 추출(Stemming): 형태학적 분석을 단순화한 버전으로, 규칙을 기반으로 단어의 어미를 자르는 작업입니다.
  • 표제어 추출(Lemmatization): 단어의 다양한 형태를 뿌리 단어로 찾아가서 단어의 개수를 줄일 수 있는지 판단하는 방법입니다.
  • 대소문자 통합: 대문자와 소문자를 통합하는 작업을 수행합니다. 단, 모든 경우에 대소문자를 무작정 통합해서는 안되며, 일부 경우에는 대소문자를 유지해야 합니다. 예) US(미국), us(우리)

6-3. 정규화 시 유의할 점

  • 규칙의 유연성: 규칙이 너무 엄격한 정규화 방법은 부작용이 심할 수 있으므로 원본 의미를 최대한 유지하는 것이 중요합니다.
  • 대화적 이모티콘 처리: 대화에서 사용하는 의미가 유사한 이모티콘들을 통합하는 정규화 작업도 고려될 수 있습니다. 예를 들어, "ㅋㅋㅋㅋㅋㅋ"을 "ㅋㅋ"로 통합할 수 있습니다.

7. 한국어 데이터 전처리

7-1. 한국어의 특성

  • 띄어쓰기의 한계: 한국어에는 조사나 어미가 발달되어 있기 때문에 띄어쓰기만으로 단어를 분리하면 의미적인 훼손이 일어날 수 있습니다. 따라서 어절 토큰화와 단어 토큰화가 동일하지 않을 수 있습니다.

7-2. 형태소 분석

  • 형태소 분석: 형태소를 추출하고, 단어에 품사를 태깅하는 과정을 통해 의미적인 토큰화를 수행합니다. 한국어 특유의 조사나 어미 등 다양한 언어적 속성의 구조를 고려하여 토큰화합니다.

* 태깅: 형태소의 뜻과 문맥을 고려하여 단어에 품사를 부여하는 작업을 말합니다.

'AI' 카테고리의 다른 글

임베딩  (0) 2024.01.24
데이터 전처리 실습  (0) 2024.01.19
자연어 처리 개요  (0) 2024.01.16
포켓몬 분류 해보기  (1) 2024.01.14
전이 학습  (0) 2024.01.12