UNIST/DeepLearning For NLP&NLU

NLP(Natural Language Processing)란 무엇인가?

NLP란 무엇인가?

  • NLP (Natural Language Processing, 자연어 처리)는 인간 언어 이해와 관련된 문제와 해결책을 포함하는 컴퓨터 과학 연구의 영역이다.
  • Human (Natural) Language를 분석하고 생성하며 습득하는 과정을 자동화하는 작업을 말한다.
    • 분석 : Analysis (Understanding, Processing)
    • 생성 : Generation
    • 습득 : Acquisition

 

NLP의 예시

  • Text Classification (텍스트 분류)

  • Sentiment Analysis (감정 분석)

  • Machine Translation (기계 번역 - 번역기)

  • Question Answering (질문에 대한 답변)

  • Dialogue Systems (대화 시스템)

  • Summarization (요약)

  • Part-of-Speech Tagging (문법 태깅)

  • Syntactic Parsing (구문 해석)

  • Named Entity Recognition (개체명 인식)

  • Coreference Resolution (상호 참조 해결)

  • Reading Comprehension (독해력)

  • Sentence Similarity (문장 유사도 분석)

  • Word Prediction (단어 예측)

  • Speech processing (음성 처리)
  • Information retrieval / web search (정보 검색 / 웹 서치)
  • Knowledge representation / reasoning (지식 표현 / 추론)

 

 

Computational Linguistics(전산 언어학) vs. Natural Language Processing(자연어 처리)

많은 사람들이 전산 언어학과 자연어 처리를 동일한 개념으로 이해하고 있지만 두 용어는 다른 개념이다.

  • 전산 언어학
    • 전산 언어학은 언어학에 관한 것으로 자연어 처리보다 더 포괄적인 개념이다.
    • 사회 언어학, 인지 언어학, 컴퓨터 사회 과학 등이 포함되어 있다.
  • 자연어 처리
    • NLP는 머신 러닝을 사용하는 것에 더 가깝다.
    • 엔지니어링이나 시스템 구축에 관여하는 경우가 많다.

 

 

NLP가 어려운 이유는 무엇인가?

언어 표현에 있어 Ambiguity(모호성)과 Variability(다양성)의 이유 때문이다.

  • Ambiguity : 하나의 단어가 많은 것을 의미할 수 있음
  • Variability : 많은 표현들이 같은 것을 의미할 수 있음

NLP의 task는 이런 특성들에 대해 대응할 수 있어야 한다.

 

예) 위키피디아의 하이퍼링크

 

 

Tokenization (토큰화)

Tokenization (토큰화) : 공백 또는 특정 문자를 기준으로 문장 또는 단락을 의미 있는 단위로 나누는 작업을 말한다.

  • 특정 언어에 대해서는 중요하지 않다.
    • 중국어의 경우 공백이 단어와 단어를 구분 짓지 못하기 때문에 여전히 NLP의 과제로 남아있다.
    • 다른 언어(영어 등)의 경우보다 간단하지만 항상 명확하지는 않다.

 

 

토큰화의 복잡성

  • 구두문자 분리
    • , " ? !와 같은 경우 큰 문제없이 분리 가능
    • 하지만 . 과 같은 경우는 항상 분리할 수만은 없다. (Dr., Mr., Prof., U.S., etc. 등등..)
  • 영어의 축약형 표현들
    • 이런 경우는 분리될 수 있다 : isn't, aren't, wasn't, ... -> is n't, are n't, was n't,....
    • 하지만 이런 경우는 또 다르다 : can't, won't -> ca n't, wo n't
    • ca, wo가 can, will이라고 확신할 수 없다.
  • 중국어와 일본어는 단어 사이에 공백이 없다.
  • 일본어는 더욱 복잡하다

 

 

Types and Tokens

  • Types(타입) : 텍스트에서 중복되지 않고 사용된 어휘의 수
  • Tokens(토큰) : 텍스트에 사용된 전체 어휘의 수
  • 예시) If they want to go, they should go.
    • How many types? : 6 (they, go가 중복)
    • How many tokens? : 8
  • Type/Token Ratio(TTR) : 6/8=0.75

 

