서론

  • AI가 Token으로 요금을 계산한다고 들었나요?
    • 이게 사용하기에 많은 Token이 소모되죠.
    • 컴퓨터가 하루 종일 안 꺼져 있었다면 많은 Token이 소모되었을 텐데, 마치 집값이 날아간 것 같지 않나요?
  • 왜 Token으로 요금을 계산하나요?
    • Token이 양방향 요금제라고 들었어요.
    • AI에게 질문하면 요금이 부과되고, 답변하기에도 요금이 필요하다니, 좀 과하지 않나요?
    • 그러니 AI가 헛소리하는 거 아닐까요!
  • Token은 단어인가요, 문자인가요?
    • 한자는 어떻게 요금이 계산되나요?
    • 아랍어는 어떻게 되나요?
  • 기업의 정보화 과정에서 Token은 어떤 다른 의미를 가질까요?
    • 전통적인 정보화는 구조를 만들고 데이터베이스를 다루는 정도였죠.
    • AI의 적용에서 왜 Token 문제가 발생하나요?

이 글에서는 우리가 자주 듣는 Token이 과연 무엇인지, 여러 관점에서 답해보려 합니다. 글이 길지만, 천천히 읽어보세요.

컴퓨터 발전의 역사 속에는 자주 눈길을 끄는 용어들이 등장하고, 그 후 일반 사람들의 생활에 침투하게 되어 굳어지게 됩니다. 프롬프트(Prompt)라는 단어가 좋은 예시이고, Token도 마찬가지죠. 현재로서는 Token이 어쩌면 세상을 넘어서기도 했습니다.
그럼 Token은 OpenAI에서 처음 제안했는데, 여러 업체들이 이 요금 방식이 정말 좋다고 생각하기 때문일까요? 아니면 다른 이유가 있을까요?
먼저 그 기원에 대해 살펴보죠.

기업 환경에서 AI 기술을 통해 비용 절감 및 효율성을 높이는 데 Token에 대한 이해는 기업 내 AI의 실질적인 활용을 돕습니다. 간단히 말하면 Token은 레고 블록과 같아 우리가 필요한 어플리케이션을 구축하여 효율을 향상시킵니다.

Token 레고 블록

Token 기초

Token 기본 개념

우선 OpenAI 공식 사이트에서 Token에 대한 설명을 살펴봅시다:

  • 1 token ~= 4개의 영어 문자
  • 1 token ~= ¾ 단어
  • 100 tokens ~= 75 단어
    또는
  • 1-2개의 문장 ~= 30 tokens
  • 1 문단 ~= 100 tokens
  • 1,500 단어 ~= 2048 tokens

여기까지 보고 어떠세요? 헷갈리시나요? 이게 마치 공익이 몇 가지 방법으로 쓸 수 있는지와 같은게 아닌가요? 그럼, 좀 더 감을 잡아봅시다:

Learning AI Meticulously, Sharing Knowledge Joyfully

이 문장에 Token이 몇 개일까요? 6개 단어니까 6개의 Token이라고요? 아쉽게도, 그렇지 않아요!

Learning AI Meticulously, Sharing Knowledge Joyfully

ChatGPT 4에서는 10개의 Token으로 표시됩니다. 색깔 블록을 보면 구두점은 별도로 계산되며, JoyfullyJoyfully로 나뉘었습니다.

코드에서 대화로: Token을 도입할 필요성

컴퓨터의 핵심 언어는 0과 1로 구성된 이진 코드입니다. 이는 모든 프로그램과 데이터의 가장 기본적인 표현 방식입니다. 우리가 사용하는 Python, Java와 같은 고급 프로그래밍 언어든, 이미지와 비디오와 같은 다양한 멀티미디어 파일이든 모두 이런 기계 언어로 변환됩니다. 전통적으로 컴퓨터 과학에서는 전문가들이 현실 세계의 복잡성을 최대한 추상화하여, 문자열(문자들의 집합)과 정수(숫자)와 같은 명확한 데이터 타입을 정의하여 정보를 처리해왔습니다. 이런 방법은 수학 계산이나 데이터베이스 쿼리 같은 구조적 데이터 처리에 매우 효과적입니다.

하지만 기술이 발전하고 사람들의 수요가 높아짐에 따라, 우리는 컴퓨터가 숫자와 코드를 처리하는 것뿐만 아니라 자연어, 즉 인류의 일상 언어를 이해하고 처리하길 원하게 되었습니다. 이를 위해 자연어 처리(NLP, Natural Language Processing)의 영역이 도입되었습니다. 이는 컴퓨터가 인간의 언어를 이해하고 해석하며 생성할 수 있도록 하는 기술입니다.

