Python(Colab) 자연어처리

2023. 7. 2. 16:33파이썬/자연어 처리

✔️자연어

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


✔️자연어 처리란?
* 컴퓨터가 한국어나 영어와 같은 인간의 자연어를 읽고, 이해할 수 있도록 돕는 인공지능의 한 분야

* 자연어에서 의미 있는 정보를 추출하여 활용

* 기계가 자연어의 의미를 이해하게 함

* 기계가 사람의 언어로 소통할 수 있게 하는 것이 목표


✔️ 활용분야

* 문서 분류, 스팸 처리와 같은 분류
* 문제부터 검색어 추천과 같은 추천 기능, 음성 인식, 질의 응답, 번역 등의 다양한 분야에서 사용

 

 


자연어 처리 용어

1. 자연어이해(NLU)   
* 자연어처리의 하위 집합   
* 기계가 다양한 텍스트의 숨겨진 의미를 해석하려면 사전 처리 작업들과 추가 학습이 필요   
* 텍스트에 명시적으로 나타나는 표지적인 정보 이외에 숨겨진 뜻을 파악   
* 비 언어적 신호(표정,손짓,몸짓)도 힌트로 사용될 수 있다.   
* 텍스트에서 의미있는 정보를 추출하는 기술과 상황을 통계적으로 학습 시킬 수 있는 다량의 데이터가 필요함

✔️ 자연어이해 기술의 목적
일반적으로 기계가 자연어의 실제 의미, 의도, 감정, 질문등을 사람처럼 이해하도록 돕는 것   


2.자연어생성(NLG)   
* 기계가 사람의 언어를 직접 생성하도록 돕는 기술   
* NLG는 기계가 일련의 계산 결과를 사람의 언어로 표현하도록 도와줌

 

 


자연어 처리에 대한 다양한 기술

✔️ Text Classification

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


✔️ Information Retrieval and Document Ranking

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

>> 문장 유사도 기술은 문서DB가 있을 때 핵심 문장에 대해서 가장 유사한 문서를 반환하는 것을 목표로 힘


✔️ Text to Text Generation

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


✔️ Knowledge bases, Entities and Relations

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


✔️ Topic and keywords

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


✔️ Chatbots

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


✔️ Text Reasoning

* 주어진 지식이나 상식을 활용하여 일련의 추론 작업을 수행
* 간단한 수학 문제들을 푼다고 가정 -> 일련의 계산 과정을 통해 답을 도출하게 되는데,
   그런 계산 과정을 추론이라 한다.


✔️Fake News and Hate Speach Detection

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


✔️Text to Data and vice-versa (텍스트 가 다른데이터로 변환 혹은 반대)

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

 


🟡자연어처리 진행 순서

 

진행 순서:  문제 정의 -> 데이터 수집 및 분석 -> 데이터 전처리 -> 모델링  -> 모델 학습 및 평가

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



2. 데이터 수집 및 분석
* 다양한 학습데이터를 수집하기 위해 공개된 데이터 셋 또는 웹 크롤링을 사용하여 수집   
* 웹 크롤링을 통해 데이터를 수집했다면 EDA 및 분석 작업을 통해 데이터를 철저헤가 검증해야된다.           
                              * EDA : 탐색적 데이터 분석           
                               지속적으로 해당 데이터에 대한 '탐색과이해'를 기본으로 가져아한다는 것을 바탕 
 * 정답 레이블이 필요하다면 수집한 데이터에 레이블을 붙여야 함           
                              * M-Turk, SELECTSTART



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



4. 모델링
* 자연어처리 작업은 대부분 단어 토큰들을 결과로 표현
* 언어 모델을 사용하며 문장 혹은 단어에 확률을 할당하여 컴퓨터가 처리할 수 있도록 함
* 자연어처리 분야에는 많은 언어 모델들이 있다.
* 어떤 언어 모델이 내가 풀고자 하는 문제에 가장 적합한지 확인해야된다!
* 자연어 작업 처리에 특화된 세부적인 테크닉들이 다 다름으로 SOTA 모델들을 확인해야된다.
    SOTA: State-of-the-art라는 뜻 최근 가장 최고 수준의 신경망을 의미


5. 모델 학습 및 평가
* 데이터가 준비되어 있고, 모델 구조와 학습 방법을 결정했다면, 언어 모델을 학습
* 대부분 GPU 환경에서 진행
* 가용할수 있는 인프라에 맞춰서 학습 파라미터를 설정하고 학습을 시작

             평가방법 )
            * 학습 도중, 학습 종료 후 평가
            * 정량 평가(수치로 평가하는 방법), 정성평가


SOTA 확인 사이트
https://paperswithcode.com/area/natural-language-processing

 

 

Papers with Code - Natural Language Processing

Browse 607 tasks • 1816 datasets • 2100

paperswithcode.com

 


 

🟡실무에서 평가 진행 과정

 

1. 준비된 데이터 셋을 Train / Validation / Test로 분할

2. Train 데이터 셋으로 모델을 학습하고, 중간 중간 Valid 데이터셋으로 학습 진행을 체크

3. 문제 없이 학습이 종료 되었다면, Test데이터셋과 추가 정량 평갸 데이터셋들로 최종 모델에 대한 정량 성능 지표를 측정

4. 정성 평가를 수행하기 위해 정성 평가 데이터셋을 만들고, 평가자를 모집하여 블라인드 테스트를 진행

5. 정량 평가 및 정성 평가 결과에 따라 모델 사용 여부 결정

 

Validation set과 Test set 차이

https://for-my-wealthy-life.tistory.com/19

 

validation set이란? test set과의 차이점과 사용 방법

여태까지 공부를 할 때는 train set과 test set 두개로만 데이터를 나누었다. 다만 이렇게 train, test 두개로만 분리하는 것은 기초적인 수준이고, 보통 현업에서 모델을 만들 때는 train, test, validation set

for-my-wealthy-life.tistory.com

 

728x90