Buckets:
| import{s as me,n as re,o as ce}from"../chunks/scheduler.bdbef820.js";import{S as he,i as qe,g as p,s as n,r as u,m as ca,H as ha,A as ge,h as o,f as a,c as l,j as _s,u as m,x as i,n as qa,B as ga,k as Hs,y as Bs,a as e,v as r,d as c,t as h,w as q}from"../chunks/index.33f81d56.js";import{Y as ya}from"../chunks/Youtube.0e329b00.js";import{C as y}from"../chunks/CodeBlock.362b34a4.js";import{D as ye}from"../chunks/DocNotebookDropdown.d5db5928.js";import{H as f,E as Me}from"../chunks/EditOnGithub.a9246e21.js";function de(da){let M,Ds,Es,Ss,j,Zs,T,Gs,J,fa="이 페이지에서는 토큰화에 대해 자세히 살펴보겠습니다.",Vs,v,Ns,w,ja=`<a href="preprocessing">데이터 전처리하기 튜토리얼</a>에서 살펴본 것처럼, 텍스트를 토큰화하는 것은 텍스트를 단어 또는 서브워드로 분할하고 룩업 테이블을 통해 id로 변환하는 과정입니다. | |
| 단어 또는 서브워드를 id로 변환하는 것은 간단하기 때문에 이번 문서에서는 텍스트를 단어 또는 서브워드로 쪼개는 것(즉, 텍스트를 토큰화하는 것)에 중점을 두겠습니다. | |
| 구체적으로, 🤗 Transformers에서 사용되는 세 가지 주요 토큰화 유형인 <a href="#byte-pair-encoding">Byte-Pair Encoding (BPE)</a>, <a href="#wordpiece">WordPiece</a>, <a href="#sentencepiece">SentencePiece</a>를 살펴보고 어떤 모델에서 어떤 토큰화 유형을 사용하는지 예시를 보여드리겠습니다.`,Qs,b,Ta=`각 모델 페이지에 연결된 토크나이저의 문서를 보면 사전 훈련 모델에서 어떤 토크나이저를 사용했는지 알 수 있습니다. | |
| 예를 들어, <a href="/docs/transformers/pr_34652/ko/model_doc/bert#transformers.BertTokenizer">BertTokenizer</a>를 보면 이 모델이 <a href="#wordpiece">WordPiece</a>를 사용하는 것을 알 수 있습니다.`,Ws,$,Xs,I,Ja=`텍스트를 작은 묶음(chunk)으로 쪼개는 것은 보기보다 어려운 작업이며, 여러 가지 방법이 있습니다. | |
| 예를 들어, <code>"Don't you love 🤗 Transformers? We sure do."</code> 라는 문장을 살펴보도록 하겠습니다.`,Ks,x,Rs,k,va=`위 문장을 토큰화하는 간단한 방법은 공백을 기준으로 쪼개는 것입니다. | |
| 토큰화된 결과는 다음과 같습니다:`,Ys,U,Fs,_,wa=`이는 첫 번째 결과로는 합리적이지만, <code>"Transformers?"</code>와 <code>"do."</code>토큰을 보면 각각 <code>"Transformer"</code>와 <code>"do"</code>에 구두점이 붙어있는 것을 확인할 수 있습니다. | |
| 구두점을 고려해야 모델이 단어의 다른 표현과 그 뒤에 올 수 있는 모든 가능한 구두점을 학습할 필요가 없습니다. 그렇지 않으면 모델이 학습해야 하는 표현의 수가 폭발적으로 증가하게 됩니다.`,Os,C,ba="구두점을 고려한 토큰화 결과는 다음과 같습니다:",st,P,tt,z,$a=`이전보다 나아졌습니다. 하지만, <code>"Don't"</code>의 토큰화 결과도 수정이 필요합니다. | |
| <code>"Don't"</code>는 <code>"do not"</code>의 줄임말이기 때문에 <code>["Do", "n't"]</code>로 토큰화되는 것이 좋습니다. | |
| 여기서부터 복잡해지기 시작합니다. 그리고 이 점이 각 모델마다 고유한 토큰화 유형이 존재하는 이유 중 하나입니다. | |
| 텍스트를 토큰화하는 데 적용하는 규칙에 따라 동일한 텍스트에 대해 토큰화된 결과가 달라집니다. | |
| 사전 훈련된 모델은 훈련 데이터를 토큰화하는 데 사용된 것과 동일한 규칙으로 토큰화된 입력을 제공해야만 제대로 작동합니다.`,at,L,Ia='<a href="https://spacy.io/" rel="nofollow">spaCy</a>와 <a href="http://www.statmt.org/moses/?n=Development.GetStarted" rel="nofollow">Moses</a>는 유명한 규칙 기반 토크나이저입니다. 예제에 <em>spaCy</em>와 <em>Moses</em> 를 적용한 결과는 다음과 같습니다:',et,H,nt,E,xa=`보시다시피 공백 및 구두점 토큰화와 규칙 기반 토큰화가 사용됩니다. | |
| 공백 및 구두점, 규칙 기반 토큰화은 모두 단어 문장을 단어로 쪼개는 단어 토큰화에 해당합니다. | |
| 이 토큰화 방법은 텍스트를 더 작은 묶음(chunk)로 분할하는 가장 직관적인 방법이지만, 대규모 텍스트 말뭉치에 대해서는 문제가 발생할 수 있습니다. | |
| 이 경우 공백 및 구두점 토큰화는 일반적으로 매우 큰 어휘(사용된 모든 고유 단어와 토큰 집합)을 생성합니다. | |
| <em>예를 들어</em>, <a href="model_doc/transformerxl">Transformer XL</a>은 공백 및 구두점 토큰화를 사용해 어휘(vocabulary) 크기가 267,735입니다!`,lt,A,ka=`어휘 크기가 크면 모델에 입력 및 출력 레이어로 엄청난 임베딩 행렬이 필요하므로 메모리와 시간 복잡성이 모두 증가합니다. | |
| 일반적으로 트랜스포머 모델은 어휘 크기가 50,000개를 넘는 경우가 드물며, 특히 단일 언어에 대해서만 사전 훈련된 경우에는 더욱 그렇습니다. | |
| 단순한 공백과 구두점 토큰화가 만족스럽지 않다면 단순히 문자를 토큰화하면 어떨까요?`,pt,B,ot,D,Ua="문자 토큰화는 아주 간단하고 메모리와 시간 복잡도를 크게 줄일 수 있지만, 모델이 의미 있는 입력 표현을 학습하기에는 훨씬 더 어렵습니다.",it,S,_a=`<em>예를 들어</em>, 문자 <code>"t"</code>에 대한 의미 있는 문맥 독립적 표현을 배우는 것 보다 단어 <code>"today"</code>에 대한 의미 있는 문맥 독립적 표현을 배우는 것이 훨씬 더 어렵습니다. | |
| 문자 토큰화는 종종 성능 저하를 동반하기 때문에 두 가지 장점을 모두 얻기 위해 트랜스포머 모델은 <strong>서브워드</strong> 토큰화라고 하는 단어 수준과 문자 수준 토큰화의 하이브리드를 사용합니다.`,ut,Z,mt,G,rt,V,Ca=`서브워드 토큰화 알고리즘은 자주 사용되는 단어는 더 작은 하위 단어로 쪼개고, 드문 단어는 의미 있는 하위 단어로 분해되어야 한다는 원칙에 따라 작동합니다. | |
| 예를 들어 <code>"annoyingly"</code>는 드문 단어로 간주되어 <code>"annoying"</code>과 <code>"ly"</code>로 분해될 수 있습니다. | |
| <code>"annoyingly"</code>가 <code>"annoying"</code>과 <code>"ly"</code>의 합성어인 반면, <code>"annoying"</code>과 <code>"ly"</code> 둘 다 독립적인 서브워드로 자주 등장합니다. | |
| 이는 터키어와 같은 응집성 언어에서 특히 유용하며, 서브워드를 묶어 임의로 긴 복합 단어를 만들 수 있습니다.`,ct,N,Pa=`서브워드 토큰화를 사용하면 모델이 의미 있는 문맥 독립적 표현을 학습하면서 합리적인 어휘 크기를 가질 수 있습니다. | |
| 또한, 서브워드 토큰화를 통해 모델은 이전에 본 적이 없는 단어를 알려진 서브워드로 분해하여 처리할 수 있습니다.`,ht,Q,za='예를 들어, <a href="/docs/transformers/pr_34652/ko/model_doc/bert#transformers.BertTokenizer">BertTokenizer</a>는 <code>"I have a new GPU!"</code> 라는 문장을 아래와 같이 토큰화합니다:',qt,W,gt,X,La=`대소문자가 없는 모델을 사용해 문장의 시작이 소문자로 표기되었습니다. | |
| 단어 <code>["i", "have", "a", "new"]</code>는 토크나이저의 어휘에 속하지만, <code>"gpu"</code>는 속하지 않는 것을 확인할 수 있습니다. | |
| 결과적으로 토크나이저는 <code>"gpu"</code>를 알려진 두 개의 서브워드로 쪼갭니다: <code>["gp" and "##u"]</code>. | |
| <code>"##"</code>은 토큰의 나머지 부분이 공백 없이 이전 토큰에 연결되어야(attach) 함을 의미합니다(토큰화 디코딩 또는 역전을 위해).`,yt,K,Ha="또 다른 예로, <code>XLNetTokenizer</code>는 이전에 예시 문장을 다음과 같이 토큰화합니다:",Mt,R,dt,Y,Ea=`<code>"▁"</code>가 가지는 의미는 <a href="#sentencepiece">SentencePiece</a>에서 다시 살펴보도록 하겠습니다. | |
| 보다시피 <code>"Transformers"</code> 라는 드문 단어는 서브워드 <code>"Transform"</code>와 <code>"ers"</code>로 쪼개집니다.`,ft,F,Aa=`이제 다양한 하위 단어 토큰화 알고리즘이 어떻게 작동하는지 살펴보겠습니다. | |
| 이러한 토큰화 알고리즘은 일반적으로 해당 모델이 학습되는 말뭉치에 대해 수행되는 어떤 형태의 학습에 의존한다는 점에 유의하세요.`,jt,Cs,Tt,O,Jt,ss,Ba=`바이트 페어 인코딩(BPE)은 <a href="https://arxiv.org/abs/1508.07909" rel="nofollow">Neural Machine Translation of Rare Words with Subword Units (Sennrich et | |
| al., 2015)</a> 에서 소개되었습니다. | |
| BPE는 훈련 데이터를 단어로 분할하는 사전 토크나이저(pre-tokenizer)에 의존합니다. | |
| 사전 토큰화(Pretokenization)에는 <a href="model_doc/gpt2">GPT-2</a>, <a href="model_doc/roberta">Roberta</a>와 같은 간단한 공백 토큰화가 있습니다. | |
| 복잡한 사전 토큰화에는 규칙 기반 토큰화가 해당하는데, 훈련 말뭉치에서 각 단어의 빈도를 계산하기 위해 사용합니다. | |
| <a href="model_doc/xlm">XLM</a>, 대부분의 언어에서 Moses를 사용하는 <a href="model_doc/flaubert">FlauBERT</a>, Spacy와 ftfy를 사용하는 <a href="model_doc/gpt">GPT</a>가 해당합니다.`,vt,ts,Da=`사전 토큰화 이후에, 고유 단어 집합가 생성되고 훈련 데이터에서 각 단어가 등장하는 빈도가 결정됩니다. | |
| 다음으로, BPE는 고유 단어 집합에 나타나는 모든 기호로 구성된 기본 어휘를 생성하고 기본 어휘의 두 기호에서 새로운 기호를 형성하는 병합 규칙을 학습합니다. | |
| 어휘가 원하는 어휘 크기에 도달할 때까지 위의 과정을 반복합니다. | |
| 어휘 크기는 토크나이저를 훈련시키기 전에 정의해야 하는 하이퍼파라미터라는 점을 유의하세요.`,wt,as,Sa="예를 들어, 사전 토큰화 후 빈도를 포함한 다음과 같은 어휘 집합이 결정되었다고 가정해 보겠습니다:",bt,es,$t,ns,Za="결과적으로 기본 어휘는 <code>["b", "g", "h", "n", "p", "s", "u"]</code> 이고, 각 단어를 기본 어휘에 속하는 기호로 쪼개면 아래와 같습니다:",It,ls,xt,ps,Ga=`그런 다음 BPE는 가능한 각 기호 쌍의 빈도를 계산하여 가장 자주 발생하는 기호 쌍을 선택합니다. | |
| 위의 예시에서 <code>"h"</code> 뒤에 오는 <code>"u"</code>는 <em>10 + 5 = 15</em> 번 등장합니다. (<code>"hug"</code>에서 10번, <code>"hugs"</code>에서 5번 등장)`,kt,os,Va=`하지만, 가장 등장 빈도가 높은 기호 쌍은 <code>"u"</code> 뒤에 오는 <code>"g"</code>입니다. <em>10 + 5 + 5 = 20</em> 으로 총 20번 등장합니다. | |
| 따라서 토크나이저가 병합하는 가장 첫 번째 쌍은 <code>"u"</code> 뒤에 오는 <code>"g"</code>입니다. <code>"ug"</code>가 어휘에 추가되어 어휘는 다음과 같습니다:`,Ut,is,_t,us,Na=`BPE는 다음으로 가장 많이 등장하는 기호 쌍을 식별합니다. | |
| <code>"u"</code> 뒤에 오는 <code>"n"</code>은 16번 등장해 <code>"un"</code> 으로 병합되어 어휘에 추가됩니다. | |
| 그 다음으로 빈도수가 놓은 기호 쌍은 <code>"h"</code> 뒤에 오는 <code>"ug"</code>로 15번 등장합니다. | |
| 다시 한 번 <code>"hug"</code>로 병합되어 어휘에 추가됩니다.`,Ct,ms,Qa="현재 단계에서 어휘는 <code>["b", "g", "h", "n", "p", "s", "u", "ug", "un", "hug"]</code> 이고, 고유 단어 집합은 다음과 같습니다:",Pt,rs,zt,cs,Wa=`이 시점에서 바이트 페어 인코딩 훈련이 중단된다고 가정하면, 훈련된 병합 규칙은 새로운 단어에 적용됩니다(기본 어휘에 포함된 기호가 새로운 단어에 포함되지 않는 한). | |
| 예를 들어, 단어 <code>"bug"</code>는 <code>["b", "ug"]</code>로 토큰화되지만, <code>"m"</code>이 기본 어휘에 없기 때문에 <code>"mug"</code>는 <code>["<unk>", "ug"]</code>로 토큰화될 것입니다. | |
| 훈련 데이터에는 단일 문자가 최소한 한 번 등장하기 때문에 일반적으로 <code>"m"</code>과 같은 단일 문자는 <code>"<unk>"</code> 기호로 대체되지 않지만, 이모티콘과 같은 특별한 문자인 경우에는 대체될 수 있습니다.`,Lt,hs,Xa=`이전에 언급했듯이 어휘 크기(즉 기본 어휘 크기 + 병합 횟수)는 선택해야하는 하이퍼파라미터입니다. | |
| 예를 들어 <a href="model_doc/gpt">GPT</a>의 기본 어휘 크기는 478, 40,000번의 병합 이후에 훈련을 종료하기 때문에 어휘 크기가 40,478입니다.`,Ht,qs,Et,gs,Ka=`가능한 모든 기본 문자를 포함하는 기본 어휘의 크기는 굉장히 커질 수 있습니다. (예: 모든 유니코드 문자를 기본 문자로 간주하는 경우) | |
| 더 나은 기본 어휘를 갖도록 <a href="https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf" rel="nofollow">GPT-2</a>는 기본 어휘로 바이트(bytes)를 사용합니다. | |
| 이 방식은 모든 기본 문자가 어휘에 포함되도록 하면서 기본 어휘의 크기를 256으로 제한합니다. | |
| 구두점을 다루는 추가적인 규칙을 사용해 GPT2 토크나이저는 모든 텍스트를 <unk> 기호 없이 토큰화할 수 있습니다. | |
| <a href="model_doc/gpt">GPT-2</a>의 어휘 크기는 50,257로 256 바이트 크기의 기본 토큰, 특별한 end-of-text 토큰과 50,000번의 병합으로 학습한 기호로 구성됩니다.`,At,Ps,Bt,ys,Dt,Ms,Ra=`워드피스는 <a href="model_doc/bert">BERT</a>, <a href="model_doc/distilbert">DistilBERT</a>, <a href="model_doc/electra">Electra</a>에 사용된 서브워드 토큰화 알고리즘입니다. | |
| 이 알고리즘은 <a href="https://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/37842.pdf" rel="nofollow">Japanese and Korean Voice Search (Schuster et al., 2012)</a>에서 소개되었고, BPE와 굉장히 유사합니다. | |
| 워드피스는 훈련 데이터에 등장하는 모든 문자로 기본 어휘를 초기화한 후, 주어진 병합 규칙에 따라 점진적으로 학습합니다. | |
| BPE와는 대조적으로 워드피스는 가장 빈도수가 높은 기호 쌍을 선택하지 않고, 어휘에 추가되었을 때 훈련 데이터의 우도가 최대화되는 쌍을 선택합니다.`,St,ds,Ya=`정확히 무슨 의미일까요? | |
| 이전 예시를 참조하면, 훈련 데이터의 우도 값을 최대화하는 것은 모든 기호 쌍 중에서 첫 번째 기호와 두 번째 기호의 확률로 나눈 확률이 가장 큰 기호 쌍을 찾는 것과 동일합니다. | |
| 예를 들어 <code>"ug"</code>의 확률이 <code>"u"</code>와 <code>"g"</code> 각각으로 쪼개졌을 때 보다 높아야 <code>"u"</code> 뒤에 오는 <code>"g"</code>는 병합될 것입니다. | |
| 직관적으로 워드피스는 두 기호를 병합하여 <em>잃는</em> 것을 평가하여 그만한 <em>가치</em>가 있는지 확인한다는 점에서 BPE와 약간 다릅니다.`,Zt,zs,Gt,fs,Vt,js,Fa=`유니그램은 <a href="https://arxiv.org/pdf/1804.10959.pdf" rel="nofollow">Subword Regularization: Improving Neural Network Translation Models with Multiple Subword Candidates (Kudo, 2018)</a>에서 제안된 서브워드 토큰화 알고리즘입니다. | |
| BPE나 워드피스와 달리 유니그램은 기본 어휘를 많은 수의 기호로 초기화한 후 각 기호를 점진적으로 줄여 더 작은 어휘를 얻습니다. | |
| 예를 들어 기본 어휘는 모든 사전 토큰화된 단어와 가장 일반적인 하위 문자열에 해당할 수 있습니다. | |
| 유니그램은 transformers 모델에서 직접적으로 사용되지는 않지만, <a href="#sentencepiece">SentencePiece</a>와 함께 사용됩니다.`,Nt,Ts,Oa=`각 훈련 단계에서 유니그램 알고리즘은 현재 어휘와 유니그램 언어 모델이 주어졌을 때 훈련 데이터에 대한 손실(흔히 로그 우도로 정의됨)을 정의합니다. | |
| 그런 다음 어휘의 각 기호에 대해 알고리즘은 해당 기호를 어휘에서 제거할 경우 전체 손실이 얼마나 증가할지 계산합니다. | |
| 이후에 유니그램은 손실 증가율이 가장 낮은 기호의 p(보통 10% 또는 20%) 퍼센트를 제거합니다. (제거되는 기호는 훈련 데이터에 대한 전체 손실에 가장 작은 영향을 미칩니다.) | |
| 어휘가 원하는 크기에 도달할 때까지 이 과정을 반복합니다. | |
| 유니그램 알고리즘은 항상 기본 문자를 포함해 어떤 단어라도 토큰화할 수 있습니다. | |
| 유니그램이 병합 규칙에 기반하지 않기 떄문에 (BPE나 워드피스와는 대조적으로), 해당 알고리즘은 훈련 이후에 새로운 텍스트를 토큰화하는데 여러 가지 방법이 있습니다.`,Qt,Js,se="예를 들어, 훈련된 유니그램 토큰화가 다음과 같은 어휘를 가진다면:",Wt,vs,Xt,ws,te="<code>"hugs"</code>는 두 가지로 토큰화할 수 있습니다. <code>["hug", "s"]</code>와 <code>["h", "ug", "s"]</code> 또는 <code>["h", "u", "g", "s"]</code>.",Kt,bs,ae=`그렇다면 어떤 토큰화 방법을 선택해야 할까요? | |
| 유니그램은 어휘를 저장하는 것 외에도 훈련 말뭉치에 각 토큰의 확률을 저장하여 훈련 후 가능한 각 토큰화의 확률을 계산할 수 있도록 합니다. | |
| 이 알고리즘은 단순히 실제로 가장 가능성이 높은 토큰화를 선택하지만, 확률에 따라 가능한 토큰화를 샘플링할 수 있는 가능성도 제공합니다. | |
| 이러한 확률은 토크나이저가 학습한 손실에 의해 정의됩니다.`,Rt,g,Ma,Yt,pe='<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mn>1</mn></msub><mo separator="true">,</mo><mo>…</mo><mo separator="true">,</mo><msub><mi>x</mi><mi>N</mi></msub></mrow><annotation encoding="application/x-tex">x_{1}, \\dots, x_{N}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="minner">…</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.10903em;">N</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>',Ft,Ot,oe='<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>i</mi></msub></mrow><annotation encoding="application/x-tex">x_{i}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.5806em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">i</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>',sa,ta,ie='<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mo stretchy="false">(</mo><msub><mi>x</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">S(x_{i})</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mopen">(</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">i</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span>',aa,ea,ue=`<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi mathvariant="script">L</mi><mo>=</mo><mo>−</mo><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mi>log</mi><mo></mo><mrow><mo fence="true">(</mo><munder><mo>∑</mo><mrow><mi>x</mi><mo>∈</mo><mi>S</mi><mo stretchy="false">(</mo><msub><mi>x</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></munder><mi>p</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo fence="true">)</mo></mrow></mrow><annotation encoding="application/x-tex">\\mathcal{L} = -\\sum_{i=1}^{N} \\log \\left ( \\sum_{x \\in S(x_{i})} p(x) \\right )</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6833em;"></span><span class="mord mathcal">L</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:3.6em;vertical-align:-1.55em;"></span><span class="mord">−</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8283em;"><span style="top:-1.8723em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">i</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top:-3.05em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.10903em;">N</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.2777em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop">lo<span style="margin-right:0.01389em;">g</span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="minner"><span class="mopen"><span class="delimsizing mult"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.05em;"><span style="top:-4.05em;"><span class="pstrut" style="height:5.6em;"></span><span style="width:0.875em;height:3.600em;"><svg xmlns="http://www.w3.org/2000/svg" width='0.875em' height='3.600em' viewBox='0 0 875 3600'><path d='M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 | |
| c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, | |
| -36,557 l0,84c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, | |
| 949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 | |
| c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, | |
| -544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 | |
| l0,-92c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, | |
| -210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z'/></svg></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.55em;"><span></span></span></span></span></span></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.05em;"><span style="top:-1.809em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">x</span><span class="mrel mtight">∈</span><span class="mord mathnormal mtight" style="margin-right:0.05764em;">S</span><span class="mopen mtight">(</span><span class="mord mtight"><span class="mord mathnormal mtight">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3281em;"><span style="top:-2.357em;margin-left:0em;margin-right:0.0714em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">i</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.143em;"><span></span></span></span></span></span></span><span class="mclose mtight">)</span></span></span></span><span style="top:-3.05em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.516em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal">p</span><span class="mopen">(</span><span class="mord mathnormal">x</span><span class="mclose">)</span><span class="mclose"><span class="delimsizing mult"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.05em;"><span style="top:-4.05em;"><span class="pstrut" style="height:5.6em;"></span><span style="width:0.875em;height:3.600em;"><svg xmlns="http://www.w3.org/2000/svg" width='0.875em' height='3.600em' viewBox='0 0 875 3600'><path d='M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, | |
| 63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 | |
| c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,9 | |
| c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 | |
| c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 | |
| c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 | |
| c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 | |
| l0,-144c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, | |
| -470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z'/></svg></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.55em;"><span></span></span></span></span></span></span></span></span></span></span></span>`,na,Ls,la,$s,pa,Is,ee=`지금까지 다룬 토큰화 알고리즘은 동일한 문제를 가집니다: 입력 텍스트는 공백을 사용하여 단어를 구분한다고 가정합니다. | |
| 하지만, 모든 언어에서 단어를 구분하기 위해 공백을 사용하지 않습니다. | |
| 한가지 가능한 해결방안은 특정 언어에 특화된 사전 토크나이저를 사용하는 것입니다. 예를 들어 <a href="model_doc/xlm">XLM</a>은 특정 중국어, 일본어, 태국어 사전 토크나이저를 사용합니다. | |
| 이 문제를 일반적인 방법으로 해결하기 위해, <a href="https://arxiv.org/pdf/1808.06226.pdf" rel="nofollow">SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing (Kudo et al., 2018)</a>는 입력을 스트림으로 처리해 공백를 하나의 문자로 사용합니다. | |
| 이후에 BPE 또는 유니그램 알고리즘을 사용해 적절한 어휘를 구성합니다.`,oa,xs,ne=`<code>XLNetTokenizer</code>는 센텐스피스를 사용하기 때문에, 위에서 다룬 예시에서 어휘에 <code>"▁"</code>가 포함되어있습니다. | |
| 모든 토큰을 합친 후 <code>"▁"</code>을 공백으로 대체하면 되기 때문에 센텐스피스로 토큰화된 결과는 디코딩하기 수월합니다.`,ia,ks,le=`transformers에서 제공하는 센텐스피스 토크나이저를 사용하는 모든 모델은 유니그램과 함께 사용됩니다. | |
| <a href="model_doc/albert">ALBERT</a>, <a href="model_doc/xlnet">XLNet</a>, <a href="model_doc/marian">Marian</a>, <a href="model_doc/t5">T5</a> 모델이 센텐스피스 토크나이저를 사용합니다.`,ua,Us,ma,As,ra;return j=new f({props:{title:"토크나이저 요약",local:"summary-of-the-tokenizers",headingTag:"h1"}}),T=new ye({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Mixed",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ko/tokenizer_summary.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ko/pytorch/tokenizer_summary.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ko/tensorflow/tokenizer_summary.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ko/tokenizer_summary.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ko/pytorch/tokenizer_summary.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ko/tensorflow/tokenizer_summary.ipynb"}]}}),v=new ya({props:{id:"VFp38yj8h3A"}}),$=new f({props:{title:"개요",local:"introduction",headingTag:"h2"}}),x=new ya({props:{id:"nhJxYji1aho"}}),U=new y({props:{code:"JTVCJTIyRG9uJ3QlMjIlMkMlMjAlMjJ5b3UlMjIlMkMlMjAlMjJsb3ZlJTIyJTJDJTIwJTIyJUYwJTlGJUE0JTk3JTIyJTJDJTIwJTIyVHJhbnNmb3JtZXJzJTNGJTIyJTJDJTIwJTIyV2UlMjIlMkMlMjAlMjJzdXJlJTIyJTJDJTIwJTIyZG8uJTIyJTVE",highlighted:'<span class="hljs-selector-attr">[<span class="hljs-string">"Don't"</span>, <span class="hljs-string">"you"</span>, <span class="hljs-string">"love"</span>, <span class="hljs-string">"🤗"</span>, <span class="hljs-string">"Transformers?"</span>, <span class="hljs-string">"We"</span>, <span class="hljs-string">"sure"</span>, <span class="hljs-string">"do."</span>]</span>',wrap:!1}}),P=new y({props:{code:"JTVCJTIyRG9uJTIyJTJDJTIwJTIyJyUyMiUyQyUyMCUyMnQlMjIlMkMlMjAlMjJ5b3UlMjIlMkMlMjAlMjJsb3ZlJTIyJTJDJTIwJTIyJUYwJTlGJUE0JTk3JTIyJTJDJTIwJTIyVHJhbnNmb3JtZXJzJTIyJTJDJTIwJTIyJTNGJTIyJTJDJTIwJTIyV2UlMjIlMkMlMjAlMjJzdXJlJTIyJTJDJTIwJTIyZG8lMjIlMkMlMjAlMjIuJTIyJTVE",highlighted:'<span class="hljs-selector-attr">[<span class="hljs-string">"Don"</span>, <span class="hljs-string">"'"</span>, <span class="hljs-string">"t"</span>, <span class="hljs-string">"you"</span>, <span class="hljs-string">"love"</span>, <span class="hljs-string">"🤗"</span>, <span class="hljs-string">"Transformers"</span>, <span class="hljs-string">"?"</span>, <span class="hljs-string">"We"</span>, <span class="hljs-string">"sure"</span>, <span class="hljs-string">"do"</span>, <span class="hljs-string">"."</span>]</span>',wrap:!1}}),H=new y({props:{code:"JTVCJTIyRG8lMjIlMkMlMjAlMjJuJ3QlMjIlMkMlMjAlMjJ5b3UlMjIlMkMlMjAlMjJsb3ZlJTIyJTJDJTIwJTIyJUYwJTlGJUE0JTk3JTIyJTJDJTIwJTIyVHJhbnNmb3JtZXJzJTIyJTJDJTIwJTIyJTNGJTIyJTJDJTIwJTIyV2UlMjIlMkMlMjAlMjJzdXJlJTIyJTJDJTIwJTIyZG8lMjIlMkMlMjAlMjIuJTIyJTVE",highlighted:'<span class="hljs-selector-attr">[<span class="hljs-string">"Do"</span>, <span class="hljs-string">"n't"</span>, <span class="hljs-string">"you"</span>, <span class="hljs-string">"love"</span>, <span class="hljs-string">"🤗"</span>, <span class="hljs-string">"Transformers"</span>, <span class="hljs-string">"?"</span>, <span class="hljs-string">"We"</span>, <span class="hljs-string">"sure"</span>, <span class="hljs-string">"do"</span>, <span class="hljs-string">"."</span>]</span>',wrap:!1}}),B=new ya({props:{id:"ssLq_EK2jLE"}}),Z=new f({props:{title:"서브워드 토큰화",local:"subword-tokenization",headingTag:"h2"}}),G=new ya({props:{id:"zHvTiHr506c"}}),W=new y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRUb2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBCZXJ0VG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJnb29nbGUtYmVydCUyRmJlcnQtYmFzZS11bmNhc2VkJTIyKSUwQXRva2VuaXplci50b2tlbml6ZSglMjJJJTIwaGF2ZSUyMGElMjBuZXclMjBHUFUhJTIyKQ==",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertTokenizer | |
| <span class="hljs-meta">>>> </span>tokenizer = BertTokenizer.from_pretrained(<span class="hljs-string">"google-bert/bert-base-uncased"</span>) | |
| <span class="hljs-meta">>>> </span>tokenizer.tokenize(<span class="hljs-string">"I have a new GPU!"</span>) | |
| [<span class="hljs-string">"i"</span>, <span class="hljs-string">"have"</span>, <span class="hljs-string">"a"</span>, <span class="hljs-string">"new"</span>, <span class="hljs-string">"gp"</span>, <span class="hljs-string">"##u"</span>, <span class="hljs-string">"!"</span>]`,wrap:!1}}),R=new y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFhMTmV0VG9rZW5pemVyJTBBJTBBdG9rZW5pemVyJTIwJTNEJTIwWExOZXRUb2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMnhsbmV0JTJGeGxuZXQtYmFzZS1jYXNlZCUyMiklMEF0b2tlbml6ZXIudG9rZW5pemUoJTIyRG9uJ3QlMjB5b3UlMjBsb3ZlJTIwJUYwJTlGJUE0JTk3JTIwVHJhbnNmb3JtZXJzJTNGJTIwV2UlMjBzdXJlJTIwZG8uJTIyKQ==",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> XLNetTokenizer | |
| <span class="hljs-meta">>>> </span>tokenizer = XLNetTokenizer.from_pretrained(<span class="hljs-string">"xlnet/xlnet-base-cased"</span>) | |
| <span class="hljs-meta">>>> </span>tokenizer.tokenize(<span class="hljs-string">"Don't you love 🤗 Transformers? We sure do."</span>) | |
| [<span class="hljs-string">"▁Don"</span>, <span class="hljs-string">"'"</span>, <span class="hljs-string">"t"</span>, <span class="hljs-string">"▁you"</span>, <span class="hljs-string">"▁love"</span>, <span class="hljs-string">"▁"</span>, <span class="hljs-string">"🤗"</span>, <span class="hljs-string">"▁"</span>, <span class="hljs-string">"Transform"</span>, <span class="hljs-string">"ers"</span>, <span class="hljs-string">"?"</span>, <span class="hljs-string">"▁We"</span>, <span class="hljs-string">"▁sure"</span>, <span class="hljs-string">"▁do"</span>, <span class="hljs-string">"."</span>]`,wrap:!1}}),O=new f({props:{title:"바이트 페어 인코딩 (Byte-Pair Encoding, BPE)",local:"bytepair-encoding-bpe",headingTag:"h3"}}),es=new y({props:{code:"KCUyMmh1ZyUyMiUyQyUyMDEwKSUyQyUyMCglMjJwdWclMjIlMkMlMjA1KSUyQyUyMCglMjJwdW4lMjIlMkMlMjAxMiklMkMlMjAoJTIyYnVuJTIyJTJDJTIwNCklMkMlMjAoJTIyaHVncyUyMiUyQyUyMDUp",highlighted:'(<span class="hljs-string">"hug"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">10</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">"pug"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">5</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">"pun"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">12</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">"bun"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">4</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">"hugs"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">5</span>)',wrap:!1}}),ls=new y({props:{code:"KCUyMmglMjIlMjAlMjJ1JTIyJTIwJTIyZyUyMiUyQyUyMDEwKSUyQyUyMCglMjJwJTIyJTIwJTIydSUyMiUyMCUyMmclMjIlMkMlMjA1KSUyQyUyMCglMjJwJTIyJTIwJTIydSUyMiUyMCUyMm4lMjIlMkMlMjAxMiklMkMlMjAoJTIyYiUyMiUyMCUyMnUlMjIlMjAlMjJuJTIyJTJDJTIwNCklMkMlMjAoJTIyaCUyMiUyMCUyMnUlMjIlMjAlMjJnJTIyJTIwJTIycyUyMiUyQyUyMDUp",highlighted:'(<span class="hljs-string">"h"</span> <span class="hljs-string">"u"</span> <span class="hljs-string">"g"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">10</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">"p"</span> <span class="hljs-string">"u"</span> <span class="hljs-string">"g"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">5</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">"p"</span> <span class="hljs-string">"u"</span> <span class="hljs-string">"n"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">12</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">"b"</span> <span class="hljs-string">"u"</span> <span class="hljs-string">"n"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">4</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">"h"</span> <span class="hljs-string">"u"</span> <span class="hljs-string">"g"</span> <span class="hljs-string">"s"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">5</span>)',wrap:!1}}),is=new y({props:{code:"KCUyMmglMjIlMjAlMjJ1ZyUyMiUyQyUyMDEwKSUyQyUyMCglMjJwJTIyJTIwJTIydWclMjIlMkMlMjA1KSUyQyUyMCglMjJwJTIyJTIwJTIydSUyMiUyMCUyMm4lMjIlMkMlMjAxMiklMkMlMjAoJTIyYiUyMiUyMCUyMnUlMjIlMjAlMjJuJTIyJTJDJTIwNCklMkMlMjAoJTIyaCUyMiUyMCUyMnVnJTIyJTIwJTIycyUyMiUyQyUyMDUp",highlighted:'(<span class="hljs-string">"h"</span> <span class="hljs-string">"ug"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">10</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">"p"</span> <span class="hljs-string">"ug"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">5</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">"p"</span> <span class="hljs-string">"u"</span> <span class="hljs-string">"n"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">12</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">"b"</span> <span class="hljs-string">"u"</span> <span class="hljs-string">"n"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">4</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">"h"</span> <span class="hljs-string">"ug"</span> <span class="hljs-string">"s"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">5</span>)',wrap:!1}}),rs=new y({props:{code:"KCUyMmh1ZyUyMiUyQyUyMDEwKSUyQyUyMCglMjJwJTIyJTIwJTIydWclMjIlMkMlMjA1KSUyQyUyMCglMjJwJTIyJTIwJTIydW4lMjIlMkMlMjAxMiklMkMlMjAoJTIyYiUyMiUyMCUyMnVuJTIyJTJDJTIwNCklMkMlMjAoJTIyaHVnJTIyJTIwJTIycyUyMiUyQyUyMDUp",highlighted:'(<span class="hljs-string">"hug"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">10</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">"p"</span> <span class="hljs-string">"ug"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">5</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">"p"</span> <span class="hljs-string">"un"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">12</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">"b"</span> <span class="hljs-string">"un"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">4</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">"hug"</span> <span class="hljs-string">"s"</span><span class="hljs-punctuation">,</span> <span class="hljs-number">5</span>)',wrap:!1}}),qs=new f({props:{title:"바이트 수준 BPE (Byte-level BPE)",local:"bytelevel-bpe",headingTag:"h4"}}),ys=new f({props:{title:"워드피스 (WordPiece)",local:"wordpiece",headingTag:"h3"}}),fs=new f({props:{title:"유니그램 (Unigram)",local:"unigram",headingTag:"h3"}}),vs=new y({props:{code:"JTVCJTIyYiUyMiUyQyUyMCUyMmclMjIlMkMlMjAlMjJoJTIyJTJDJTIwJTIybiUyMiUyQyUyMCUyMnAlMjIlMkMlMjAlMjJzJTIyJTJDJTIwJTIydSUyMiUyQyUyMCUyMnVnJTIyJTJDJTIwJTIydW4lMjIlMkMlMjAlMjJodWclMjIlNUQlMkM=",highlighted:'<span class="hljs-selector-attr">[<span class="hljs-string">"b"</span>, <span class="hljs-string">"g"</span>, <span class="hljs-string">"h"</span>, <span class="hljs-string">"n"</span>, <span class="hljs-string">"p"</span>, <span class="hljs-string">"s"</span>, <span class="hljs-string">"u"</span>, <span class="hljs-string">"ug"</span>, <span class="hljs-string">"un"</span>, <span class="hljs-string">"hug"</span>]</span>,',wrap:!1}}),$s=new f({props:{title:"센텐스피스 (SentencePiece)",local:"sentencepiece",headingTag:"h3"}}),Us=new Me({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/ko/tokenizer_summary.md"}}),{c(){M=p("meta"),Ds=n(),Es=p("p"),Ss=n(),u(j.$$.fragment),Zs=n(),u(T.$$.fragment),Gs=n(),J=p("p"),J.textContent=fa,Vs=n(),u(v.$$.fragment),Ns=n(),w=p("p"),w.innerHTML=ja,Qs=n(),b=p("p"),b.innerHTML=Ta,Ws=n(),u($.$$.fragment),Xs=n(),I=p("p"),I.innerHTML=Ja,Ks=n(),u(x.$$.fragment),Rs=n(),k=p("p"),k.textContent=va,Ys=n(),u(U.$$.fragment),Fs=n(),_=p("p"),_.innerHTML=wa,Os=n(),C=p("p"),C.textContent=ba,st=n(),u(P.$$.fragment),tt=n(),z=p("p"),z.innerHTML=$a,at=n(),L=p("p"),L.innerHTML=Ia,et=n(),u(H.$$.fragment),nt=n(),E=p("p"),E.innerHTML=xa,lt=n(),A=p("p"),A.textContent=ka,pt=n(),u(B.$$.fragment),ot=n(),D=p("p"),D.textContent=Ua,it=n(),S=p("p"),S.innerHTML=_a,ut=n(),u(Z.$$.fragment),mt=n(),u(G.$$.fragment),rt=n(),V=p("p"),V.innerHTML=Ca,ct=n(),N=p("p"),N.textContent=Pa,ht=n(),Q=p("p"),Q.innerHTML=za,qt=n(),u(W.$$.fragment),gt=n(),X=p("p"),X.innerHTML=La,yt=n(),K=p("p"),K.innerHTML=Ha,Mt=n(),u(R.$$.fragment),dt=n(),Y=p("p"),Y.innerHTML=Ea,ft=n(),F=p("p"),F.textContent=Aa,jt=n(),Cs=p("a"),Tt=n(),u(O.$$.fragment),Jt=n(),ss=p("p"),ss.innerHTML=Ba,vt=n(),ts=p("p"),ts.textContent=Da,wt=n(),as=p("p"),as.textContent=Sa,bt=n(),u(es.$$.fragment),$t=n(),ns=p("p"),ns.innerHTML=Za,It=n(),u(ls.$$.fragment),xt=n(),ps=p("p"),ps.innerHTML=Ga,kt=n(),os=p("p"),os.innerHTML=Va,Ut=n(),u(is.$$.fragment),_t=n(),us=p("p"),us.innerHTML=Na,Ct=n(),ms=p("p"),ms.innerHTML=Qa,Pt=n(),u(rs.$$.fragment),zt=n(),cs=p("p"),cs.innerHTML=Wa,Lt=n(),hs=p("p"),hs.innerHTML=Xa,Ht=n(),u(qs.$$.fragment),Et=n(),gs=p("p"),gs.innerHTML=Ka,At=n(),Ps=p("a"),Bt=n(),u(ys.$$.fragment),Dt=n(),Ms=p("p"),Ms.innerHTML=Ra,St=n(),ds=p("p"),ds.innerHTML=Ya,Zt=n(),zs=p("a"),Gt=n(),u(fs.$$.fragment),Vt=n(),js=p("p"),js.innerHTML=Fa,Nt=n(),Ts=p("p"),Ts.textContent=Oa,Qt=n(),Js=p("p"),Js.textContent=se,Wt=n(),u(vs.$$.fragment),Xt=n(),ws=p("p"),ws.innerHTML=te,Kt=n(),bs=p("p"),bs.textContent=ae,Rt=n(),g=p("p"),Ma=ca("단어로 구성된 훈련 데이터를"),Yt=new ha(!1),Ft=ca("라 하고, 단어"),Ot=new ha(!1),sa=ca("에 대한 가능한 모든 토큰화 결과를"),ta=new ha(!1),aa=ca(`라 한다면, 전체 손실은 다음과 같이 정의됩니다: | |
| `),ea=new ha(!1),na=n(),Ls=p("a"),la=n(),u($s.$$.fragment),pa=n(),Is=p("p"),Is.innerHTML=ee,oa=n(),xs=p("p"),xs.innerHTML=ne,ia=n(),ks=p("p"),ks.innerHTML=le,ua=n(),u(Us.$$.fragment),ma=n(),As=p("p"),this.h()},l(s){const t=ge("svelte-u9bgzb",document.head);M=o(t,"META",{name:!0,content:!0}),t.forEach(a),Ds=l(s),Es=o(s,"P",{}),_s(Es).forEach(a),Ss=l(s),m(j.$$.fragment,s),Zs=l(s),m(T.$$.fragment,s),Gs=l(s),J=o(s,"P",{"data-svelte-h":!0}),i(J)!=="svelte-1fo9sjr"&&(J.textContent=fa),Vs=l(s),m(v.$$.fragment,s),Ns=l(s),w=o(s,"P",{"data-svelte-h":!0}),i(w)!=="svelte-1mqp48h"&&(w.innerHTML=ja),Qs=l(s),b=o(s,"P",{"data-svelte-h":!0}),i(b)!=="svelte-961y23"&&(b.innerHTML=Ta),Ws=l(s),m($.$$.fragment,s),Xs=l(s),I=o(s,"P",{"data-svelte-h":!0}),i(I)!=="svelte-an03yh"&&(I.innerHTML=Ja),Ks=l(s),m(x.$$.fragment,s),Rs=l(s),k=o(s,"P",{"data-svelte-h":!0}),i(k)!=="svelte-o1hwux"&&(k.textContent=va),Ys=l(s),m(U.$$.fragment,s),Fs=l(s),_=o(s,"P",{"data-svelte-h":!0}),i(_)!=="svelte-2kzq1s"&&(_.innerHTML=wa),Os=l(s),C=o(s,"P",{"data-svelte-h":!0}),i(C)!=="svelte-6opf7k"&&(C.textContent=ba),st=l(s),m(P.$$.fragment,s),tt=l(s),z=o(s,"P",{"data-svelte-h":!0}),i(z)!=="svelte-1sap30f"&&(z.innerHTML=$a),at=l(s),L=o(s,"P",{"data-svelte-h":!0}),i(L)!=="svelte-zd7190"&&(L.innerHTML=Ia),et=l(s),m(H.$$.fragment,s),nt=l(s),E=o(s,"P",{"data-svelte-h":!0}),i(E)!=="svelte-rehtx4"&&(E.innerHTML=xa),lt=l(s),A=o(s,"P",{"data-svelte-h":!0}),i(A)!=="svelte-cfqxnn"&&(A.textContent=ka),pt=l(s),m(B.$$.fragment,s),ot=l(s),D=o(s,"P",{"data-svelte-h":!0}),i(D)!=="svelte-he0m0a"&&(D.textContent=Ua),it=l(s),S=o(s,"P",{"data-svelte-h":!0}),i(S)!=="svelte-p3ko92"&&(S.innerHTML=_a),ut=l(s),m(Z.$$.fragment,s),mt=l(s),m(G.$$.fragment,s),rt=l(s),V=o(s,"P",{"data-svelte-h":!0}),i(V)!=="svelte-eqoflm"&&(V.innerHTML=Ca),ct=l(s),N=o(s,"P",{"data-svelte-h":!0}),i(N)!=="svelte-1g0725r"&&(N.textContent=Pa),ht=l(s),Q=o(s,"P",{"data-svelte-h":!0}),i(Q)!=="svelte-607xlm"&&(Q.innerHTML=za),qt=l(s),m(W.$$.fragment,s),gt=l(s),X=o(s,"P",{"data-svelte-h":!0}),i(X)!=="svelte-1wfo4hr"&&(X.innerHTML=La),yt=l(s),K=o(s,"P",{"data-svelte-h":!0}),i(K)!=="svelte-adc7ly"&&(K.innerHTML=Ha),Mt=l(s),m(R.$$.fragment,s),dt=l(s),Y=o(s,"P",{"data-svelte-h":!0}),i(Y)!=="svelte-gwfu4q"&&(Y.innerHTML=Ea),ft=l(s),F=o(s,"P",{"data-svelte-h":!0}),i(F)!=="svelte-n60qd6"&&(F.textContent=Aa),jt=l(s),Cs=o(s,"A",{id:!0}),_s(Cs).forEach(a),Tt=l(s),m(O.$$.fragment,s),Jt=l(s),ss=o(s,"P",{"data-svelte-h":!0}),i(ss)!=="svelte-1nqas44"&&(ss.innerHTML=Ba),vt=l(s),ts=o(s,"P",{"data-svelte-h":!0}),i(ts)!=="svelte-zcm55r"&&(ts.textContent=Da),wt=l(s),as=o(s,"P",{"data-svelte-h":!0}),i(as)!=="svelte-mhdz18"&&(as.textContent=Sa),bt=l(s),m(es.$$.fragment,s),$t=l(s),ns=o(s,"P",{"data-svelte-h":!0}),i(ns)!=="svelte-183fq31"&&(ns.innerHTML=Za),It=l(s),m(ls.$$.fragment,s),xt=l(s),ps=o(s,"P",{"data-svelte-h":!0}),i(ps)!=="svelte-17aot6a"&&(ps.innerHTML=Ga),kt=l(s),os=o(s,"P",{"data-svelte-h":!0}),i(os)!=="svelte-f4q0eb"&&(os.innerHTML=Va),Ut=l(s),m(is.$$.fragment,s),_t=l(s),us=o(s,"P",{"data-svelte-h":!0}),i(us)!=="svelte-1f11bd3"&&(us.innerHTML=Na),Ct=l(s),ms=o(s,"P",{"data-svelte-h":!0}),i(ms)!=="svelte-1q78cdr"&&(ms.innerHTML=Qa),Pt=l(s),m(rs.$$.fragment,s),zt=l(s),cs=o(s,"P",{"data-svelte-h":!0}),i(cs)!=="svelte-gyy3nc"&&(cs.innerHTML=Wa),Lt=l(s),hs=o(s,"P",{"data-svelte-h":!0}),i(hs)!=="svelte-118ydnk"&&(hs.innerHTML=Xa),Ht=l(s),m(qs.$$.fragment,s),Et=l(s),gs=o(s,"P",{"data-svelte-h":!0}),i(gs)!=="svelte-mk8bp0"&&(gs.innerHTML=Ka),At=l(s),Ps=o(s,"A",{id:!0}),_s(Ps).forEach(a),Bt=l(s),m(ys.$$.fragment,s),Dt=l(s),Ms=o(s,"P",{"data-svelte-h":!0}),i(Ms)!=="svelte-1x7kl2r"&&(Ms.innerHTML=Ra),St=l(s),ds=o(s,"P",{"data-svelte-h":!0}),i(ds)!=="svelte-1tl1y5t"&&(ds.innerHTML=Ya),Zt=l(s),zs=o(s,"A",{id:!0}),_s(zs).forEach(a),Gt=l(s),m(fs.$$.fragment,s),Vt=l(s),js=o(s,"P",{"data-svelte-h":!0}),i(js)!=="svelte-1sx5dpe"&&(js.innerHTML=Fa),Nt=l(s),Ts=o(s,"P",{"data-svelte-h":!0}),i(Ts)!=="svelte-1aat39v"&&(Ts.textContent=Oa),Qt=l(s),Js=o(s,"P",{"data-svelte-h":!0}),i(Js)!=="svelte-1byyh0v"&&(Js.textContent=se),Wt=l(s),m(vs.$$.fragment,s),Xt=l(s),ws=o(s,"P",{"data-svelte-h":!0}),i(ws)!=="svelte-swdoxn"&&(ws.innerHTML=te),Kt=l(s),bs=o(s,"P",{"data-svelte-h":!0}),i(bs)!=="svelte-1cqwprm"&&(bs.textContent=ae),Rt=l(s),g=o(s,"P",{});var d=_s(g);Ma=qa(d,"단어로 구성된 훈련 데이터를"),Yt=ga(d,!1),Ft=qa(d,"라 하고, 단어"),Ot=ga(d,!1),sa=qa(d,"에 대한 가능한 모든 토큰화 결과를"),ta=ga(d,!1),aa=qa(d,`라 한다면, 전체 손실은 다음과 같이 정의됩니다: | |
| `),ea=ga(d,!1),d.forEach(a),na=l(s),Ls=o(s,"A",{id:!0}),_s(Ls).forEach(a),la=l(s),m($s.$$.fragment,s),pa=l(s),Is=o(s,"P",{"data-svelte-h":!0}),i(Is)!=="svelte-11i9w7w"&&(Is.innerHTML=ee),oa=l(s),xs=o(s,"P",{"data-svelte-h":!0}),i(xs)!=="svelte-1xr6cjw"&&(xs.innerHTML=ne),ia=l(s),ks=o(s,"P",{"data-svelte-h":!0}),i(ks)!=="svelte-10xw7jw"&&(ks.innerHTML=le),ua=l(s),m(Us.$$.fragment,s),ma=l(s),As=o(s,"P",{}),_s(As).forEach(a),this.h()},h(){Hs(M,"name","hf:doc:metadata"),Hs(M,"content",fe),Hs(Cs,"id","byte-pair-encoding"),Hs(Ps,"id","wordpiece"),Hs(zs,"id","unigram"),Yt.a=Ft,Ot.a=sa,ta.a=aa,ea.a=null,Hs(Ls,"id","sentencepiece")},m(s,t){Bs(document.head,M),e(s,Ds,t),e(s,Es,t),e(s,Ss,t),r(j,s,t),e(s,Zs,t),r(T,s,t),e(s,Gs,t),e(s,J,t),e(s,Vs,t),r(v,s,t),e(s,Ns,t),e(s,w,t),e(s,Qs,t),e(s,b,t),e(s,Ws,t),r($,s,t),e(s,Xs,t),e(s,I,t),e(s,Ks,t),r(x,s,t),e(s,Rs,t),e(s,k,t),e(s,Ys,t),r(U,s,t),e(s,Fs,t),e(s,_,t),e(s,Os,t),e(s,C,t),e(s,st,t),r(P,s,t),e(s,tt,t),e(s,z,t),e(s,at,t),e(s,L,t),e(s,et,t),r(H,s,t),e(s,nt,t),e(s,E,t),e(s,lt,t),e(s,A,t),e(s,pt,t),r(B,s,t),e(s,ot,t),e(s,D,t),e(s,it,t),e(s,S,t),e(s,ut,t),r(Z,s,t),e(s,mt,t),r(G,s,t),e(s,rt,t),e(s,V,t),e(s,ct,t),e(s,N,t),e(s,ht,t),e(s,Q,t),e(s,qt,t),r(W,s,t),e(s,gt,t),e(s,X,t),e(s,yt,t),e(s,K,t),e(s,Mt,t),r(R,s,t),e(s,dt,t),e(s,Y,t),e(s,ft,t),e(s,F,t),e(s,jt,t),e(s,Cs,t),e(s,Tt,t),r(O,s,t),e(s,Jt,t),e(s,ss,t),e(s,vt,t),e(s,ts,t),e(s,wt,t),e(s,as,t),e(s,bt,t),r(es,s,t),e(s,$t,t),e(s,ns,t),e(s,It,t),r(ls,s,t),e(s,xt,t),e(s,ps,t),e(s,kt,t),e(s,os,t),e(s,Ut,t),r(is,s,t),e(s,_t,t),e(s,us,t),e(s,Ct,t),e(s,ms,t),e(s,Pt,t),r(rs,s,t),e(s,zt,t),e(s,cs,t),e(s,Lt,t),e(s,hs,t),e(s,Ht,t),r(qs,s,t),e(s,Et,t),e(s,gs,t),e(s,At,t),e(s,Ps,t),e(s,Bt,t),r(ys,s,t),e(s,Dt,t),e(s,Ms,t),e(s,St,t),e(s,ds,t),e(s,Zt,t),e(s,zs,t),e(s,Gt,t),r(fs,s,t),e(s,Vt,t),e(s,js,t),e(s,Nt,t),e(s,Ts,t),e(s,Qt,t),e(s,Js,t),e(s,Wt,t),r(vs,s,t),e(s,Xt,t),e(s,ws,t),e(s,Kt,t),e(s,bs,t),e(s,Rt,t),e(s,g,t),Bs(g,Ma),Yt.m(pe,g),Bs(g,Ft),Ot.m(oe,g),Bs(g,sa),ta.m(ie,g),Bs(g,aa),ea.m(ue,g),e(s,na,t),e(s,Ls,t),e(s,la,t),r($s,s,t),e(s,pa,t),e(s,Is,t),e(s,oa,t),e(s,xs,t),e(s,ia,t),e(s,ks,t),e(s,ua,t),r(Us,s,t),e(s,ma,t),e(s,As,t),ra=!0},p:re,i(s){ra||(c(j.$$.fragment,s),c(T.$$.fragment,s),c(v.$$.fragment,s),c($.$$.fragment,s),c(x.$$.fragment,s),c(U.$$.fragment,s),c(P.$$.fragment,s),c(H.$$.fragment,s),c(B.$$.fragment,s),c(Z.$$.fragment,s),c(G.$$.fragment,s),c(W.$$.fragment,s),c(R.$$.fragment,s),c(O.$$.fragment,s),c(es.$$.fragment,s),c(ls.$$.fragment,s),c(is.$$.fragment,s),c(rs.$$.fragment,s),c(qs.$$.fragment,s),c(ys.$$.fragment,s),c(fs.$$.fragment,s),c(vs.$$.fragment,s),c($s.$$.fragment,s),c(Us.$$.fragment,s),ra=!0)},o(s){h(j.$$.fragment,s),h(T.$$.fragment,s),h(v.$$.fragment,s),h($.$$.fragment,s),h(x.$$.fragment,s),h(U.$$.fragment,s),h(P.$$.fragment,s),h(H.$$.fragment,s),h(B.$$.fragment,s),h(Z.$$.fragment,s),h(G.$$.fragment,s),h(W.$$.fragment,s),h(R.$$.fragment,s),h(O.$$.fragment,s),h(es.$$.fragment,s),h(ls.$$.fragment,s),h(is.$$.fragment,s),h(rs.$$.fragment,s),h(qs.$$.fragment,s),h(ys.$$.fragment,s),h(fs.$$.fragment,s),h(vs.$$.fragment,s),h($s.$$.fragment,s),h(Us.$$.fragment,s),ra=!1},d(s){s&&(a(Ds),a(Es),a(Ss),a(Zs),a(Gs),a(J),a(Vs),a(Ns),a(w),a(Qs),a(b),a(Ws),a(Xs),a(I),a(Ks),a(Rs),a(k),a(Ys),a(Fs),a(_),a(Os),a(C),a(st),a(tt),a(z),a(at),a(L),a(et),a(nt),a(E),a(lt),a(A),a(pt),a(ot),a(D),a(it),a(S),a(ut),a(mt),a(rt),a(V),a(ct),a(N),a(ht),a(Q),a(qt),a(gt),a(X),a(yt),a(K),a(Mt),a(dt),a(Y),a(ft),a(F),a(jt),a(Cs),a(Tt),a(Jt),a(ss),a(vt),a(ts),a(wt),a(as),a(bt),a($t),a(ns),a(It),a(xt),a(ps),a(kt),a(os),a(Ut),a(_t),a(us),a(Ct),a(ms),a(Pt),a(zt),a(cs),a(Lt),a(hs),a(Ht),a(Et),a(gs),a(At),a(Ps),a(Bt),a(Dt),a(Ms),a(St),a(ds),a(Zt),a(zs),a(Gt),a(Vt),a(js),a(Nt),a(Ts),a(Qt),a(Js),a(Wt),a(Xt),a(ws),a(Kt),a(bs),a(Rt),a(g),a(na),a(Ls),a(la),a(pa),a(Is),a(oa),a(xs),a(ia),a(ks),a(ua),a(ma),a(As)),a(M),q(j,s),q(T,s),q(v,s),q($,s),q(x,s),q(U,s),q(P,s),q(H,s),q(B,s),q(Z,s),q(G,s),q(W,s),q(R,s),q(O,s),q(es,s),q(ls,s),q(is,s),q(rs,s),q(qs,s),q(ys,s),q(fs,s),q(vs,s),q($s,s),q(Us,s)}}}const fe='{"title":"토크나이저 요약","local":"summary-of-the-tokenizers","sections":[{"title":"개요","local":"introduction","sections":[],"depth":2},{"title":"서브워드 토큰화","local":"subword-tokenization","sections":[{"title":"바이트 페어 인코딩 (Byte-Pair Encoding, BPE)","local":"bytepair-encoding-bpe","sections":[{"title":"바이트 수준 BPE (Byte-level BPE)","local":"bytelevel-bpe","sections":[],"depth":4}],"depth":3},{"title":"워드피스 (WordPiece)","local":"wordpiece","sections":[],"depth":3},{"title":"유니그램 (Unigram)","local":"unigram","sections":[],"depth":3},{"title":"센텐스피스 (SentencePiece)","local":"sentencepiece","sections":[],"depth":3}],"depth":2}],"depth":1}';function je(da){return ce(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ie extends he{constructor(M){super(),qe(this,M,je,de,me,{})}}export{Ie as component}; | |
Xet Storage Details
- Size:
- 55.9 kB
- Xet hash:
- 541dbf5ac3f1465a8317458b99340dc8a5b4afb2f0d99568098a67be70277ceb
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.