🤖 Education/2021석사과정

[자연어처리] 1. IntroNLP

데이터분석가SIENNA 2023. 7. 18. 12:24

1. IntroNLP

  • Natural Language Processing

→ 어떻게하면 컴퓨터 언어와 자연어를 소통하게 할 수 있을까? 의 문제

 

  • 보통 혼용해서 쓰지만, 약간 차이가 있다.

내추럴 랭귀지 프로세싱 :컴퓨터에서 컴퓨터를 사람과 같이 소통할 수 있게 하는 연구

Computational linguistics : 컴퓨터를 이용해서 언어학을 연구하는 느낌

 

→ 인간의 언어를 이용한 컴퓨테이셔널 방법을 찾아낼 수 있을까? 하는 것이 주요 목표

 

  • 목표 : 컴퓨터라는 것이 만약 자연어를 제대로 쓸 수만 있다면, 굉장히 편하겠죠. 이메일을 알아서 핸들링, 방대한 데이터로부터 라이브러리를 자유자재로 찾아준다거나 대화를 통해 인터페이스 한다던가

→ 어린애들도 잘 하는데, 슈퍼컴퓨터가 잘 못하더라! 그런 어려운 점에 대해 연구를 지속적으로 해오는 중

 

  • 다양한 분야들
  • AI : 자연어처리가 인공지능의 중요한 분야 중 하나. 언어지능…!
  • 포멀랭귀지 띠오리 : 이론적인 한계를 알아낼 수 있는 관련 연구
  • 머신러닝
  • 언어학 : 언어 현상을 파악하는 연구라서 과학적으로 어프로치 하고있다
  • 언어심리학
  • 인지과학
  • 철학 : 본질. 언어란 무엇인가? 부터 시작. 언어의 본질 그로부터 나타나는 원 본질적인 질문들…

 

  • 자연어처리 시스템의 구성도
  1. 컴퓨터의 입력문장 : 시퀀스와 심볼
  2. 형태소 분석기 : 의미 파악을 위해 가장 작은 단위의 의미를 갖는 단어로 자르는 것
  3. 구문분석기 : 문법적으로 이 문장이 어떤 구조를 갖고있나를 파악. 의미를 파악하려면 구문을 분석해야 함
  4. 의미 분석기 : 사전정보 필요, 각종 지식 필요.
  5. 담화 분석기 :한 문장의 의미를 정확하게 알려면 앞의 문장의 문맥상에서 파악을 해야한다.
  6. 문장 생성기 : 응답을 만들 수 있을까? 이런말을 해야지~ 하고 의도를 가지고 문장을 생성하는 것
  7. 출력문장 : 입력문장을 바탕으로 출력문장이 나오게 된다.

 

  • NLP의 레벨
  1. 음성학/음운학(음운론) : 소리에 대한 학문
  • 가장 작은 소리 단위 “음소” : 우리가 말을 할 때 그것을 작은 음소들의 조합으로 볼 수 있다.
  • 음성처리 : 긴 소리가 들어왔을 때 음소를 찾아내고, 그 음소를 조합해서 문장을 만든다.
  • 음성처리 연구
    • 1) 음성인식 : signal to symbol (소리로부터 텍스트를)
    • 2) 음성합성 : symbol to signal (텍스트로부터 소리를)

⇒ 잘 안되다가, 요즘에 DNN이라는 뉴럴 네트워크가 나와서 인식률이 높아졌다.

 

2. 모폴로지 : 의미를 갖는 단어수준으로 시퀀스와 심볼을 잘라내는 것, 형태에 대한 학문

  • 자연어처리는 모폴로지부터이다. 서브워드 유닛을 잘라내는 것
  • Disconnect를 사전에 넣어 한 단어로 보면 된다. 사실 안 잘라도 된다.
  • 띄어쓰기를 안하는 언어들 : 중국어/터키어/일본어
  • 한국은 띄어쓰기를 단어가 아닌 어절 레벨로 한다.
  • “감기는”에 대한 분석은 4가지로 가능하지만, 어떤 걸 선택하느냐는 앞 문장을 봐야 할 수 있다.

1) Part-Of Speech Tagging

- POS = 품사

- Verb 동사

- Noun 명사

- Preposition 전치사

- Pro

- Det

⇒ meatballs가 들어왔을때 아 이것은 복수형이다 하고 원형을 찾아내서 사전에서 품사를 찾아오는 것 = 영어에서의 형태소 분석기

