Corpus(말뭉치) 준비와 데이터 전처리 – 한국어 AI 모델 만들기 #2

오늘은 나만의 한국어 AI 모델 만들기 두 번째 이야기로, 한국어 학습을 위한 가장 기본적인 Corpus(말뭉치)에 대해 정리하겠습니다. 최근 인공지능(AI)이 사람처럼 글을 쓰고, 질문에 답하고, 번역까지 하는 모습을 자주 보게 됩니다. 그런데 인공지능이 이렇게 자연스러운 한국어를 구사하려면 먼저 꼭 준비해야 하는 것이 있습니다. 코퍼스입니다.

인공지능이 사람의 말을 이해하고 자연스럽게 표현하기 위해 어떤 데이터를 필요로 하는지, 그 데이터를 어떻게 준비해야 하는지 정리해 보죠.

Corpus(말뭉치) 준비와 데이터 전처리
Corpus(말뭉치) 준비와 데이터 전처리

Corpus란 무엇인가?

Corpus는 인공지능이 학습할 수 있도록 모아 놓은 방대한 양의 텍스트 자료 즉, 말뭉치입니다. 사람은 책이나 신문, 대화 등을 통해 언어를 자연스럽게 배우지만, 인공지능은 이런 자료를 모아 놓은 corpus(말뭉치)를 읽고 규칙과 표현 방식을 익히게 됩니다. 즉, Corpus는 인공지능에게 언어를 가르치는 ‘교과서’와 같은 역할을 하는 것이죠.


좋은 Corpus의 조건

인공지능이 제대로 언어를 배우려면 단순히 자료의 양만 많다고 되는 것이 아닙니다. 다음과 같은 조건을 갖추어야 하죠.

  • 충분한 양의 데이터: 최소 수백만 문장 이상의 자료가 필요합니다. 물론 이것은 AI의 크기에 따라 다릅니다.
  • 다양한 내용: 뉴스, 소설, 블로그 글, 일상 대화 등 다양한 종류의 글이 있어야 합니다.
  • 정확하고 깨끗한 문장: 맞춤법이나 문법이 틀린 문장은 학습에 방해가 될 수 있습니다. 그냥 인터넷 문장을 크롤링하게 되면 이런 부분에서 문제가 생길 수 있어요. 비문이나 특수문자가 너무 많으면 곤란하죠.
  • 말투의 구분: 대화체(구어체)와 글쓰기 형태(문어체)를 구분하여 따로 준비하면 더 좋습니다.


코퍼스는 어디에서 얻을 수 있나?

A. 무료로 얻는 방법

  • AI-Hub: 뉴스, 대화 등 다양한 한국어 자료 제공
  • Korpora: 위키백과나 문학 작품 등이 포함된 자료 제공
  • CC100-ko: 인터넷에서 수집된 다양한 한국어 문장 모음

무료로 자료를 얻는다고 아무런 제약이 없는게 아니예요. 기본적으로 연구/학습 목적으로만 사용해야 하는 경우가 많아요. 이용약관을 반드시 확인해야 합니다. 예를 들어 제가 가장 많이 사용하는 AI-Hub의 경우는 해외 유출 금지 조항이 있어요. 이해가 되는 부분이기도 한데, 또 이게 지켜질까란 의문도 듭니다.

B. 직접 자료 수집하기

원하는 주제에 맞는 자료가 없다면, 뉴스 사이트나 블로그 등에서 직접 모을 수도 있습니다. 다만, 이때는 반드시 저작권이나 이용 약관을 미리 확인해야 합니다. 공개된 자료 등은 이미 공개되었기 때문에 이용에 자유롭다고 생각할 수 있으나, 저작권 관련 내용이 있는지 살펴봐야 합니다. 요즘은 공개된 뉴스 기사 조차도 저작원을 적용하고 있으니 더 주의해야죠. 말이 나왔으니 말인데, 뉴스 기사가 저작권이 있다는 것은 좀 아이러니합니다. 요즘 뉴스는 소설에 더 가까운 걸까요?

C. 이미 가지고 있는 문서 활용하기

회사에서 쓰는 보고서나, 고객 상담 기록, 자주 묻는 질문(FAQ) 등도 좋은 corpus 자료가 될 수 있습니다. 단, 개인정보나 중요한 정보는 미리 지워야 합니다.


데이터 품질 관리

수집한 자료는 바로 쓰기 어렵습니다. 불필요하거나 오류가 있는 부분을 정리하는 과정이 필요합니다. 주로 다음과 같은 작업을 하게 됩니다.

  • 중복된 문장 제거: 같은 문장이 여러 번 나오면 학습 효과가 떨어집니다.
  • 불필요한 문자 제거: 깨진 글자나 광고 문구 같은 내용을 지웁니다.
  • 적절한 문장 길이로 조정: 너무 길거나 짧은 문장은 적당히 나누거나 붙여서 학습이 잘 되도록 합니다.
  • 문장 나누기: 긴 글을 문장 단위로 나누어 정리합니다.

이 부분이 좀 귀찮기는 하지만, 실제 training의 효율과 직접적으로 관련된 부분으로 신중하게 생각해야 하더군요. 저도 처음 AI-Hub 등에서 내려 받은 데이터셋을 그대로 사용하다보니, 나의 현재 목적과 맞지 않은 데이터를 사용하는 경우가 발생하더라고요, 데이터셋이 문제가 아니라 나의 목적에 맞는 데이터로 재가공해야 하는데, 이 부분을 놓쳐 발생한 문제였어요. 나중에 관련 내용을 이야기할 때 좀 더 자세히 다뤄보겠습니다.


자료를 저장하는 형태

인공지능 모델은 글자를 그대로 읽지 않고 숫자로 바꿔서 처리(토큰화)합니다. 이를 위해 토크나이저(tokenizer)를 사용합니다. 따라서 다음과 같은 형태로 데이터를 준비합니다.

  • 텍스트 파일 (.txt): 문장 하나씩 줄을 바꿔 저장합니다.
  • JSONL 형식 (.jsonl): 각 줄마다 문장을 JSON 형식으로 저장합니다.
    • 예시: {"text": "인공지능은 언어를 배웁니다."}
  • PT 파일 (.pt): 미리 숫자로 변환해서 저장하여 학습 속도를 높이는 데 사용합니다.


그외 고려할 사항

  • 문어체와 구어체 자료는 별도로 관리하기: 문체가 다르면 학습 효과가 떨어질 수 있으니 따로 정리하면 좋습니다.
  • 짧은 문장을 모아 문단처럼 만들기: 너무 짧은 문장들만 있으면 문맥을 이해하기 어렵기 때문에, 몇 개씩 모아 문단을 만듭니다.
  • 처음부터 큰 데이터로 시작하지 않기: 데이터를 처음부터 너무 많이 넣으면 관리가 어려워집니다. 소규모로 시작해서 반응을 확인한 후 점차 늘려가는 것이 효과적입니다.

이러한 과정을 통해 준비된 좋은 코퍼스가 있어야만, 인공지능 모델이 자연스럽고 정확한 한국어를 배우고 사용할 수 있게 됩니다.


답글 남기기