자연어의 특성을 고려할 때, 그 다채로움, 문맥 의존성 및 모호성을 감안하면, 이제 우리는 단순한 1+1=2와 같은 질문을 해결하려는 것이 아닙니다. 이제 우리가 해결해야 할 것은 컴퓨터가 “오늘은 금요일, 주말에는 어디로 가지?”와 같은 문장을 이해하고, 감정을 분석하거나 다른 언어로 번역하는 것입니다. 이런 상황에서 전통적인 데이터 타입은 더 이상 충분하지 않습니다.

이제 우리는 Token의 개념을 도입해야 합니다. Token화는 복잡한 텍스트 데이터를 더 작고 컴퓨터가 처리가 쉬운 단위로 분해하는 과정입니다. 즉, 단어, 구 또는 구두점과 같은 것입니다. 이렇게 하면 컴퓨터는 언어 처리를 더 효과적으로 수행하고 텍스트에서 의미를 추출할 수 있습니다. 단순히 문자 수를 계산하는 것이 아닙니다.

확정성에서 모호성으로: 전통적인 프로그래밍은 명확하고 예측 가능한 데이터를 처리하는 반면, NLP는 다의어나 문맥에 따라 달라지는 언어를 해석하는 것입니다.

구조화에서 비구조화로: 구조화된 데이터베이스나 알고리즘 대신, NLP는 유연하고 자유로운 형태의 자연어 텍스트를 처리합니다.

Token은 무엇인가요? 왜 텍스트를 Token으로 변환해야 하나요?

상상해보세요. 생성적 AI에서 매우 전형적인 응용 시나리오는 빠른 요약입니다. 우리는 한 문장, 한 문장을 따지지 않고도 중요한 정보를 빠르게 이해할 수 있습니다. 이 과정에서 Token은 컴퓨터가 대량의 텍스트를 ‘이해’하고 처리하는 데 중요한 역할을 합니다.

Token은 무엇인가요?

자연어 처리에서 Token은 일반적으로 텍스트 내의 의미 있는 조각을 가리킵니다. 이러한 조각은 단어, 구 또는 구두점이 될 수 있습니다. 위의 예와 같습니다.

왜 Token으로 변환하나요?

텍스트를 Token으로 변환하는 것은 복잡한 비즈니스 보고서를 핵심 부분으로 나누거나 이메일 내용을 요점으로 나누는 것과 같습니다. 이러한 분해는 컴퓨터가 언어를 보다 효과적으로 처리하고 분석하도록 하여, 검색, 자동 번역 또는 감정 분석과 같은 작업을 수행할 수 있게 합니다.

예를 들어, 어떤 사람이 메이투안(Meituan)에서 체인점을 열고 고객 피드백을 분석하여 제품을 개선하고 싶어한다고 가정해봅시다. 피드백 내용을 Token으로 분해하면, 일반적인 문제나 부정적인 평점을 식별하는 데 도움을 줄 수 있습니다.

Token은 단어와 같아 보이지만, 실제 상황은 어떨까요?

Token과 문자, 단어의 차이점과 관계.