⇒ saw(보았다), saw(톱) 등 의미가 다른 단어를 구별해 내는 것이 분석에서의 어려운 작업 중 하나이다.

⇒ POS 태깅은 구문파싱을 하거나 워드 센스 디셈비게이션을 할 때 중요하게 사용된다. 품사를 제대로 찾지 못하면 그 다음 단계에서 에러가 나게 된다.

 

2) Phrase Chunking

: 명사구와 동사구 정도 되는 것을 굉장히 중요한 의미를 가진 키워드로 본다. 그것만이라도 잘라내면 좋다. 이걸 잘 하면 정보 추출해서 데이터베이스화 할 때 유리하다.

- 절 : 자체적인 주어 동사가 다 들어가 있는 것

- 구 : 의미있는 단위. 동사구(VP)/명사구(NP)/형용사구/부사구

 

3. Syntax 구문론/구문분석

: 단어들 사이의 구조적인 관계를 찾는 단계. 문법을 만들때 단어를 가지고 하면 너무 많으니까

품사를 가지고 규칙을 만들었다. 명사, 동사 등의 품사를 가지고 규칙을 만든 것이 문법이다.

형태소 분석을 통해 품사를 찾아내는 이유는 문법을 적용하기 위함이다.

 

4. 의미분석 : 글자 그대로의 의미를 찾는 것 (숨어있는 의미 X, 뭘 뜻하는 지)

feature - value

action = disconnect

actor = you and frank

object = me

→ 이 문장 이전의 내용을 알지 못하면 정확하게 파악이 어렵다 (문맥을 봐야하는 이유)

 

  • Word Sense Disambiguation (WSD) : 동음이의어는 앞뒤 단어를 보고 의미를 파악할 수 있다

질의응답, 기계번역할 때 이런 의미가 판별이 안되면 엉뚱한 답이 나오거나 이상한 번역을 하게 된다. 동음이의어 분별을 잘 해야만 자연어 처리가 잘 이루어진다.

 

5. Pragmatics (화용론) or Dialog Knowledge : 실생활에 있는 지식을 적용해서 언어를 이해하기 때문에 어떻게 하면 할 수 있는지

  • 누가 질문을 하면 응답을 한다.
  • 누군가 요청을 하면 상황에 맞춰 응답한다.

6. Discourse (담화론) : 화용론과 담화론은 상황과 문맥을 본다는 측면은 비슷하지만, 담화론은 문맥을 중요시한다.

  • 앞에 나온 문장을 보고 뒷 문장을 분석한다.
  • turn taking : 누가 발화할 차례인지 판단
  • thread of meaning : 문맥에서 의미가 따라와야 한다.
  • Story discourse involves world knowledge(상식) : 상식은 어떻게 자연어처리에 적용할 수 있을까? 우리는 자연어를 할 때 상식을 가정하고 말을 한다.
    • 철수는 어항을 떨어뜨렸다.
    • 그는 울고 말았다.

1) 우리는 ‘그’가 철수인 걸 알지만, 컴퓨터는 알지 못한다.

2) 그는 왜 울었는가 ? 어항이깨져서/금붕어가죽어서/물이바닥에쏟아져서/엄마한테야단맞아서(background knowledge)

