728x90
반응형
SMALL

1. 코퍼스(Corpus)

  • 사전적인 의미는 "말뭉치", "대량의 텍스트 데이터" 를 말함
  • 자연어 처리 연구나 애플리 케이션 활용을 염두해 두고 수집된 텍스트 데이터셋을 의미

 

 

2. 토큰화(Tokenization)

  • 전처리 과정에는 토큰화, 정제, 정규화 작업 등이 있음
  • 토큰화는 원시 데이터를 가져와 유용한 데이터 문자열로 변환하는 간단한 프로세스
  • 사이버 보안, NFT 생성에 사용되는 것으로 유명, 자연어 프로세스의 중요한 부분을 차지함
  • 토큰의 단위는 자연어 내에서 의미를 가지는 최소 단위로 정의
  • 단락과 문장을 보다 쉽게 의미를 할당할 수 있는 더 작은 단위로 분할 하는데 사용토큰화 작업은 주어진 코퍼스 내 자연어 문장들을 토큰이라 불리는 최소 단위로 나누는 작업
 

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

  • 언어 모델의 자연어 이해 능력 향상
  • "역삼동에 어떤 맛집이 있나요?"
    "역삼동에" "어떤" "맛집이" 있나요?"
    "역삼동" "에" "어떤" "맛집" "이" "있나" "요?"
  • 다양한 자연어를 효율적으로 표현 가능

자음 19개

모음 21개

- 중복을 제거한 대규모 자연어 코퍼스 내 토큰의 집합(단어 사전) 사용
- 적절한 정보량을 내포하면서 전체 단어 사전의 개수가 많아지지 않도록 토큰의 단위를 잘 정의 해야함
- 상황에 따라 다르지만, 일반적인 자연어 처리작업에서 단어 사전의 규모는 약 1만~5만개 정도로 구성(한글의 글자수: 11,172개)


2-2. 토큰화 방법

  • 문장 토큰화: 토큰의 기준을 문장으로 하는 토큰화 방법
    • 문장의 끝에 오는 문장 보호를 기준으로 코퍼스를 잘라냄 (. 또는 ! 또는 ?)
    • 예외) 제 이메일 주소는 ryuzy@naver( 이부분에서 짤릴수도있다. ).com 입니다
  • 단어 토큰화: 토큰의 기준을 단어로 하는 토큰화 방법
    • 보편적으로 구분 기호를 가지고 텍스트를 나누게 되며, 기본적으로 공백을 구분자로 사용
    • 한국어의 경우 교착어 이기 때문에 공백으로 단어 토큰화를 하게 되면 성능이 좋지 않다.
    • 새로운 단어가 추가될수록 단어 사전의 크기가 계속 증가
    • OOV(out of Vocabulary) 문제
  • 문자 토큰화: 토큰의 기준을 문자로 하는 토큰화 방법
    • 단어 토큰화의 한계점들을 해결하기 위한 방법
    • 영어는 26개의 알파벳에 따라 분리, 한국어는 자음 19개와 모음 21개의 글자에 따라 분리 안녕하세요 -> ㅇ ㅏ ㄴ ㄴ ㅕ ㅇ ㅎ ㅏ ㅅ ㅔ ㅇ ㅛ
    • 문장하나를 생성하는데 너무 많은 추론이 필요
    • 단어사전은 작지만 모델의 예측시간에 문제가 생길 수 있음
  • 서브워드 토큰화: 토큰의 기준을 서브단어로 하는 토큰화 방법
    • 단어 토큰화와 문자 토큰화의 한계점을 해결하기 위한 방법
    • 문자 토큰화의 확장된 버전으로 토큰의 단위를 n개의 문자로 정의하고, 해당 기준에 따라 텍스트를 분절하는 방법
    • 형태소 분절 기반의 서브워드 토큰화로 확장될 수 있어 한국어에서도 좋은 성능을 가짐
    • 서브워드를 만드는 알고리즘 중에서 가장 유명한 것이 BPE