정의 특징 예시
문자 텍스트를 구성하는 기본 요소` 반드시 독립적으로 완전한 의미를 표현하지 않으며, 다른 문자들과 조합하여 어휘를 이룰 수 있다. happy
단어 문자가 구성되어 일정한 의미를 표현하는 단위 정보 전달의 기본 단위로, 단일 문자보다 더 풍부한 정보를 전달한다. I’m happy
Token 일반적으로 단어에 해당하지만 더 유동적이며, 구, 구두점, 어근, 접두사 등일 수 있다. Token의 정의는 그 목적에 따라 달라진다; 예를 들어, 텍스트 분석, 기계 번역 등에서. I, 'm, happy

여기까지 오면, 우리는 상당 부분 언어 본연에 대한 사람들의 이해에 의존한다는 것을 느낄 수 있습니다.

문자, 단어, Token은 기술적으로 다를 수 있지만, 텍스트 처리에서는 밀접한 관계를 가지고 있습니다. 문자는 단어를 구성하는 기본 요소이며, 단어는 Token의 요소를 형성합니다. 실제 응용에서는 Token의 인식과 사용이 문자와 단어에 대한 이해에 의존합니다.

예를 들어, 시장 추세에 관련된 보고서를 분석할 경우, Token화 과정을 통해 우리는 ‘성장’, ‘위험’, ‘기회’와 같은 키워드를 신속하게 식별하여 경영진이 보고서의 핵심 내용을 파악하는 데 도움을 줄 수 있습니다.

전반적으로 Token은 컴퓨터가 텍스트를 처리하고 ‘이해’하는 데 도움을 주는 방법이며, 이는 텍스트의 자동화된 처리를 가능하게 하고, 기업이 데이터 기반 의사 결정 과정에서 언어 정보를 더 효과적으로 사용할 수 있도록 지원합니다.

그렇다면 Token은 어떻게 생성되고 처리될까요? 이는 전통적인 프로그래밍 사고 방식에서 한 발짝 나아가야 할 문제입니다.

Token 생성 및 처리

Token은 어떻게 생성되나요? 텍스트를 Token으로 변환하는 구체적인 과정.

다양한 모델에서 처리하는 방식은 다를 수 있으며, 이해를 돕기 위해 몇 가지 단계를 제시했습니다. 기업 정보화에서 데이터 가치의 우선 순위와 데이터 처리 비용을 고려하여 적절한 평가를 하는 것이 중요합니다.

예를 들어,

Token 생성

전처리

여기 일련의 예시 텍스트가 있습니다. 이 텍스트는 중국어, 영어 및 숫자가 혼합되어 있으며, 전처리해야 할 요소도 포함되어 있습니다:

1
2024년, AI 기술은 빠르게 발전하고 있습니다. 예를 들어, OpenAI는 GPT-4o 모델을 출시했습니다. 이 모델은 성능이 뛰어난 데다 <code>자연어</code>를 처리하는 데 혁신적인 발전을 이루었습니다. 하지만, 우리는 "의", "了"와 같은 정보량이 없는 일반적인 불용어를 제거해야 합니다. 이러한 기술의 세부 사항은 우리의 웹사이트를 방문하세요.
  1. 불필요한 문자 제거:

    • 웹 코드 태그인 <code></code>를 제거합니다. 이러한 정보는 텍스트 내에서 유용하지 않습니다.
  2. 텍스트 표준화:

    • 모든 영어 문자를 소문자로 변환하여 대소문자 차이를 없앱니다. 예를 들어, “OpenAI”는 “openai”로 변환됩니다.
    • 번체자에서 간체자로 변환합니다. 만약 텍스트에 번체자가 포함되어 있다면, “發展”은 “발전”으로 변환됩니다.
  3. 불용어 제거:

    • 특정한 정보를 전달하지 않는 단어는 공통적으로 인식하여 제거합니다, 예를 들어, “의”, “了” 등의 단어.

이런 전처리 단계를 거치면, 텍스트는 더 규범화되어 분할 및 Token화 처리를 용이하게 하며, 후속 분석 작업의 정확성을 높이고 효율성을 향상시킵니다.

1
2024년, AI 기술은 빠르게 발전하고 있습니다. 예를 들어, OpenAI는 GPT-4o 모델을 출시했습니다. 이 모델은 성능이 뛰어난 데다 자연어를 처리하는 데 혁신적인 발전을 이루었습니다. 하지만 우리는 일반적인 불용어를 제거해야 합니다. 이러한 기술의 세부 사항은 우리의 웹사이트를 방문하세요.

분할

분할은 말 그대로 문장에서 어휘를 분리하는 작업입니다. 우리는 지금 보석을 가지고 적절한 위치에서 자르는 것과 같습니다.

어떻게 분할할까요? 우리가 떠올리는 솔루션은 사전으로 대조하는 것입니다. 이는 역사적으로 사용된 방법 중 하나입니다. 분할한 후 대략 이렇게 됩니다:

1
2024 / 년 / , / AI / 기술 / 빠르게 / 발전하고 / 있습니다 / . / 예를 들어 / , / OpenAI / 는 / GPT-4o / 모델 / 을 / 출시했습니다 / . / 이 / 모델 / 은 / 성능이 / 뛰어나며 / , / 자연어 / 를 / 처리하는 / 데 / 혁신적인 / 발전을 / 이루었습니다 / .

실제 과정에서 분할은 많은 내용을 포함합니다. 크게는 몇 가지 솔루션이 있습니다:

  1. 단어의 경계 결정:

    • 영어와 같은 공백으로 분리된 언어는 상대적으로 간단합니다. 영어를 읽을 때 우리는 쉽게 공백을 통해 단어의 끝과 시작을 알 수 있습니다.
    • 중국어와 같은 언어는 복잡합니다. 중국어는 연속적으로 쓰여지며 명확한 간격이 없습니다. 이때 우리는 다른 방법을 통해 어떤 글자가 의미 있는 어구를 이루는지 정해야 합니다.
  2. 사전 및 규칙 사용:

    • 사전 기반 방법: 사전과 같은 큰 리스트를 통해 텍스트에서 어휘를 찾아내는 방식입니다. 이는 단순하고 알려진 방법이지만, 새로운 단어나 드문 단어는 사전에 없을 수 있습니다.
    • 규칙 기반 방법: 문법과 문맥 정보를 통해 글자 간의 관계를 판단하여 어떤 글자가 어구를 형성해야 하는지를 결정하는 방식입니다.
  3. 통계 및 학습 방법:

    • 통계 데이터를 사용하여 어떤 글자나 문자가 일반적으로 함께 출현하는지 학습합니다. 이런 방법은 대량의 텍스트 데이터를 분석하여 단어의 경계를 학습하고 예측합니다.
  4. 혼합 방법:

    • 실제 응용에서는 보통 여러 가지 방법을 결합하여 분할의 정확성과 적용 가능성을 향상시킵니다.

간단히 말하자면:

  • 영어: 공백 및 구두점을 기반으로 분할합니다.
  • 중국어: 알고리즘을 사용하여 단어 경계를 인식합니다.

결바 분할

중국어 분할을 위한 유용한 라이브러리인 결바 분할은 이미 4년 동안 업데이트되지 않았습니다.

전통적인 분할 로직은 특정 맥락에서의 단어의 의미와 문맥을 고려하지 않는 경우가 많습니다. 다음 예시을 봅시다:

1
2
너는/왜/총/응원하는가
너/는/왜/총/응원하는가

왜 총은 개인의 이름이며, 는 하나의 단어입니다. 이 미묘한 모호함이 정말 매력적입니다!

분할이 끝난 후, Token화 작업을 시작합니다.

Token화

Token화는 텍스트 데이터를 처리하는 중요한 단계로, 분할을 기반으로 텍스트 단위를 세분화하고 처리하여 후속 분석 요구에 더 잘 적응시키는 과정입니다. 아래는 제공된 텍스트를 사용하여 Token화 과정을 구체적으로 설명합니다.

  1. 전문가 명칭 및 특정 평어 병합:

    • “OpenAI”와 “GPT-4 o”를 단독 Token으로 간주합니다. 이는 고유명사로 독립된 의미를 가집니다.
    • “자연어”는 전문 용어이자 구속 요소로서 하나의 Token으로 간주되어야 합니다.
  2. 구두점을 독립 Token으로 처리:

    • 구두점인 쉼표(,)、 마침표(.) 및 인용부호(“)는 독립 Token으로 간주됩니다. 이는 문장의 형식과 구조에서 중요한 역할을 합니다.
  3. 인용 마크 처리:

    • 빈 인용 부호 내의 공백과 같은 Token은 오류로 간주하여 제거합니다.

Token화 후 결과

1
2024 / 년 / , / AI / 기술 / 빠르게 / 발전하고 / 있습니다 / . / 예를 들어 / , / OpenAI / 는 / GPT-4o / 모델 / 을 / 출시했습니다 / , / 이 / 모델 / 은 / 성능 / 이 / 뛰어나며 / , / 자연어 / 를 / 처리하는 / 데 / 혁신적인 / 발전을 / 이루었습니다 / . / 하지만 / , / 나는 / 일부 / 일반적으로 / 불필요한 / 정보량 / 없는 / 불용어나 / 예를 들어 / , / , / 등등 / 제어해야 / 합니다 / . / 이러한 / 기술 / 세부 / 사항은 / 우리 / 웹사이트 / 를 / 방문하세요 / .

이 처리는 더 간결하고 의미가 있으며, 향후 NLP 작업인 텍스트 분석이나 감정 분석에서 적합하게 사용될 수 있습니다. 합리적인 Token화를 통해 우리는 텍스트의 의미와 구조적 특성을 효과적으로 포착할 수 있어, 심층 텍스트 이해 및 분석을 위한 기초에 기여합니다.

Token화와 벡터화는 밀접한 관계가 있지만 다릅니다. 벡터화는 내용이 수치로 변환되는 과정으로, 후에 설명될 것입니다.