데이터가 많아진다면 어떻게 될까?

위키피디아로 분석해본 결과 token의 개수가 많아질수록 TTR은 낮아진다.

TTR은 복잡성의 척도라고 말할 수 있다.

 

트위터의 경우도 유사한 형태의 결과를 확인할 수 있다.

 

 

이 많은 형태들이 모두 하나의 "really"임을 알아야 한다.

 

 

얼마나 많은 단어들이 있을까?

100만 트윗에는 1500만 개의 토큰에 60만 개의 타입

5600만 트윗에는 8억 4700만 개의 토큰에 1100만 개의 타입

 

 

단어들의 분포를 살펴보자.

Zipf's law(지프의 법칙)에 따르면 단어의 빈도는 그 순위에 반비례한다.

 - Long Tail : 세상에는 수많은 타입들이 존재하지만 단어들은 내부 구조를 가지고 있다. (주어, 동사 등..)

아래는 NBA 페이스북을 분석한 결과이다.

​이런 분석을 통해 다른 유의미한 결과들을 예측할 수도 있다.

 

 

Morphology (형태론)

  • Words are not atoms : 단어는 원자 단위가 아니다.
    • 단어들은 내부 구조를 가지고 있다. (주어, 동사, 목적어 등)
    • 단어들은 형태소(morphemes)로 구성되어 있다.
  • 형태소는 의미를 가지는 언어 단위 중 가장 최소 단위이다.
    • Stems(roots, 어근) : 최소한의 의미를 갖는 구성요소, 말의 중심이 되는 형태소
    • Affixes(접어) : 
      1. Prefixes(접두어) : prenuptual, irregular
      2. Suffixes(접미어) : determinize, iterator
      3. Infixes(접요사) : cupsful
      4. Circumfixes : gesammelt
  • TTR과 Morphology
    • TTR이 높을수록 Rich Morphology
    • TTR이 낮을수록 Poor Morphology

 

언어 형식의 종류

  • 굴절어(Inflection) : 문법적인 기능에 따라 단어의 형태(접사)가 변화하는 단어
    • ex) book -> books, walk -> walked
  • 파생어(Derivation) : 어근에 접사를 붙여 만든 새로운 단어
    • ex) great -> greatly, greatness
  • 합성어(Compounding) : 두 개의 어근을 합친 단어
    • ex) lawsuit, keyboard, bookcase

 

계층적, 형태학적 분해의 모호성

드물게 일어나는 일이다.

  • unlockable = un + lock + able
    • (un + lock) + able : able to be unlocked (잠금 해제 가능)
    • un + (lock + able) : unable to be locked (잠글 수 없음)

일반적으로 형태론적 어원은 단어를 형태소로 나누는 것이다.

  • walked = walk + ed
  • greatness = great + ness

하지만 실제로는 계층 구조일 수 있다.

  • unbreakable = un + (break + able)

 

 

NLP에서의 Morphology

  • 굴절 형태학(Inflection Morphology)은 제거하고 파생 형태학(Derivation Morphology)은 남기는 것이 바람직하다.
  • 예를 들어 repurpose라는 단어를 검색할 때 repurposing, repurposes, repurposed와 같은 결과도 포함되길 바랄 것이다. 하지만 purpose에 대한 결과는 아마 아닐 것이다.
  • 이를 위해 우리는 StemmingLemmatization 작업을 통해 데이터를 정규화할 필요가 있다.

 

Stemming

어형이 번형 된 단어로부터 접사를 제거하는 등의 방식으로 어근을 분리하면서 단어를 줄여나가는 과정

  • ex) automate(s), automatic, automation 등과 같은 형태를 automat으로 줄이는 것
  • 정보 검색에 있어 중요한 과정이다.

 

Lemmatization

굴절 또는 파생 등의 변형 형태를 원형으로 줄여나가는 과정

ex) am, are, is -> be

     car, cars, car's, cars' -> car

 

  • the boy's cars are different colors -> the boy car be different color
  • 주의) 올바른 표제어를 잘 찾아야 한다.

 

Porter's Stemming Algorithm

가장 많이 사용하는 English stemmer이다.