3. 서브워드 토큰화


3-1. 서브워드(SUBWORD)

  • 단어보다 더 작은 의미의 단위

ex] Birthday -> Birth + day

ex] 아침밥 -> 아침 + 밥

  • 단어를 여러 서브워드로 분리해서 단어 사전을 구축하겠다는 토큰화 방법
  • 신조어에서 주로 발생하는 OOV 문제를 완화

과제.

  • BPE 알고리즘, WordPieceTokenizer 에 대해 조사하고 해당 알고리즘을 잘 설명할수 있는 예제와 실습과제를 완성해보자

3-2. BPE(Byte Pair Encoding)

  • 코퍼스 내 단어의 등장 빈도에 따라 서브워드를 구축하는데 사용
  • 2016년 Neural Machine Translation of Rare Words with Subword Units 논문에서 처음 제안
  • 글자 단위에서 점진적으로 서브워드 집합을 만들어내는 Bottom-up 방식의 접근 방식으로 자연어 코퍼스에 있는 모든 단어들을 글자 단위로 분리한 뒤에, 등장 빈도에 따라 글자들은 서브워드로 통합하는 방식

3-3. Word Piece Tokenizer

  • 구글이 2016년도 Google's Neural Machine Translation System Bridging the Gap between Human and Machine Translation 논문에서 처음 공개한 BPE의 변형 알고리즘
  • 병합할 두 문자가 있을 때, 각각의 문자가 따로 있을 때를 더 중요시 여기는지, 병합되었을 때를 더 중요시 여기는지에 차이점을 둠
  • GPT모델과 같은 생성 모델의 경우에는 BPE 알고리즘을 사용
  • BERT, ELECTRA와 같은 자연어 이해 모델에서는 WordPiece Tokenizer를 주로 사용

4. 정제(Cleaning)

  • 토큰화 작업에 방해가 되는 부분들을 필터링 하거나 토큰화 작업 이후에도 여전히 남아있는 노이즈 들을 제거하기 위해 지속적으로 이루어 지는 전처리 과정
  • 어떤 특성이 노이즈 인지 판단하거나, 모든 노이즈를 완벽하게 제거하는 것은 어렵기 때문에 일종의 합의점을 찾아야 함

4-1. 정제 작업 종류

  • 불용어( Stopword ) 처리
    • NLTK 라이브러리에서는 자주 사용되는 단어들을 불용어로 정의
    • 불용어의 정의는 가변적이기 때문에 추가하고 싶은 불용어가 있다면 직접 정의할 수 있음
    • 보편적으로 선택할 수 있는 한국어 불용어 리스트
  • 불필요한 태그 및 특수문자 제거
  • 코퍼스 내 등장 빈도가 적은 단어 제거
    • 코퍼스 내 단어들의 빈도를 분석하여 분포를 보고 특정 threshold를 설정한 후, 해당 threshold 아래의 단어들을 필터링 하는 방식으로 정제

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

  • @과 같은 특수 문자는 일반적인 작업에서는 정보량이 적은 토큰일 수 있지만 이메일과 관련한 내용을 판단 해야하는 작업에서는 유용한 토큰으로 사용될 수 있음자연어 처리 작업에서 데이터를 수집한 이후에는 항상 목적에 맞지 않는 노이즈가 있진 않은지 검사하고 발견한 노이즈를 정제하기 위한 노력이 필요

