ChatGPT 덕분에 현재 가장 많이 사용되는 인공지능 분야 중 하나가 자연어 처리(Natural Language Processing, NLP)라는 학과이다. 자연어 처리는 인간이 사용하는 언어(자연어)를 컴퓨터가 이해하고 처리하는 기술이다. NLP는 기계 번역, 텍스트 분류, 정보 검색, 감정 분석 등 다양한 분야에서 활용되며, 이를 위해서는 자연어의 형태, 문법, 의미, 의도 등을 이해하고 처리하는 다양한 알고리즘과 기술이 필요하다. 이를 통해 컴퓨터는 자연어로 된 문서를 이해하고 분석하여 다양한 정보를 추출하거나 처리할 수 있게 됩니다. 이번 편에서 인공지능은 어떻게 사람의 언어를 리해하고 특유 언어의 문법을 리용해 사람의 말을 듣고 사람과 대화를 하는지에 대해서 소개해 보겠다.

Chomsky hierarchy 촘스키의 계층

모든 언어는 문법과 규칙이 있다. 컴퓨터가 언어를 리해하려면 언어의 규칙을 알고 그 규칙에 의하여 단어와 어구를 만들어야 한다. 촘스키 계층(Chomsky hierarchy)은 언어 생성 능력에 따라 언어의 형식을 분류하는 방법이다. 이 방법은 언어학자 놈 촘스키 Noam Chomsky에 의해 1950년대에 제안되었으며, 이후 컴퓨터 과학과 이론 언어학에서 기본적인 개념으로 자리 잡았다. 촘스키의 문법 계층은 현대 언어학의 중요한 이론 중 하나로, 문법이 생성하는 언어의 종류를 일정한 계층으로 분류하는 방법을 제시하고 있다. 이 계층은 4가지 유형으로 구성되어 있으며, 이 중 상위 계층은 하위 계층보다 더 강력한 문법 규칙을 사용하며, 더 많은 언어를 생성할 수 있다.

1. 정규 문법 Regular Grammar
한국어의 모음 조화 현상을 나타내는 "ㅏ, ㅑ, ㅓ, ㅕ ㅗ, ㅜ, ㅡ" 등의 조건들을 나타내는 정규 표현식이 정규 언어에 해당된다

2. 문맥 자유 문법 Context-free grammar
문맥 자유 문법의 문장은 "S → NP VP" 와 같은 문장 형태를 나타내는 문법이다. 그중 S(Sentence)는 문장을 의미하고, NP(Noun Phrase), VP(Verb Phrase)는 각각 명사와 동사 문구를 의미한다. 즉, 문맥 자유 문법은 주어와 동사, 목적어 등이 나타나는 문장의 기본 구조를 나타내는 문법이다.

3. 문맥 종속 문법 Context-sensitive grammar
한국어에서는 조사나 어미 등이 앞의 단어에 따라 변형되는 경우가 있다. 이런 문법적인 구조를 나타내는 문법이 문맥 종속 문법에 해당된다.

4. 무제약 문법 Unrestricted grammar
가장 강력한 문법 계층으로, 언어의 모든 문장을 생성할 수 있다. 한국어에서는 띄어쓰기가 제대로 이루어지지 않거나 문장 구조가 형식적으로 올바르지 않은 경우가 있다. 예를 들면 두음법칙이 없는 사투리거나 같은 뜻을 표현하지만 띄어쓰기가 다른 문구 등등은 모두 무제약 문법에 속한다.

Tokenization 토큰화

자연어 처리(NLP)에서의 토큰화(Tokenization)는 문자열을 의미 있는 단위로 분할하는 과정을 말한다. 컴퓨터가 한 단락의 문장의 뜻을 리해하려고 할 때 먼저 그 문장을 여러 개의 작은 문장으로 나누고 더 나아가서 단어 하나하나를 분할하여 그 단어의 의미를 알려줘야 한다. 이와 같은 방식을 토큰화라고 부르다. 즉, 문장이나 문서와 같은 긴 문자열을 토큰이라는 작은 단위로 분할하는 것을 말한다. 이렇게 분할된 토큰은 텍스트 분석에 사용되며, 단어, 구두점, 해시태그 등과 같은 의미 있는 단위로 분할될 수 있다. 토큰화는 자연어 처리의 첫 번째 단계 중 하나이며, 컴퓨터가 언어를 리해하고 처리할 수 있도록 하는 중요한 처리 과정 중 하나이다.

토큰화하는 방식은 여러 가지가 있지만 그 방법 중 상당히 효율적인 방법으로 여러 언어를 처리할 수 있는 알고리즘은 Byte-Pair Encoding (BPE)이다. BPE은 주어진 문장에서 가장 자주 등장하는 바이트 쌍을 순차적으로 찾아내어 하나의 새로운 단어로 대체하는 방식으로 작동한다. 이를 통해 텍스트의 크기를 줄이면서 단어의 재사용성을 높일 수 있다. BPE은 자연어 처리에서 단어 분리 및 언어 모델링 등의 분야에서 널리 사용되며, 딥러닝 및 기계 번역 등의 고급 NLP 작업에서도 사용된다.

