티스토리 뷰

텍스트분석

02. Text Preprocessing

데이터사이엔티스트 2021. 9. 12. 17:11

강필성 교수님 강의 듣고 정리한 내용입니다.

https://www.youtube.com/watch?v=NLaxlUKFVw4&list=PLetSlH8YjIfVzHuSXtG4jAC2zbEAErXWm&index=3 

 

 

Classical categorization

 

Lexical Analysis

  • 단어로 나누는 방법
  • A teacher come+s

 

Syntax Analysis

  • 나눠진 단어에 품사를 부여
  • (A teacher) 명사 (comes) 동사

 

Semantic Analysis

  • 각 단어가 존재하는지 여부 체크, 의미 파악
  • exist(x, teacher(x), comes(x))

 

Pragmatic Analysis

- 전체 문장의 내포된 의미 분석

- A teacher comes -> 선생님은 온다 (직역) -> 선생님 떴으니까 조용히 해! (의역)

 

내포된 의미를 해석하는게 가장 힘든 테스크

예시로, 유명한 작가 Hemingway한테 여섯 단어로 우리를 울릴만한 소설을 써보시지? 라고 질문을 던지자

For sale: Baby shoes. Never worn

  • 판매 중: 아기 신발. 한번도 신은 적 없음
  • 위 문장처럼, 컴퓨터가 내포 된 의미까지 해석하는데는 큰 어려움이 있음

 

왜 NLP가 힘든가?

  • 다른 문장이지만 같은 의미를 가지고 있는 케이스
  • 다른 단어이지만 같은 의미를 가지고 있는 케이스
  • - Pragmatic Analysis와 같이, 같은 문장이지만 다른 의미를 가지고 있을 수 있음

 

NLP의 역사

  1. 1980년도 classical way
    - rule based approach (룰 기반 자연어처리분석)
    - 계속해서 생겨나는 신규 단어, 문장들을 커버하기는 힘듬
  2. 1990년도 통계적 방법
    - SVM, HMM 등 통계 기반의 자연어처리 분석
  3. 최신 트렌드 (머신러닝, 딥러닝 기반 접근)
    - 머신러닝, 딥러닝 기반 접근
    - End-to-End Multi-Task Learning
    - 과거에는 전처리, 모델링에 전부 개입을 했지만, 현재의 딥러닝은
    - 문서와 결과값을 주고 중간 학습 단계는, 머신러닝 알고리즘이 하도록 세팅

 


딥러닝 출현으로 인한 성능 향상

하지만, 딥러닝 사이즈의 향상 = 성능 향상으로 인해 과도하게 사이즈가 큰 모델들이 등장

-> 실제 기업, 기관에서 적용하기 힘듦

이로 인해, 정확도와 성능 둘 다 고려한 모델들을 개발 (DistilBert 등)

 

Lexical Analysis

- 의미를 보존할 수 있는 가장 최소한의 단위 분석

Lexical analysis 과정

- 토크나이징 (형태소 분석)

- Part-of-Speech Tagging

- 개체명 인식, 명사구 인식, 문장 split 등 수행수

Lexical Analysis 예시

Mrs.Clinton previously worked for Mr. Obama, but she is now distancing herself from him

- Part of Speech: 품사 지정 (Clinton=명사, worked=동사, for= 전치사 등)

- Named entity recognition (Clinton, Obama = Person, previously, now = Date)

- Co-reference (Mrs.Clinton = she, Obama = him 등)

- Basic dependencies (의존 구문 분석) 누가 누구를 위해 일을 했느냐 등 관계가 있는 단어를 파악

Lexical Analysis Step

1. Sentence Splitting

- 문장은 NLP에서 매우 중요하지만, 토픽 모델링과 같은 몇몇 텍스트 마이닝 기법에서는 중요하지 않음

- 문장을 구분하는게 힘든 이유

".", "!", "?"등은 통상 문장의 끝에 쓰이지만,

Mr.Jang, 3.14 등 "."이 다른 용도로 쓰이는 경우가 있다.

-> 문장의 기호로 한다면 100% 문장 구분이 안되기 때문에, 룰 베이스 혹은 분리된 문장을 기반으로 학습을 시켜서 모델을 만듬


2. Tokenization

- 문서를 가장 기본적인 단위인 토큰으로 변환

- Tokenization도 현재 완벽하게 수행이 되고 있지 않음

 

3. Morphological Analysis

- Stemming and Lemmatization

예시: car -> cars, give -> gives, gave, given

- 위와 같이 각 단어마다 파생되는 여러 유형의 단어가 있음

- 이를 해결하기 위한 기법이 Stemming과 Lemmatization

Stemming: reduce words to a base form (단어의 기본 유형을 찾음)

- 단순하고 빠름

- 단어의 원형을 보존 못할 수 있음

- 서로 다른 단어가 같은 stem으로 귀결되는 경우가 있음 (army, arm -> arm / stocks, stocking -> stock)

 

Lemmatization: reduce words to their lemma (품사를 보존하는 단어의 원형을 찾음)

- 처리 속도가 느리지만, Stemming에 비해 더 의미를 보존한다.

 

 

  1. Part of Speech (POS) Tagging
  • 주어진 문장에 대해, 단어의 순서를 통해 적절한 품사를 예측하는 것 (같은 단어여도 다른 품사를 가질 수 있음)
  • 한국어만 해도 여러가지 형태소 품사 태그 패키지가 있음
  • 포스 태깅의 학습 데이터는 사람이 품사를 직접 태깅을 해놓은 데이터셋을 기반으로 진행을 해야함 
  • Pointwise prediction: 주변 단어를 보고 해당 단어의 품사를 예측하는 방법론
  • Probabilistic model
  • Neural network-based models

 

  1. Named Entity Recognition
  • 주요 단어들의 카테고리를 정의하는 것
  • dictionary와 rule based로 진행했을 때, 아직도 좋은 결과를 내고 있음
  • 최근 트렌드는 NER/POS Tagging 등 다양한 테스크를 한번에 할 수 있는 모델을 생성

 

Syntax Analysis

  • 구문 분석
  • 문장의 구조를 보고 각 단어들의 문법의 형식을 분석하는 과정
  • Parser
  • 어휘가 갖는 모호성 (Lexical ambiguity)

 

Language Modeling

  • 문장 혹은 다음 단어가 등장할 확률을 계산
  • Markov Assumption
  • Neural. Network Language Model
  • Sequence to Sequence (Seq2Seq) Learning
  • GPT2
  • 추후 다시 모델들에 대해서 설명할 예정