5. 정규화(Normalization)

  • 일반적인 머신러닝 작업에서 데이터 정규화는 학습 데이터의 값들이 적당한 범위를 유지하도록 데이터의 범위를 변환하거나 스케일링 하는 과정
  • 정규화 목표는 모든데이터가 같은 정도의 스케일로 반영되도록 하는 것
  • 자연어 처리 정규화의 핵심은 표현 방법이 다른 단어들을 통합 시켜서 같은 단어로 만들어주는 과정

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

  • 이상적으로 단어 사전내의 단어 토큰들이 모두 중요하게 고려되길 원함
  • 부추: 정구지
  • 자연어의 특성 상 의미가 같은데 표기가 다른 단어들이 있을 수 있고, 의미는 같지만 사용빈도가 낮은 동의어들은 학습에 유용하게 활용되지 않을 수 있음
  • 의미가 같지만 표기가 다른 단어들을 통합 할수 있다면 통합된 단어의 사용 빈도가 높아질 것이고, 빈도가 낮은 단어들의 중요도가 높아질 수 있다.

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

  • 어간추출, 표제어 추출
    • 어간 추출: 형태학적 분석을 단순화한 버전으로, 정해진 규칙만 보고 단어의 어미를 자르는 어림짐작의 작업
    • 표제어 추출: 단어들이 다른형태를 가지더라도, 그 뿌리 단어를 찾아가서 단어의 개수를 줄일 수 있는지 판단하는 방법
  • 대소문자 통합
    • 대문자와 소문자가 구분되어야 하는 경우도 있음. 따라서 무작정 소문자로 통합해서는 안되는 경우가 있음
    • ex) US(미국), us(우리)

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

  • 규칙이 너무 엄격한 정규화 방법은 부작용이 심해 학습에 악영향을 줄 수 있음
  • 원본 의미를 최대한 유지하는 것이 학습에 도움이 됨
  • 대화에서 사용하는 의미가 비슷한 이모티콘들을 통합하는 정규화 작업 "ㅋㅋㅋㅋㅋ" -> "ㅋㅋ"

6. 한국어 데이터 전처리


6-1. 한국어의 특성

  • 영어는 합성어나 줄임말에 대한 예외처리만 하면, 띄어쓰기 기준으로 토큰화 작업으로도 어느정도의 성능을 보장할 수 있음
  • 한국어에는 조사나 어미가 발달되어 있기 때문에 띄어쓰기만으로 단어를 분리하면 의미적인 훼손이 일어날 수 있음
  • 띄워쓰기 단위가 되는 단위를 "어절" 이라고 하는데 어절 토큰화와 단어 토큰화가 같지 않기 때문

6-2. 형태소 분석

  • 형태소를 비롯하여, 어근/접두사/접미사/품사 등 다양한 언어적 속성의 구조를 파악하는 것을 의미
  • 형태소 분석 과정은 한국어 단어에서 형태소를 추출하여 분리하는 작업이며 이후에 필요에 따라 사전 정의된 품사를 해당 단어에 태깅하는 작업을 하기도 함
  • 태깅: 형태소의 뜻과 문맥을 고려하여 단어에 품사를 매핑하는 것
 

 

6-3. 형태소 분석 방법

  • 한국어의 다양한 형태소를 분석하고 분류하기 위해 KoNLPy패키지에서 분석기를 사용
  • KoNLPy 패키지의 다양한 함수를 사용하여 한국어 내 다양한 전처리를 진행
    • Mecab: 일본어용 형태소 분석기를 한국어를 사용할 수 있도록 수정
    • Okt: 오픈 소스 한국어 분석기, 과거 트위터 형태소 분석기
    • Komoran: Shineware에서 개발
    • Kkma: 서울대학교 IDS 연구실 개발
  • 각 형태소 분석기는 성능과 결과가 다르게 나오기 때문에 사용하고자 하는 필요 용도에 어떤 형태소 분석기가 적절한지를 판단
  • 속도를 중시한다면 Mecal을 사용
728x90
반응형
LIST

'자연어처리' 카테고리의 다른 글

자연어 처리란?  (0) 2023.07.24
728x90
반응형
SMALL

# 1, 자연어

* 프로그래밍 언어와 같이 인공적으로 만든 기계 언어와 대비되는 단어로, 우리가 일상에서 주로 사용하는 언어

 