→ 위의 사유들이 문맥속에는 없지만, 사람은 문장 두 개를 읽었을 때 유추할 수 있다. 이미지가 그려지기 때문에

 

  • Linguistic Rules

      e.g ) Morphology 규칙 : 변형되어 사용된 단어의 원형을 찾는 것 → 영어에서의 자연어 처리

  • NNP/NNS/VBZ…등의 용어 : Upenn의 방대한 말뭉치 데이터를 수집해서 관리하는 곳(Lexical Data Consortium)에서 정의한 품사

 

  • ambiguities
  • word sense ambiguities
  • semantic interpretation : 워드 레벨 윗 단에서 모호성이 발생

 

  • Effects of V/N ambiguity
  • 품사를 어떻게 보느냐에 따라 문장의 의미가 완전히 달라짐
  • 언어의 진화 : 자연어처리를 어렵게 만드는 것 중 하나
  • 새로운 단어의 생성
  • 품사의 변화 : kind와 sort는 늘 명사였는데 최근에는 형용사로 쓰이고 있다.

 

  • 자연어처리는 어렵다!
  • 모든 레벨에서 굉장히 모호하다.
  • 복잡하고 미묘하다.
  • 어렴풋하고, 통계적인 성질을 가진다.
  • 배경지식이 있어야만 자연어를 제대로 이해할 수 있다.
  • 사람들 사이의 상호작용하는 지식이 필요하다.
  • 시간이 흐를수록 계속 변화한다.

 

  • 모호성의 해결
  • 문법 : (예) 에이전트는 전형적으로 동사의 주어에 해당한다는 제약조건을 찾아내어 모호성을 해결
  • 의미 : “마이클은 사람의 이름이다” 라는 지식이 필요
  • 화용론
  • 배경지식 : interest를 번역할 때, 크레딧카드에 대한 지식이 있으면 이건 이자구나~! 하고 알 수 있음

 

  • (과거) Manual knowledge acquisition
  • 전통적으로는 rationalist approaches 라고 해서 사람이 직접 지식을 명시하고, 형식화했다.
  • 손으로 일일히 규칙을 만들었는데 굉장히 어렵고 시간도 오래걸리고 에러도 많았다.
  • 규칙이라는 것은 항상 예외가 있다.
  • 손으로 만드는 규칙은 한계가 있고, robust하지 못하다.

 

  • (현재) Automatic Learning Approach
  • 머신러닝을 이용, 품사를 이미 매겨놓은 정답 데이터로 학습을 시킴
  • 이것을 가리켜 corpus based / statistical / empirical 이라는 용어를 사용한다.

→ 기계학습을 통해 데이터로부터 규칙을 자동으로 학습하는 것을 포괄적으로 일컫는다.

  • 이 통계적인 방식은 1970년대~1980년대에 음성인식 분야에서 많이 연구했다.
  • 자연어 처리쪽에서는 1990년대 들어서 통계적인 기계학습 방식을 시도했다.

 

  • probabilistic models of language : 통계적인 학습방식
  • 베이지안 분류기 (규칙이 아닌)
  • 히든 마코프 모델 (HMM)
  • PCFG
  • MEM
  • SVM, CRF(통계적인 방식은 아님) 등 다양한 머신러닝 모델

 

  • 딥러닝
  • 기존의 통계적인 학습방식보다 훨씬 더 좋은 성능
  • RNN, LSTM
  • Word2Vec : 심볼로 있는 단어를 n차원의 실수 벡터로 표현. 단어를 실수로 분산표현(컴퓨터 친화적으로 의미를 표현할 수 있게 된 것이다! 왜냐하면 심볼은 컴퓨터에게는 너무 불편하다.)
  • Seq2seq model : 인코딩 디코딩 모델
  • 새로운 방식의 워드 임베딩 : Pre-trained Language model : BERT, RoBERTa, GPT3

→ 기존의 단순한 워드임베딩에 비해 커다란 워드임베딩 방식이다. 지금은 DNN을 많이 사용한다.

 

  • 머신러닝 어프로치
  • 사람 손으로 정답을 태깅한 정답문서로 학습을 시킴 → 머신러닝을 하면 학습된 Knowledge를 만들어내고, 그 지식을 가지고 input 텍스트가 들어오면 자연어처리 시스템이 지식을 이용해 분석한다. → 자동적으로 정답을 붙여 출력

 

  • 머신러닝 접근방식의 장점
  • 인터넷에서 수집한 방대한 양의 텍스트가 가능
  • manual knowledge engineering(전문가의 손길) 보다 그냥 텍스트에 태깅하는 것이 쉽고 빠름(일반인도 가능)
  • 통계적인 지식도 점점 우수하게 뽑아져 나오고 있다. 현재는 사람 성능을 넘어서려고 함
  • DNN 어프로치는 거의 모든 레벨에서 통계적인 방식의 학습방법보다 좋은 성능을 내고 있다.

 

  • 자연어처리 과정
  • 자연어에 대한 이해
  • 자연어의 생성

→ 언어학, 컴퓨터 이론, AI, 수학 및 통계, 심리학 등을 다방면으로 잘 알면 자연어처리에 도움이 된다.

 

  • NLP는 어디쯤 와있는가?
  • True text 이해
  • real time 음성 대화(사람과 같은) : 아직 멀었다는 점!
  • 현재 우리가 잘 사용하고 있는 것들
  1. 웹 검색
  2. 상황에 맞는 맞춤법 수정
  3. 읽기 수준, 저자 통계적 분석
  4. 뉴스기사에서 회사 이름, 위치 추출
  5. 질의응답 (IBM 왓슨)
  6. 지문독해, 4지선다형 질의응답
  7. 챗봇 스타일 대화