Sequence Labeling 시퀀스 레이블링

단어를 토큰화하고 그 단어에 대한 의미를 레이 블랑하고 이로 통해 특정 정보를 추출하거나 분류하는 방식을 시퀀스 레이 빌링(Sequence Labeling)이라고 한다.

예를 들어서 컴퓨터한테 “오늘 7lc는 아침에 7-11에서 바나나우유를 샀다." 라는 문장을 토큰화하고 레이블링하면 아래와 같은 결과가 나온다:

  • 오늘 (명사, 날자)
  • 7lc는 (명사, 인간)
  • 아침에 (명사, 날자) 
  • 7-11에서 (명사, 지역, 단체)  
  • 바나나우유 (명사, 음식)   
  • 샀다 (동사)    

문장을 토큰화 및 레이블링 하고 그 데이터를 딥러닝 알고리즘에 입력하면 컴퓨터는 우리의 언어를 리해하고 연관된 문장을 자동으로 생성하게 된다.

Transformer 트랜스포머

이 트랜스포머는 만화 트랜스포머가 아니고 구글(Google)이 2017년에 발표한 자연어 처리(NLP) 모델로, 기존의 딥러닝 알고리즘 RNN(Recurrent Neural Network)이나 CNN(Convolutional Neural Network) 등의 아키텍처에서 사용되던 순차적인 데이터 처리를 위한 방식에서 벗어나 어텐션 메커니즘(Attention Mechanism)을 활용한 모델이다.

이전의 NLP 모델에서는 입력된 문장의 단어들을 순차적으로 처리하며 문장의 정보를 학습했지만, 트랜스포머 모델은 입력 문장의 모든 단어를 동시에 처리하고, 각 단어가 전체 문장 내에서 어느 위치에 있는지에 따라 가중치를 부여하여 문장의 정보를 추출한다. 이러한 방식은 문장 내에서 긴 거리(단어와 단어 사이의 거리, 수학 생략)의 의존성을 높은 정확도로 학습할 수 있어, 기존의 RNN이나 CNN 모델보다 더 높은 성능을 보이고 있다.

트랜스포머 모델은 GPT-3와 같은 대형 언어 모델로 인해 자연어 처리 분야에서 큰 역할을 하고 있으며, 현재까지도 많은 연구와 개발이 이루어지고 있다. 트랜스포머는 요즘 가장 흥행하는 ChatGPT의 기본 모델이기도 하다.

Automatic Speech Recognition자동 음성인식

ChatGPT와 같은 NLP 모델로 인공지능의 언어 능력을 키우고, 사람의 음성을 인식하고 그 음성을 글자나 명령어 등으로 변환하는 기술을 자동 음성인식(Automatic Speech Recognition, ASR)라고 한다. 자동 음성인식은 일반적으로 음성 신호를 전처리(Pre-processing) 하고, 음성 신호를 단어나 구문 등으로 분리하며, 각 단어나 구문을 인식하여 텍스트 형태로 변환하는 과정을 거친다. 이를 위해 딥러닝 기술을 활용하는 End-to-End 방식의 ASR 시스템도 개발되고 있다. ASR 기술은 음성인식 기술, 음성 인식 엔진, 음성 인식 소프트웨어 등으로 불리며, 음성 검색, 음성 명령, 음성 번역 등 다양한 응용 분야에서 활용되고 있다. 자동 음성인식 기술로 개발한 인공지능은 사람의 말을 알아들을 수 있게 된다.

Text-to-Speech 문자 음성 변환

문자 음성 변환(Text-to-Speech , TTS) 텍스트를 음성으로 변환하는 기술을 의미한다. 이 기술은 컴퓨터가 문자를 음성으로 변환하여 사용자가 듣기 좋은 형태로 출력할 수 있도록 한다. 이를 위해 TTS 시스템은 일련의 처리 단계를 거치게 되는데, 먼저 문자 입력을 받아서 발음 및 억양 정보를 결정하고, 그 정보를 바탕으로 음성 신호를 생성한다. 이때, 음성 신호는 일련의 디지털 신호로 표현되며, 이를 스피커나 이어폰 등을 통해 출력할 수 있다. TTS 기술은 보이스메일 시스템, 음성인식 기반 대화 시스템, 자동 안내 음성 등 다양한 분야에서 활용되고 있다. 인고 지능은 TTS 기술로 사람과 말을 할 수 있게 된다.

인공지능기술로 연변 사투리 보존과 사용에 관한 생각