1-1. 자연어 처리

  • 컴퓨터가 한국어나 영어와 같은 인간의 자연어를 읽고 이해할수 있도록 돕는 인공 지능의 한 분야
  • 자연어에서 의미있는 정보를 추출하여 활용
  • 기계가 자연어의 의미를 이해하게 함
  • 기계가 사람의 언어로 소통할 수 있게 함
 

1-2. 자연어처리의 활용

  • 문서분류, 스팸 처리와 같은 분류문제부터 검색어 추천과 같은 추천기능, 음성인식, 질의응답, 번역 등의 다양한 분야에서 사용되고 있음
  • 반복 업무 자동화
  • 검색 효율 향상 및 검색 엔진 최적화
  • 대규모 문서 분석 및 정리
 

1-3. 용어 정리

  • 자연어 이해(NLU)
    • 자연어 처리의 하위집합
    • 자연어이해 기술의 목적은 일반적으로 기계가 자연어의 실제 의미, 의도나 감정 질문등을 사람처럼 이해하도록 돕는 것
    • 기계가 다양한 텍스트의 숨겨진 의미를 해석하려면 사전 처리 작업들과 추가 학습이 필요
    • 텍스트에 명시적으로 나타나는 표지적인 정보 이외에 숨겨진 뜻을 파악
    • 비 언어적인 신호(표정, 손짓, 몸짓)도 힌트로 사용될 수 있음
    • 텍스트에서 의미있는 정보를 추출하는 기술과 상황을 통계적으로 학습시킬수 있는 다량의 데이터가 필요함
  • 자연어 생성(NLG)
    • 기계가 사람의 언어를 직접 생성하도록 돕는 기술
    • NLG는 기계가 일련의 계산결과를 사람의 언어로 표현하도록 도와줌

2-1. Text Classification

  • 단어, 문장, 문서 단위의 텍스트에 사전 정의된 카테고리를 할당하는 작업
    • Sentiment Analysis: 주어진 문장의 감정을 분류
    • Abusing Detection: 주어진 문장의 어뷰징 여부를 판별

2-2. Information Retrieval and Document Ranking

  • 두 문서나 문장간 유사도를 결정하는 작업
  • Text Similarity Task는 document DB가 있을 때 query etxt에 대해서 가장 유사한 문서를 반환하는 것을 목표로 하는 retrieval 혹은 ranking작업으로 확장 될 수 있음

2-3. Text to Text Generation

  • 텍스트를 입력으로 받아 목표를 달성하는 텍스트를 생성하는 작업
    • 소스 언어의 텍스트를 의미를 유지한 채 타겟 언어의 텍스트로 번역하는 작업
    • 여러 문서들의 의미를 유지한채 더짧은 버전의 텍스트로 요약하는 작업
    • 포괄적인 관점에서 사람이 작성한 것 같은 텍스트를 생성하는 작업

2-4. Knowledge bases, Entities and Relations

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

2-5. Topics and Keywords

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

2-6. chat bots

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

2-7. Text Reasoning

  • 주어진 지식이나 상식을 활용해서 일련의 추론작업을 수행하는 작업
  • 간단한 수학 문제들을 푼다고 생각해보면 일련의 계산과정에 의해 답을 도출하게 되는데 그러한 일련의 계산 과정을 추런과정 이라고 함

2-8. Fake News and Hate Speech Dtection

  • 허위 혹은 오해의 소지가 있는 정보가 포함된 텍스트를 감지하고 필터링 하는 작업
  • 소셜 미디어 혹은 배포중인 제품에서 발생하는 어뷰징 콘텐츠들을 필터링 하기 위해 사용

2-9. Text to Data and vice-versa

  • 자연어 처리 작업 단일 모달인 텍스트 관련 작업 뿐만 아니라, 입출력의 모달을 다양하게 활용할수 있음
  • 음성을 텍스트(STT)로 혹은 텍스트를(TTS)로 변환하는 작업이나, 텍스트를 이미지(Text to Image)로 변환하는 작업 등이 실무 또는 학계에서 많이 논의됨