NLP 공부할 때 기말 Project로 Machine Translation 모델을 만들어야 했다. 나는 연변 사투리를 표준 한국어(Standard Korean)로 번역하는 제안을 했었다. 한글을 모르는 두 교수님은 나의 아이디어를 듣고 흔쾌히 프로젝트를 만들어 보라고 수락해 줬다. 자료들을 많이 찾아보고 연변 사투리 데이터도 찾으려 했으나 결국 몇 천 개의 단어와 문장 예시가 최선이었다. 교수님들과 상담 끝에 프로젝트 주제를 바꾸어 데이터가 많은 제주어와 표준 한국어로 번역하는 NLP 언어 모델을 만들었지만 마음은 안타까웠다.

인공지능으로 연변 사투리를 보존하고 널리 알리려면 아래와 같은 조건이 필요한 것 같다.

  1. 연변 사투리로 된 문장. (예: 그 입지도 않은 옷들은 다 줴뿌리자. – 연변말모이 사전)
  2. 사투리와 같은 뜻을 나타내는 표준 한국어 문장. (예: 그 입지도 않는 옷들은 다 버리자. – 연변말모이 사전)
  3. 고화질 사투리 음성 리코딩.
  4. 음성 리코딩을 번역 한 글.
  5. 몇 백만 개의 연변 사투리와 표준 한국어 문장 데이터 및 음성 데이터.
  6. 조건 1부터 5까지의 조건을 마련할 돈.
참고자료: 
  1. 연변말모이. 들레& 아바이& kye & Kevin & 별명없음& YA & gra.(n.d) https://open-pro.dict.naver.com/_ivo/dictmain?dictID=e873bd26f0bd431fa4cf887a9c8c5e97
  2. BNF. (n.d.). http://www.ktword.co.kr/test/view/view.php?no=3019
  3. Wikipedia contributors. (2023, February 16). Chomsky hierarchy. Wikipedia. https://en.wikipedia.org/wiki/Chomsky_hierarchy
  4. Wikipedia contributors. (2023b, February 26). Generative pre-trained transformer. Wikipedia. https://en.wikipedia.org/wiki/Generative_pre-trained_transformer
  5. Wikipedia contributors. (2023c, February 26). GPT-3. Wikipedia. https://en.wikipedia.org/wiki/GPT-3
  6. Speech and Language Processing. (n.d.). https://web.stanford.edu/%7Ejurafsky/slp3/
  7. Park, D. (2021). Korean-English Machine Translation with Multiple Tokenization Strategy | Semantic Scholar. https://www.semanticscholar.org/paper/Korean-English-Machine-Translation-with-Multiple-Park-Jang/c3c74df911a1ae68a2e78eadc8532276d5f9ff1f
  8. Park, K. (n.d.). Jejueo Datasets for Machine Translation and Speech Synthesis. ACL Anthology. https://aclanthology.org/2020.lrec-1.318/
  9. Freepik. (2018, August 21). Illustration of language concept Free Vector. https://www.freepik.com/free-vector/illustration-language-concept_2825850.htm
이 글을 공유하기:

7lc

회계를 하다가 요리가 좋아서 컴퓨터를 하게 된 남자.

작가를 응원해주세요

좋아요 좋아요
9
좋아요
오~ 오~
0
오~
토닥토닥 토닥토닥
0
토닥토닥

댓글 남기기

  1. 이 글 오래 기다렸는데, 반가워요! 시퀀스 레이블링은 한국어의 경우는 기능어에 대한 레이블링까지 하는데 ‘샀다’의 예를 들면, ‘사-/동사 + ㅏㅆ/과거 시제 + 다/종결어미’ 이런 식으로 돼요. 그리고 오타 발견, 1은 정규 언어가 아니라 정규 문법이죠? ^^

  2. 학습할 데이터를 집어넣으면 알아서 데이터 덩어리를 만든다고 그 데이터 덩어리가 더이상 증가안되면 학습 완료된거라고 들었는데 어떻게 데이터를 받아들이는지에 대한 얘기는 못들어서 덕분에 조금더 알아갑니다 ㅎㅎ 어렵네요.

    1. 만드는 기계학습 모델에 따라서 측정 방법이 다릅니다. 쉬운 모델은 F1 Score, Accuracy, Mean Square Error 등 방식으로 학습하는 모델의 효율성을 측정 할수 있습니다. 자연어 처리 모델일 경우 BLEU 점수도 자주 사용합니다. 데이터를 학습하는 동안 측정 점수가 일정수치에 도달하면 학습을 멈추면 됩니다. 예를 들어서 10GB의 데이터로 내년 집값을 예측하는 모델을 만드는데 3GB의 데이터에서 Accuracy 점수가 99% 나온다면 나머지 7GB 데이터는 학습하지 않아도 됩니다. 제 대답이 도움이 됐으면 좋겠네요. 🙂

글쓰기
작가님의 좋은 글을 기대합니다.
1. 아직 완성되지 않은 글의 초고는 "원고 보관함"에 저장하세요. 2. 원고가 다 완성되면 "발행하기"로 발행하세요.