3. 자연어 처리 진행 순서


3-1. 문제정의

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

3-2. 데이터수집 및 분석

  • 데이터 수집 및 분석
    • 다양한 학습 데이터를 수집하기 위해 공개된 데이터셋 또는 웹 크롤링을 사용하여 수집
    • https://paperswithcode.com/datasets?mod=texts&task=question-answering
    • 웹 크롤링을 통해 데이터를 수집 했다면 EDA 및 분석 작업을 통해 데이터를 철저하게 검증해야 함
    • 정답 레이블이 필요하다면 수집한 데이터에 레이블을 붙여야 함(M-Turk, SELECTSTART) 레이블을 자동화 시켜주는 플랫폼

3-3. 데이터 전처리

  • 데이터 전처리
    • 학습에 용이하게 데이터를 수정, 보완 하는작업을 전처리라고 함
    • 자연어 처리 진행 과정에서 데이터가 차지하는 비중이 매우 높기 때문에 데이터를 수집하고 전처리 하는 과정이 매우 중요함
    • 토큰화(Tokeniztion): 주어진 데이터셋에서 문장이나 문서들을 토큰이라 불리는 단위로 나누는 작업
    • 정제(Cleaning): 갖고 있는 데이터 셋으로 부터 노이즈 데이터(이상치, 편향 등)를 제거하는 작업
    • 정규화(normalization): 표현 방법이 다른 데이터들을 통합시켜서 같은 항목으로 합침

3-4. 모델링

  • 모델링
    • 자연어처리 작업은 대부분 단어 토큰들을 결과로 표현
    • 언어 모델을 사용하며 문장 혹은 단어에 확률을 할당하여 컴퓨터가 처리할 수 있도록 함
    • 자연어 처리 분야에는 많은 언어 모델들이 있음
    • 어떤 언어 모델이 내가 풀고자 하는 문제에 가장 적합한지 확인
    • 자연어 작업 처리에 특화된 세부적인 테크닉들이 다 다르므로 SOTA모델들을 확인해야함
    • https://paperswithcode.com/area/natural-language-processing

3-5. 모델 학습 및 평가

  • 모델 학습 및 평가
    • 데이터가 준비되어 있고 모델 구조와 학습 방법을 결정했다면 언어 모델을 학습
    • GPU 환경에서 진행
    • 가용할 수 있는 인프라에 맞춰서 학습 파라미터를 설정하고 학습을 시작
    • 학습 도중, 학습 종료후 평가
    • 정량 평가, 정성 평가

3-6. 실무에서의 평가 진행 과정

  1. 준비된 데이터 셋을 Train/Valid/Test 셋으로 분할
  2. Train 데이터 셋으로 모델을 학습하고, 중간 중간 Valid 데이터셋으로 학습 진행상황을 체크(하이퍼 파라미터 수정, 데이터 모델 변경 등등)
  3. 문제없이 학습이 종료 되었다면, Test데이터 셋과 추가 정량 평가 데이터 셋들로 최종 모델에 대한 정량 성능 지표를 측정
  4. 정성 평가를 수행하기 위해 정성 평가 데이터셋을 만들고 평가자를 모집하여 블라인드 테스트를 진행
  5. 정량 평가 및 정성 평가 결과에 따라 모델 사용 여부를 결정

4. Huggingface

  • 기계 학습을 사용하여 애플리케이션을 구축하기 위한 도구를 개발하는 회사
  • 자연어 처리 애플리케이션용으로 구축된 Transformers 라이브러리와 사용자가 기계학습 모델 및 데이터셋을 공유할 수 있는 플랫폼으로 유명
  • Huggingface에 업로드된 모델들은 기본적으로 PretrainedModel 클래스를 상속받고 있음
  • https://huggingface.co/
728x90
반응형
LIST

+ Recent posts