import{s as ft,o as gt,n as ue}from"../chunks/scheduler.37c15a92.js";import{S as It,i as kt,g as J,s as t,r as y,A as Ct,h as j,f as n,c as a,j as xt,u as T,x as u,k as oe,y as $t,a as e,v as o,t as c,b as Me,d as r,w as m,p as ce}from"../chunks/index.2bf4358c.js";import{T as me}from"../chunks/Tip.363c041f.js";import{Y as re}from"../chunks/Youtube.1e50a667.js";import{C as U}from"../chunks/CodeBlock.4f5fc1ad.js";import{C as bt}from"../chunks/CourseFloatingBanner.15ba07e6.js";import{F as At}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as fl,E as Qt}from"../chunks/EditOnGithub.8916dc7c.js";function Bt(b){let p,d;return p=new bt({props:{chapter:6,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/th/chapter6/section3_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/th/chapter6/section3_tf.ipynb"}]}}),{c(){y(p.$$.fragment)},l(i){T(p.$$.fragment,i)},m(i,w){o(p,i,w),d=!0},i(i){d||(r(p.$$.fragment,i),d=!0)},o(i){c(p.$$.fragment,i),d=!1},d(i){m(p,i)}}}function Zt(b){let p,d;return p=new bt({props:{chapter:6,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/th/chapter6/section3_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/th/chapter6/section3_pt.ipynb"}]}}),{c(){y(p.$$.fragment)},l(i){T(p.$$.fragment,i)},m(i,w){o(p,i,w),d=!0},i(i){d||(r(p.$$.fragment,i),d=!0)},o(i){c(p.$$.fragment,i),d=!1},d(i){m(p,i)}}}function Nt(b){let p,d="⚠️ ถ้าคุณเปรียบเทียบ tokenizer ทั้งสองแบบ โดยดูจากความเร็วในการตัดคำของประโยคเดียว คุณอาจจะไม่เห็นความแตกต่างมาก และบางที fast tokenizer อาจจะช้ากว่า slow tokenizer ด้วยซ้ำ คุณจะเห็นความแตกต่างที่แท้จริง ก็เมื่อลองรันกับ input ที่มีขนาดใหญ่ระดับหนึ่ง เพราะการทำแบบนี้ จะทำให้การประมวลผลแบบ parallel ถูกเรียกใช้งาน";return{c(){p=J("p"),p.textContent=d},l(i){p=j(i,"P",{"data-svelte-h":!0}),u(p)!=="svelte-f2t0nd"&&(p.textContent=d)},m(i,w){e(i,p,w)},p:ue,d(i){i&&n(p)}}}function Et(b){let p,d=`นิยามของ “คำ” นั้นค่อนข้างยากที่จะกำหนด ตัวอย่างเช่น  “I’ll” (เป็นการเขียนแบบสั้นของ “I will” ) ควรนับเป็นหนึ่งหรือสองคำ ?
คำตอบของคำถามนี้นั้น ขึ้นกับว่า คุณใช้ตัวตัดคำแบบไหน และมีการปรับแต่งข้อความ input ก่อนที่จะทำการตัดคำหรือไม่
ตัวตัดคำบางตัว อาจจะแยกคำด้วย space บางตัวอาจจะแยกคำด้วยเครื่องหมายวรรคตอน (punctuation) ก่อนแล้วจึงแบ่งด้วย space ในกรณีหลังนี้ “I’ll” ก็จะถูกแบ่งเป็นสองคำ`,i,w,I="✏️ <strong>ลองทำดู!</strong> ให้คุณลองสร้างตัวตัดคำจาก checkpoint ของ <code>bert-base-cased</code> and <code>roberta-base</code> แล้วให้ลองตัดคำว่า ”81s”  คุณสังเกตเห็นอะไรบ้าง และ ID ของคำที่ได้คืออะไร";return{c(){p=J("p"),p.textContent=d,i=t(),w=J("p"),w.innerHTML=I},l(h){p=j(h,"P",{"data-svelte-h":!0}),u(p)!=="svelte-1exf7vn"&&(p.textContent=d),i=a(h),w=j(h,"P",{"data-svelte-h":!0}),u(w)!=="svelte-12r6sbi"&&(w.innerHTML=I)},m(h,C){e(h,p,C),e(h,i,C),e(h,w,C)},p:ue,d(h){h&&(n(p),n(i),n(w))}}}function zt(b){let p,d="✏️ <strong>ลองทำดู!</strong> ให้คุณลองคิดข้อความตัวอย่างขึ้นมา แล้วถามตัวเองว่า token ตัวไหนคู่กับ ID ของคำไหน และ คุณจะหา span ของแต่ละคำได้อย่างไร นอกจากนั้น ให้คุณลองสร้างสองประโยคเพื่อเป็น input ให้กับตัวตัดคำของคุณ แล้วดูว่า ID ของประโยคนั้นเหมาะสมหรือไม่";return{c(){p=J("p"),p.innerHTML=d},l(i){p=j(i,"P",{"data-svelte-h":!0}),u(p)!=="svelte-77saqb"&&(p.innerHTML=d)},m(i,w){e(i,p,w)},p:ue,d(i){i&&n(p)}}}function St(b){let p,d;return p=new re({props:{id:"PrX4CjrVnNc"}}),{c(){y(p.$$.fragment)},l(i){T(p.$$.fragment,i)},m(i,w){o(p,i,w),d=!0},i(i){d||(r(p.$$.fragment,i),d=!0)},o(i){c(p.$$.fragment,i),d=!1},d(i){m(p,i)}}}function _t(b){let p,d;return p=new re({props:{id:"0E7ltQB7fM8"}}),{c(){y(p.$$.fragment)},l(i){T(p.$$.fragment,i)},m(i,w){o(p,i,w),d=!0},i(i){d||(r(p.$$.fragment,i),d=!0)},o(i){c(p.$$.fragment,i),d=!1},d(i){m(p,i)}}}function Rt(b){let p,d='อันดับแรก เราจะเอาข้อความ input มาตัดคำก่อน แล้วส่งต่อผลลัพธ์ที่ได้ไปให้กับโมเดล ขั้นตอนนี้จะเหมือนที่เราทำกันใน<a href="/course/chapter2">บทที่ 2</a> โดยเริ่มจากสร้างตัวตัดคำและโมเดลขึ้นมา โดยใช้คลาส <code>TFAutoXxx</code>',i,w,I,h,C="เนื่องจากเราใช้ <code>TFAutoModelForTokenClassification</code> หลังจากรัน เราจะได้ค่า logit (set of logits) สำหรับแต่ละ token ที่อยู่ในข้อความ input",A,x,k,g,$;return w=new U({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBURkF1dG9Nb2RlbEZvclRva2VuQ2xhc3NpZmljYXRpb24lMEElMEFtb2RlbF9jaGVja3BvaW50JTIwJTNEJTIwJTIyZGJtZHolMkZiZXJ0LWxhcmdlLWNhc2VkLWZpbmV0dW5lZC1jb25sbDAzLWVuZ2xpc2glMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChtb2RlbF9jaGVja3BvaW50KSUwQW1vZGVsJTIwJTNEJTIwVEZBdXRvTW9kZWxGb3JUb2tlbkNsYXNzaWZpY2F0aW9uLmZyb21fcHJldHJhaW5lZChtb2RlbF9jaGVja3BvaW50KSUwQSUwQWV4YW1wbGUlMjAlM0QlMjAlMjJNeSUyMG5hbWUlMjBpcyUyMFN5bHZhaW4lMjBhbmQlMjBJJTIwd29yayUyMGF0JTIwSHVnZ2luZyUyMEZhY2UlMjBpbiUyMEJyb29rbHluLiUyMiUwQWlucHV0cyUyMCUzRCUyMHRva2VuaXplcihleGFtcGxlJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJ0ZiUyMiklMEFvdXRwdXRzJTIwJTNEJTIwbW9kZWwoKippbnB1dHMp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, TFAutoModelForTokenClassification

model_checkpoint = <span class="hljs-string">&quot;dbmdz/bert-large-cased-finetuned-conll03-english&quot;</span>
tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)
model = TFAutoModelForTokenClassification.from_pretrained(model_checkpoint)

example = <span class="hljs-string">&quot;My name is Sylvain and I work at Hugging Face in Brooklyn.&quot;</span>
inputs = tokenizer(example, return_tensors=<span class="hljs-string">&quot;tf&quot;</span>)
outputs = model(**inputs)`,wrap:!1}}),x=new U({props:{code:"cHJpbnQoaW5wdXRzJTVCJTIyaW5wdXRfaWRzJTIyJTVELnNoYXBlKSUwQXByaW50KG91dHB1dHMubG9naXRzLnNoYXBlKQ==",highlighted:`<span class="hljs-built_in">print</span>(inputs[<span class="hljs-string">&quot;input_ids&quot;</span>].shape)
<span class="hljs-built_in">print</span>(outputs.logits.shape)`,wrap:!1}}),g=new U({props:{code:"KDElMkMlMjAxOSklMEEoMSUyQyUyMDE5JTJDJTIwOSk=",highlighted:`(<span class="hljs-number">1</span>, <span class="hljs-number">19</span>)
(<span class="hljs-number">1</span>, <span class="hljs-number">19</span>, <span class="hljs-number">9</span>)`,wrap:!1}}),{c(){p=J("p"),p.innerHTML=d,i=t(),y(w.$$.fragment),I=t(),h=J("p"),h.innerHTML=C,A=t(),y(x.$$.fragment),k=t(),y(g.$$.fragment)},l(M){p=j(M,"P",{"data-svelte-h":!0}),u(p)!=="svelte-1h7g267"&&(p.innerHTML=d),i=a(M),T(w.$$.fragment,M),I=a(M),h=j(M,"P",{"data-svelte-h":!0}),u(h)!=="svelte-68y70g"&&(h.innerHTML=C),A=a(M),T(x.$$.fragment,M),k=a(M),T(g.$$.fragment,M)},m(M,f){e(M,p,f),e(M,i,f),o(w,M,f),e(M,I,f),e(M,h,f),e(M,A,f),o(x,M,f),e(M,k,f),o(g,M,f),$=!0},i(M){$||(r(w.$$.fragment,M),r(x.$$.fragment,M),r(g.$$.fragment,M),$=!0)},o(M){c(w.$$.fragment,M),c(x.$$.fragment,M),c(g.$$.fragment,M),$=!1},d(M){M&&(n(p),n(i),n(I),n(h),n(A),n(k)),m(w,M),m(x,M),m(g,M)}}}function vt(b){let p,d='อันดับแรก เราจะเอาข้อความ input มาตัดคำก่อน แล้วส่งต่อผลลัพธ์ที่ได้ไปให้กับโมเดล ขั้นตอนนี้จะเหมือนที่เราทำกันใน<a href="/course/chapter2">บทที่ 2</a> โดยเริ่มจากสร้างตัวตัดคำและโมเดลขึ้นมา โดยใช้คลาส <code>AutoXxx</code>',i,w,I,h,C="เนื่องจากเราใช้ <code>AutoModelForTokenClassification</code> หลังจากรัน เราจะได้ค่า logit (set of logits) สำหรับแต่ละ token ที่อยู่ในข้อความ input",A,x,k,g,$;return w=new U({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBBdXRvTW9kZWxGb3JUb2tlbkNsYXNzaWZpY2F0aW9uJTBBJTBBbW9kZWxfY2hlY2twb2ludCUyMCUzRCUyMCUyMmRibWR6JTJGYmVydC1sYXJnZS1jYXNlZC1maW5ldHVuZWQtY29ubGwwMy1lbmdsaXNoJTIyJTBBdG9rZW5pemVyJTIwJTNEJTIwQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQobW9kZWxfY2hlY2twb2ludCklMEFtb2RlbCUyMCUzRCUyMEF1dG9Nb2RlbEZvclRva2VuQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKG1vZGVsX2NoZWNrcG9pbnQpJTBBJTBBZXhhbXBsZSUyMCUzRCUyMCUyMk15JTIwbmFtZSUyMGlzJTIwU3lsdmFpbiUyMGFuZCUyMEklMjB3b3JrJTIwYXQlMjBIdWdnaW5nJTIwRmFjZSUyMGluJTIwQnJvb2tseW4uJTIyJTBBaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKGV4YW1wbGUlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnB0JTIyKSUwQW91dHB1dHMlMjAlM0QlMjBtb2RlbCgqKmlucHV0cyk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, AutoModelForTokenClassification

model_checkpoint = <span class="hljs-string">&quot;dbmdz/bert-large-cased-finetuned-conll03-english&quot;</span>
tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)
model = AutoModelForTokenClassification.from_pretrained(model_checkpoint)

example = <span class="hljs-string">&quot;My name is Sylvain and I work at Hugging Face in Brooklyn.&quot;</span>
inputs = tokenizer(example, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)
outputs = model(**inputs)`,wrap:!1}}),x=new U({props:{code:"cHJpbnQoaW5wdXRzJTVCJTIyaW5wdXRfaWRzJTIyJTVELnNoYXBlKSUwQXByaW50KG91dHB1dHMubG9naXRzLnNoYXBlKQ==",highlighted:`<span class="hljs-built_in">print</span>(inputs[<span class="hljs-string">&quot;input_ids&quot;</span>].shape)
<span class="hljs-built_in">print</span>(outputs.logits.shape)`,wrap:!1}}),g=new U({props:{code:"dG9yY2guU2l6ZSglNUIxJTJDJTIwMTklNUQpJTBBdG9yY2guU2l6ZSglNUIxJTJDJTIwMTklMkMlMjA5JTVEKQ==",highlighted:`torch.Size([<span class="hljs-number">1</span>, <span class="hljs-number">19</span>])
torch.Size([<span class="hljs-number">1</span>, <span class="hljs-number">19</span>, <span class="hljs-number">9</span>])`,wrap:!1}}),{c(){p=J("p"),p.innerHTML=d,i=t(),y(w.$$.fragment),I=t(),h=J("p"),h.innerHTML=C,A=t(),y(x.$$.fragment),k=t(),y(g.$$.fragment)},l(M){p=j(M,"P",{"data-svelte-h":!0}),u(p)!=="svelte-datyhh"&&(p.innerHTML=d),i=a(M),T(w.$$.fragment,M),I=a(M),h=j(M,"P",{"data-svelte-h":!0}),u(h)!=="svelte-1b3jfne"&&(h.innerHTML=C),A=a(M),T(x.$$.fragment,M),k=a(M),T(g.$$.fragment,M)},m(M,f){e(M,p,f),e(M,i,f),o(w,M,f),e(M,I,f),e(M,h,f),e(M,A,f),o(x,M,f),e(M,k,f),o(g,M,f),$=!0},i(M){$||(r(w.$$.fragment,M),r(x.$$.fragment,M),r(g.$$.fragment,M),$=!0)},o(M){c(w.$$.fragment,M),c(x.$$.fragment,M),c(g.$$.fragment,M),$=!1},d(M){M&&(n(p),n(i),n(I),n(h),n(A),n(k)),m(w,M),m(x,M),m(g,M)}}}function Wt(b){let p,d;return p=new U({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEElMEFwcm9iYWJpbGl0aWVzJTIwJTNEJTIwdGYubWF0aC5zb2Z0bWF4KG91dHB1dHMubG9naXRzJTJDJTIwYXhpcyUzRC0xKSU1QjAlNUQlMEFwcm9iYWJpbGl0aWVzJTIwJTNEJTIwcHJvYmFiaWxpdGllcy5udW1weSgpLnRvbGlzdCgpJTBBcHJlZGljdGlvbnMlMjAlM0QlMjB0Zi5tYXRoLmFyZ21heChvdXRwdXRzLmxvZ2l0cyUyQyUyMGF4aXMlM0QtMSklNUIwJTVEJTBBcHJlZGljdGlvbnMlMjAlM0QlMjBwcmVkaWN0aW9ucy5udW1weSgpLnRvbGlzdCgpJTBBcHJpbnQocHJlZGljdGlvbnMp",highlighted:`<span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf

probabilities = tf.math.softmax(outputs.logits, axis=-<span class="hljs-number">1</span>)[<span class="hljs-number">0</span>]
probabilities = probabilities.numpy().tolist()
predictions = tf.math.argmax(outputs.logits, axis=-<span class="hljs-number">1</span>)[<span class="hljs-number">0</span>]
predictions = predictions.numpy().tolist()
<span class="hljs-built_in">print</span>(predictions)`,wrap:!1}}),{c(){y(p.$$.fragment)},l(i){T(p.$$.fragment,i)},m(i,w){o(p,i,w),d=!0},i(i){d||(r(p.$$.fragment,i),d=!0)},o(i){c(p.$$.fragment,i),d=!1},d(i){m(p,i)}}}function Ht(b){let p,d;return p=new U({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFwcm9iYWJpbGl0aWVzJTIwJTNEJTIwdG9yY2gubm4uZnVuY3Rpb25hbC5zb2Z0bWF4KG91dHB1dHMubG9naXRzJTJDJTIwZGltJTNELTEpJTVCMCU1RC50b2xpc3QoKSUwQXByZWRpY3Rpb25zJTIwJTNEJTIwb3V0cHV0cy5sb2dpdHMuYXJnbWF4KGRpbSUzRC0xKSU1QjAlNUQudG9saXN0KCklMEFwcmludChwcmVkaWN0aW9ucyk=",highlighted:`<span class="hljs-keyword">import</span> torch

probabilities = torch.nn.functional.softmax(outputs.logits, dim=-<span class="hljs-number">1</span>)[<span class="hljs-number">0</span>].tolist()
predictions = outputs.logits.argmax(dim=-<span class="hljs-number">1</span>)[<span class="hljs-number">0</span>].tolist()
<span class="hljs-built_in">print</span>(predictions)`,wrap:!1}}),{c(){y(p.$$.fragment)},l(i){T(p.$$.fragment,i)},m(i,w){o(p,i,w),d=!0},i(i){d||(r(p.$$.fragment,i),d=!0)},o(i){c(p.$$.fragment,i),d=!1},d(i){m(p,i)}}}function Vt(b){let p,d,i,w,I,h,C,A,x,k,g,$,M=`ในบทนี้ เราจะเรียนเกี่ยวกับความสามารถของ tokenizer ต่างๆ ใน 🤗 Transformers library กัน
ในบทก่อนๆ คุณได้ลองใช้ tokenizer เพื่อแยกข้อความให้เป็นคำๆ และเพื่อแปลง ID ของคำให้กลับไปเป็นข้อความแล้ว
จริงๆแล้ว tokenizer นั้นยังมีความสามารถอีกหลายอย่าง โดยเฉพาะ tokenizer จาก 🤗 Tokenizers library`,f,W,de='เพื่อให้คุณเห็นภาพได้อย่างชัดเจน เราจะมาลองคำนวณผลลัพธ์ (reproduce) ของ <code>token-classification</code> (ซึ่งเราจะเรียกสั้นๆว่า <code>ner</code>) และสร้าง pipeline สำหรับ <code>question-answering</code> อย่างที่คุณได้เรียนมาแล้ว<a href="/course/chapter1">บทที่ 1</a>กัน',Il,H,kl,V,we=`เราจะแยก tokenizer เป็นแบบช้า (slow) และแบบเร็ว (fast) ซึ่งแบบช้าหมายถึง tokenizer ที่เขียนด้วย Python และมาจาก 🤗 Transformers library ส่วนแบบเร็วหมายถึง tokenizer ที่เขียนด้วย Rust และมาจาก 🤗 Tokenizers library
ถ้าคุณยังจำตารางจาก<a href="/course/chapter5/3">บทที่ 5</a>ได้ ซึ่งเป็นตารางเปรียบเทียบเวลา ที่ tokenizer แบบเร็วและช้า ใช้ในการตัดคำชุดข้อมูล Drug Review คุณก็จะเห็นว่า ทำไมเราจึงเรียกพวกมันว่า แบบช้าและเร็ว`,Cl,X,Ue='<thead><tr><th align="center">Fast tokenizer</th> <th align="center">Slow tokenizer</th> <th align="center"></th></tr></thead> <tbody><tr><td align="center"><code>batched=True</code></td> <td align="center">10.8s</td> <td align="center">4min41s</td></tr> <tr><td align="center"><code>batched=False</code></td> <td align="center">59.2s</td> <td align="center">5min3s</td></tr></tbody>',$l,S,Al,G,Ql,D,Bl,Y,he="output ที่ได้จากการตัดคำนั้นไม่ใช่ dictionary แต่เป็น Python object ที่เรียกว่า <code>BatchEncoding</code> ซึ่งเป็น subclass ของ dictionary อีกที ทำให้เราสามารถ index ตัว output ได้ <code>BatchEncoding</code> ต่างจาก dictionary ทั่วไปตรงที่ มันมี method เพิ่มเติม ที่ส่วนมากจะถูกใช้โดย fast tokenizer",Zl,L,xe="นอกจาก fast tokenizer จะสามารถประมวลผลแบบ parallel ได้แล้ว ความสามารถหลักของของมันก็คือ มันจะบันทึก span (ตำแหน่งเริ่มและจบ) ของแต่ละ token ไว้ด้วย ข้อมูลเกี่ยวกับ span นี้เราเรียกว่า <em>offset mapping</em>",Nl,F,be="<em>offset mapping</em> สามารถช่วยให้เราโยง “คำ” ไปหา token ของมันได้ (ในที่นี้ “คำ” หมายถึง กลุ่มของตัวอักษรที่ถูกแบ่งด้วย space ซึ่งหนึ่งคำอาจจะถูกแบ่งออกเป็นหลาย token ได้) และนอกจากนั้น ก็ยังช่วยให้เราสามารถโยงตัวอักษร ไปหา token ได้ด้วยเช่นกัน",El,q,fe="มาดูตัวอย่างกัน:",zl,P,Sl,O,ge="จะเห็นได้ว่า ผลลัพธ์ที่ได้จากตัดคำ คือ <code>BatchEncoding</code> อย่างที่เราได้กล่าวไว้ข้างต้น:",_l,K,Rl,ss,Ie=`เนื่องจาก class <code>AutoTokenizer</code> จะเรียกใช้ตัว fast tokenizer เป็นค่าเริ่มต้น (by default) ซึ่งแปลว่า output ที่ได้คือ <code>BatchEncoding</code> และเราก็จะสามารถใช้ method พิเศษของมันได้
การจะเช็คว่า ตัวตัดคำเป็นแบบเร็วหรือช้า ทำได้สองวิธี วิธีแรกคือเช็คโดยการใช้ attribute <code>is_fast</code> ของ <code>tokenizer</code> :`,vl,ls,Wl,ns,Hl,es,ke="อีกวิธีคือเช็ค attribute <code>is_fast</code> ของ <code>encoding</code>:",Vl,ts,Xl,as,Gl,ps,Ce="มาดูกันว่า fast tokenizer ทำอะไรได้บ้าง อย่างแรกคือ เราสามารถเรียกดู token ได้ โดยไม่ต้องแปลงแต่ละ ID กลับไปเป็น token",Dl,is,Yl,Ms,Ll,cs,$e="ในตัวอย่างนี้ token ในตำแหน่งที่ 5 คือ <code>##yl</code> ซึ่งเป็นส่วนหนึ่งของคำว่า “Sylvain”",Fl,rs,Ae="นอกจากนั้น คุณยังสามารถใช้ method <code>word_ids()</code> เพื่อเรียกดูตำแหน่งของคำได้ด้วย",ql,Js,Pl,js,Ol,ys,Qe=`คุณจะเห็นว่า token พิเศษอย่าง <code>[CLS]</code> และ <code>[SEP]</code> จะถูกจับคู่กับค่า <code>None</code> ส่วน token อื่นๆก็จะถูกจับคู่กับคำต้นตอของมัน
ข้อมูลนี้ มีประโยชน์ในการเอาไว้เช็คว่า token ที่เราสนใจนั้น อยู่ในตำแหน่งที่เป็นจุดเริ่มต้นของคำหรือไม่ และเอาไว้เช็คว่า token สองตัว มาจากคำเดียวกันหรือไม่
คุณสามารถเช็คข้อมูลพวกนี้ได้จากการดูที่สัญลักษณ์ <code>##</code> ที่อยู่ข้างหน้า token (ซึ่งแปลว่า token ตัวนี้ ไม่ได้อยู่ตรงจุดเริ่มต้นคำ) แต่วิธีนี้ ใช้ได้แค่กับตัวตัดคำที่มีโครงสร้างแบบโมเดล BERT เท่านั้น อย่างไรก็ตาม วิธีนี้ใช้ได้กับตัวตัดคำทุกประเภทที่เป็นแบบเร็ว`,Kl,Ts,Be=`ในบทหน้า เราจะมาดูกันว่า เราจะใช้ feature นี้เพื่อจับคู่ label กับ token ใน task เช่น entity recognition (NER) and part-of-speech (POS) tagging ได้อย่างไร
นอกจากนั้น คุณยังสามารถใช้ feature นี้ เพื่อทำการปกปิด(mask) token ทุกตัวที่มาจากคำเดียวกัน เวลาใช้ masked language modeling ได้อีกด้วย (การทำแบบนี้เราเรียกว่า <em>whole word masking</em>)`,sn,_,ln,os,Ze="นอกจากนั้นยังมี method คล้ายๆกัน ที่ชื่อ <code>sentence_ids()</code> ที่เอาไว้ใช้เพื่อโยง token ไปหาประโยคต้นตอ ในตัวอย่างของเรา คุณสามารถใช้ <code>token_type_ids</code> ซึ่งเป็นผลลัพธ์จากการรัน tokenizer แทน <code>sentence_ids()</code> ได้ เพราะทั้งสองให้ข้อมูลเดียวกัน",nn,ms,Ne="ความสามารถสุดท้าย คือโยง token ไปหาแต่ละตัวอักษร หรือกลับกัน โดยการใช้ method <code>word_to_chars()</code> หรือ <code>token_to_chars()</code> และ <code>char_to_word()</code> หรือ <code>char_to_token()</code>",en,us,Ee="ตัวอย่างเช่น method <code>word_ids()</code> สามารถบอกให้คุณรู้ว่า <code>##yl</code> เป็นส่วนหนึ่งของคำในตำแหน่งที่ 3 แต่ถ้าคุณอยากรู้ว่า เป็นคำไหนในประโยค คุณสามารถเช็คได้ดังนี้ :",tn,ds,an,ws,pn,Us,ze=`อย่างที่เราได้บอกข้างต้นแล้ว fast tokenizer สามารถทำแบบนี้ได้ เพราะมันเก็บข้อมูลเกี่ยวกับ span ของแต่ละ token เอาไว้ และบันทึกไว้ใน list ของ <em>offsets</em>
เพื่อที่จะอธิบายการใช้งานของ feature นี้ เรามาลองคำนวณผลลัพธ์ของ pipeline <code>token-classification</code> กัน`,Mn,R,cn,hs,rn,xs,Se=`ใน<a href="/course/chapter1">บทที่ 1</a> คุณได้เรียนเกี่ยวกับการสร้างระบบ NER ซึ่งเป้าหมายหลักของระบบนี้ คือการหาส่วนของข้อความที่เป็น entitiy เช่น ชื่อคน ชื่อสถานที่ หรือชื่อองค์กร โดยการใช้ฟังก์ชัน <code>pipeline()</code> จาก 🤗 Transformers
ส่วนใน<a href="/course/chapter2">บทที่ 2</a> คุณได้เรียนรู้ว่า pipeline ประกอบไปด้วย 3 ขั้นตอนสำคัญ เริ่มจาก การตัดคำ จากนั้นผลลัพธ์ก็จะถูกส่งไปให้โมเดล และสุดท้ายคือ การการปรับแต่งผลลัพธ์ (post-processing)
สองขั้นตอนแรกใน pipeline <code>token-classification</code> นั้น จะเหมือนกันกับ pipeline อื่นๆ แต่ขั้นตอน post-processing จะค่อนข้างซับซ้อนกว่า เราจะมาดูรายละเอียดกัน`,Jn,Q,B,hl,bs,jn,fs,_e=`อันดับแรก เราจะใช้ token classification pipeline เพื่อเปรียบเทียบกับ pipeline
ของเรา โมเดลที่ถูกตั้งเป็นค่าเบื้องต้นคือ <a href="https://huggingface.co/dbmdz/bert-large-cased-finetuned-conll03-english" rel="nofollow"><code>dbmdz/bert-large-cased-finetuned-conll03-english</code></a> ซึ่งมันจะคำนวณ NER ของแต่ละ ข้อความ input:`,yn,gs,Tn,Is,on,ks,Re=`คุณจะเห็นว่า โมเดลนี้สามารถบอกได้ว่า token ที่มาจาก คำว่า “Sylvain” นั้นเป็นชื่อคน และ token ที่มาจากคำว่า “Hugging Face” นั้นเป็นชื่อองค์กร และ “Brooklyn” เป็นชื่อสถานที่
เราสามารถใช้ pipeline นี้เพื่อรวมรวม token ที่มี entity ประเภทเดียวกันได้ด้วย`,mn,Cs,un,$s,dn,As,ve=`<code>aggregation_strategy</code> ที่เราเลือก จะเปลี่ยนคะแนนของแต่ละกลุ่ม entity ด้วย
ถ้าเราตั้งค่าให้เป็นแบบ <code>&quot;simple&quot;</code> มันจะคำนวณคะแนน โดยการเฉลี่ยคะแนนของแต่ละ token ที่นับเป็น entity เดียวกัน ตัวอย่างเช่น คะแนนของคำว่า “Sylvain” คือค่าเฉลี่ยของคะแนนจาก token ย่อยซึ่งก็คือ <code>S</code>, <code>##yl</code>, <code>##va</code>, and <code>##in</code>`,wn,Qs,We="วิธีคำนวณคะแนนรวมแบบอื่น :",Un,Bs,He="<li><code>&quot;first&quot;</code> จะใช้คะแนนของ token แรกเท่านั้น เป็นคะแนนรวม (เช่น คะแนนรวมของคำว่า “Sylvain” ก็จะเป็น 0.993828 ซึ่งมาจากคะแนนของ <code>S</code>)</li> <li><code>&quot;max&quot;</code> จะใช้คะแนนของ token ที่มีคะแนนมากที่สุด (เช่น คะแนนรวมของคำว่า “Hugging Face” ก็จะเป็น 0.98879766 ซึ่งมาจากคะแนนของ “Face”)</li> <li><code>&quot;average&quot;</code> จะใช้ค่าเฉลี่ยของแต่ละ token ที่เป็นส่วนของ entity นั้น เป็นคะแนนรวมของ entity (สำหรับคำว่า “Sylvain” คะแนนรวมแบบเฉลี่ยจะไม่ต่างจากคะแนนรวมแบบ <code>&quot;simple&quot;</code> แต่คำว่า “Hugging Face” จำได้คะแนน 0.9819 ซึ่งเป็นค่าเฉลี่ย ของ “Hugging” 0.975 และ “Face” 0.98879)</li>",hn,Zs,Ve="มาดูกันว่า คุณจะสร้างผลลัพธ์แบบนี้ได้อย่างไร โดยไม่ใช้ฟังก์ชัน <code>pipeline()</code>!",xn,Ns,bn,Z,N,xl,Es,Xe=`แต่ละ batch ประกอบไปด้วย 1 ข้อความ ซึ่งมี token 19 ตัว และโมเดลที่เราใช้ สามารถทำนายได้ 9 หมวด (label) ดังนั้นขนาดของ output ที่ได้คือ 1 x 19 x 9
เช่นเดียวกับตอนที่เราใช้ text classification pipeline คือเราจะใช้ฟังก์ชัน softmax เพื่อที่จะแปลงค่า logits ไปเป็นค่าความเป็นไปได้ (probabilities) จากนั้นเราจะคำนวณค่า argmax เพื่อคำนวณคำทำนายสุดท้าย (เราใช้ argmax ของค่า logits ตรงนี้ได้ ก็เพราะการคำนวณ softmax จากคะแนนของแต่ละหมวด ไม่ได้ทำให้ลำดับของหมวดเปลี่ยน)`,fn,E,z,bl,zs,gn,Ss,Ge="attribute <code>model.config.id2label</code> คือตัวที่เก็บข้อมูลเกี่ยวกับ mapping ของ index ไปหา label ที่เราเอาไว้ใช้เพื่อดูว่า ผลลัพธ์นั้นถูกต้องหรือไม่",In,_s,kn,Rs,Cn,vs,De="จาก output ข้างบน คุณจะเห็นว่า เรามีคำทำนายทั้งหมด 9 หมวด (label) โดยที่ label <code>O</code> หมายถึง token ที่ไม่ได้เป็น named entity (<code>O</code> มาจากคำว่า “outside”) และ แต่ละประเภทของ entity จะมีอย่างละสอง label (เรามีทั้งหมด 4 entity: miscellaneous, person, organization, and location)",$n,Ws,Ye=`ถ้า token ถูก label ด้วย <code>B-XXX</code> นั่นแปลว่า token นี้อยู่ข้างหน้าของ entity ประเภท <code>XXX</code> ส่วน label <code>I-XXX</code> หมายถึง token นี้อยู่ข้างใน entity ประเภท <code>XXX</code>
ถ้าดูจากข้อความตัวอย่างที่เราใช้ข้างบน โมเดลของเราก็ควรจะจับคู่ token <code>S</code> กับหมวด <code>B-PER</code> (ซึ่งแปลว่า <code>S</code> เป็นส่วนข้างหน้าของ entity ประเภทชื่อคน) ส่วน token <code>##yl</code>, <code>##va</code> และ <code>##in</code> ก็ควรจะถูกทำนายให้เป็นหมวด <code>I-PER</code> (ซึ่งหมายถึง token ที่อยู่ข้างใน entity ประเภทชื่อคน)`,An,Hs,Le=`คุณอาจจะคิดว่า โมเดลของเราทำนายผิดในตัวอย่างนี้ เพราะว่ามันทำนายทั้งสี่ token ให้เป็น <code>I-PER</code> แต่จริงๆแล้ว ทำนายแบบนี้ก็ไม่ได้ผิดไปซะทั้งหมด
เพราะว่า การทำนายโดยใช้ label <code>B-</code> และ <code>I-</code> ในงาน NER มีสองแบบ คือ <em>IOB1</em> and <em>IOB2</em>`,Qn,Vs,Fe=`IOB1 (สีส้ม) เป็นแบบที่เราใช้ในตัวอย่างข้างบน ส่วน IOB2 (สีม่วง) แตกต่างตรงที่ <code>B-</code> เอาไว้ใช้แบ่ง entity สองตัวที่เป็นประเภทเดียว ให้ออกจากกัน
โมเดลที่เราใช้นั้นถูก fine-tune จากชุดข้อมูลที่มี label แบบ IOB2 ทำให้มันทำนาย <code>S</code> เป็น <code>I-PER</code>`,Bn,v,qe='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter6/IOB_versions.svg" alt="IOB1 vs IOB2 format"/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter6/IOB_versions-dark.svg" alt="IOB1 vs IOB2 format"/>',Zn,Xs,Pe="ตอนนี้เราก็พร้อมที่จะคำนวณผลลัพธ์ ให้ได้แบบเดียวกับ pipeline แรกแล้ว โดยที่เราจะใช้คะแนนและ label ของแต่ละ token ที่ไม่ใช่ <code>O</code>เท่านั้น",Nn,Gs,En,Ds,zn,Ys,Oe=`จะเห็นว่าตอนนี้ เราได้ผลลัพธ์ที่คล้ายกับผลลัพธ์จาก pipeline ก่อนหน้านี้แล้ว ข้อแตกต่างเดียวก็คือ ผลลัพธ์จาก pipeline จะให้ข้อมูลเกี่ยวกับ ตำแหน่งเริ่มและจบในข้อความของแต่ละ entity ด้วย
ขั้นตอนต่อไป เราจะได้เรียกใช้ค่า offset mapping เพื่อตั้งค่าให้โมเดลคำนวณค่า offset เราจะเช็ต <code>return_offsets_mapping=True</code> ในตอนที่เราใช้รันตัวตัดคำ`,Sn,Ls,_n,Fs,Rn,qs,Ke=`แต่ละ tuple ในนี้ จะบันทึกค่า span ของแต่ละ token ไว้ โดยที่พวก token พิเศษ ก็จะมีค่า span เป็น <code>(0, 0)</code>
ก่อนหน้านี้ เราได้เห็นว่า token ในตำแหน่งที่ 5 คือ <code>##yl</code> มีค่า offset เป็น <code>(12, 14)</code>
ถ้าคุณลอง slice ข้อความ input ด้วย index สองค่านี้`,vn,Ps,Wn,Os,st="คุณจะได้ส่วนของข้อความที่เป็น <code>yl</code> โดยที่ <code>##</code> จะถูกละออกจากผลลัพธ์:",Hn,Ks,Vn,sl,lt="เราจะใช้วิธีนี้ เพื่อคำนวณผลลัพธ์ให้ได้ผลลัพธ์เหมือนใน pipeline:",Xn,ll,Gn,nl,Dn,el,nt="ตอนนี้ เราก็ได้ผลลัพธ์แบบเดียวกับผลลัพธ์จาก pipeline แล้ว!",Yn,tl,Ln,al,et=`ข้อมูลเกี่ยวกับ ตำแหน่งเริ่มและตำแหน่งจบของแต่ละ entity ที่เราได้จาก offset อาจจะไม่เป็นประโยชน์มากนัก
แต่ถ้าคุณต้องการจะรวม token ที่อยู่ในกลุ่ม entity เดียวกันเข้าด้วยกัน ข้อมูลจาก offset พวกนี้ จะมีโยชน์มาก และทำให้คุณไม่ต้องเขียนโค้ดเพิ่มเติมด้วย`,Fn,pl,tt=`ตัวอย่างเช่น ถ้าคุณต้องการจะรวม <code>Hu</code>, <code>##gging</code>, และ <code>Face</code> เข้าด้วยกัน คุณอาจจะเขียนกฎขึ้นมาว่า ให้รวม token แรกกับ token ที่สองเข้าด้วยกัน โดยลบ <code>##</code> ออก
แล้วให้รวม token ที่สามโดยใช้ช่องว่างในการเชื่อม เพราะ <code>Face</code> ไม่ได้เริ่มต้นด้วย  <code>##</code> อย่างไรก็ตามวิธีนี้ ใช้ได้แค่กับตัวตัดคำบางประเภทเท่านั้น
สำหรับตัวตัดคำอื่นๆเช่น แบบ SentencePiece หรือ Byte-Pair-Encoding เราก็จะต้องสร้างกฎขึ้นมาใหม่`,qn,il,at=`การที่เราใช้ค่า offset ทำให้เราไม่จำเป็นต้องเขียนโค้ดเกี่ยวกับกฎพวกนี้ขึ้นมาเอง คุณสามารถใช้ตำแหน่งเริ่มของ token แรก และ ตำแหน่งจบของ token สุดท้าย เป็นค่าในการ slice ข้อความ input เพื่อที่จะคำนวณส่วนของข้อความของ entity ที่คุณสนใจ
ตัวอย่างเช่น ถ้าเรามี 3 token <code>Hu</code>, <code>##gging</code>, และ <code>Face</code> ซึ่งอยู่ในกลุ่ม entity เดียวกัน เราก็จะใช้ค่า 33 (ตำแหน่งเริ่มของ <code>Hu</code>) เป็นจุดเริ่มต้น และ 45 (ตำแหน่งจบของ <code>Hu</code>) เป็นจุดจบของ entity นี้`,Pn,Ml,On,cl,Kn,rl,pt="ขั้นตอนต่อไป เราจะมาเขียนโค้ดเพื่อปรับแต่งผลลัพธ์จากโมเดลกัน (post-processing) โดยจะทำไปพร้อมๆกับการรวมกลุ่ม entity ด้วยวิธีต่อไปนี้",se,Jl,it="เริ่มจาก token แรกของ entity ซึ่งเป็นได้ทั้ง <code>B-XXX</code> และ <code>I-XXX</code> จากนั้นให้รวม token ตัวถัดๆไป ที่เป็น <code>I-XXX</code> ทั้งหมดเข้าด้วยกัน จนกว่าจะเห็น <code>O</code> (แปลว่าเรากำลังอ่านถึง token ที่ไม่ใช่ entity ใดๆ ให้เราหยุดการรวม) หรือ <code>B-XXX</code> (ให้เราเริ่มต้นรวม entity ตัวใหม่)",le,jl,ne,yl,Mt="ตอนนี้ เราก็ได้ผลลัพธ์แบบเดียวกันกับ pipeline แล้ว!",ee,Tl,te,ol,ct=`อีกตัวอย่างหนึ่งของงานที่ค่า offset เป็นโยชน์มาก ก็คือ question answering
ในบทถัดไป คุณจะได้เรียนเกี่ยวกับ pipeline แบบเจาะลึกมากขึ้น ซึ่งคุณจะได้รู้จักกับ feature สุดท้ายของ tokenizers ใน 🤗 Transformers library ซึ่งก็คือ การจัดการกับ tokens ที่ถูกตัดออกจากข้อความ input`,ae,ml,pe,gl,ie;I=new At({props:{fw:b[0]}}),C=new fl({props:{title:"ความสามารถพิเศษของตัวตัดคำแบบเร็ว (fast tokenizers)",local:"ความสามารถพเศษของตวตดคำแบบเรว-fast-tokenizers",headingTag:"h1"}});const rt=[Zt,Bt],ul=[];function Jt(s,l){return s[0]==="pt"?0:1}x=Jt(b),k=ul[x]=rt[x](b),H=new re({props:{id:"g8quOxoqhHQ"}}),S=new me({props:{warning:!0,$$slots:{default:[Nt]},$$scope:{ctx:b}}}),G=new fl({props:{title:"Batch encoding",local:"batch-encoding",headingTag:"h2"}}),D=new re({props:{id:"3umI3tm27Vw"}}),P=new U({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIpJTBBZXhhbXBsZSUyMCUzRCUyMCUyMk15JTIwbmFtZSUyMGlzJTIwU3lsdmFpbiUyMGFuZCUyMEklMjB3b3JrJTIwYXQlMjBIdWdnaW5nJTIwRmFjZSUyMGluJTIwQnJvb2tseW4uJTIyJTBBZW5jb2RpbmclMjAlM0QlMjB0b2tlbml6ZXIoZXhhbXBsZSklMEFwcmludCh0eXBlKGVuY29kaW5nKSk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)
example = <span class="hljs-string">&quot;My name is Sylvain and I work at Hugging Face in Brooklyn.&quot;</span>
encoding = tokenizer(example)
<span class="hljs-built_in">print</span>(<span class="hljs-built_in">type</span>(encoding))`,wrap:!1}}),K=new U({props:{code:"JTNDY2xhc3MlMjAndHJhbnNmb3JtZXJzLnRva2VuaXphdGlvbl91dGlsc19iYXNlLkJhdGNoRW5jb2RpbmcnJTNF",highlighted:'&lt;<span class="hljs-keyword">class</span> <span class="hljs-string">&#x27;transformers.tokenization_utils_base.BatchEncoding&#x27;</span>&gt;',wrap:!1}}),ls=new U({props:{code:"dG9rZW5pemVyLmlzX2Zhc3Q=",highlighted:"tokenizer.is_fast",wrap:!1}}),ns=new U({props:{code:"VHJ1ZQ==",highlighted:'<span class="hljs-literal">True</span>',wrap:!1}}),ts=new U({props:{code:"ZW5jb2RpbmcuaXNfZmFzdA==",highlighted:"encoding.is_fast",wrap:!1}}),as=new U({props:{code:"VHJ1ZQ==",highlighted:'<span class="hljs-literal">True</span>',wrap:!1}}),is=new U({props:{code:"ZW5jb2RpbmcudG9rZW5zKCk=",highlighted:"encoding.tokens()",wrap:!1}}),Ms=new U({props:{code:"JTVCJyU1QkNMUyU1RCclMkMlMjAnTXknJTJDJTIwJ25hbWUnJTJDJTIwJ2lzJyUyQyUyMCdTJyUyQyUyMCclMjMlMjN5bCclMkMlMjAnJTIzJTIzdmEnJTJDJTIwJyUyMyUyM2luJyUyQyUyMCdhbmQnJTJDJTIwJ0knJTJDJTIwJ3dvcmsnJTJDJTIwJ2F0JyUyQyUyMCdIdSclMkMlMjAnJTIzJTIzZ2dpbmcnJTJDJTIwJ0ZhY2UnJTJDJTIwJ2luJyUyQyUwQSUyMCdCcm9va2x5biclMkMlMjAnLiclMkMlMjAnJTVCU0VQJTVEJyU1RA==",highlighted:`[<span class="hljs-string">&#x27;[CLS]&#x27;</span>, <span class="hljs-string">&#x27;My&#x27;</span>, <span class="hljs-string">&#x27;name&#x27;</span>, <span class="hljs-string">&#x27;is&#x27;</span>, <span class="hljs-string">&#x27;S&#x27;</span>, <span class="hljs-string">&#x27;##yl&#x27;</span>, <span class="hljs-string">&#x27;##va&#x27;</span>, <span class="hljs-string">&#x27;##in&#x27;</span>, <span class="hljs-string">&#x27;and&#x27;</span>, <span class="hljs-string">&#x27;I&#x27;</span>, <span class="hljs-string">&#x27;work&#x27;</span>, <span class="hljs-string">&#x27;at&#x27;</span>, <span class="hljs-string">&#x27;Hu&#x27;</span>, <span class="hljs-string">&#x27;##gging&#x27;</span>, <span class="hljs-string">&#x27;Face&#x27;</span>, <span class="hljs-string">&#x27;in&#x27;</span>,
 <span class="hljs-string">&#x27;Brooklyn&#x27;</span>, <span class="hljs-string">&#x27;.&#x27;</span>, <span class="hljs-string">&#x27;[SEP]&#x27;</span>]`,wrap:!1}}),Js=new U({props:{code:"ZW5jb2Rpbmcud29yZF9pZHMoKQ==",highlighted:"encoding.word_ids()",wrap:!1}}),js=new U({props:{code:"JTVCTm9uZSUyQyUyMDAlMkMlMjAxJTJDJTIwMiUyQyUyMDMlMkMlMjAzJTJDJTIwMyUyQyUyMDMlMkMlMjA0JTJDJTIwNSUyQyUyMDYlMkMlMjA3JTJDJTIwOCUyQyUyMDglMkMlMjA5JTJDJTIwMTAlMkMlMjAxMSUyQyUyMDEyJTJDJTIwTm9uZSU1RA==",highlighted:'[<span class="hljs-literal">None</span>, <span class="hljs-number">0</span>, <span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">3</span>, <span class="hljs-number">3</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>, <span class="hljs-number">6</span>, <span class="hljs-number">7</span>, <span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">9</span>, <span class="hljs-number">10</span>, <span class="hljs-number">11</span>, <span class="hljs-number">12</span>, <span class="hljs-literal">None</span>]',wrap:!1}}),_=new me({props:{$$slots:{default:[Et]},$$scope:{ctx:b}}}),ds=new U({props:{code:"c3RhcnQlMkMlMjBlbmQlMjAlM0QlMjBlbmNvZGluZy53b3JkX3RvX2NoYXJzKDMpJTBBZXhhbXBsZSU1QnN0YXJ0JTNBZW5kJTVE",highlighted:`start, end = encoding.word_to_chars(<span class="hljs-number">3</span>)
example[start:end]`,wrap:!1}}),ws=new U({props:{code:"U3lsdmFpbg==",highlighted:"Sylvain",wrap:!1}}),R=new me({props:{$$slots:{default:[zt]},$$scope:{ctx:b}}}),hs=new fl({props:{title:"โครงสร้างภายในของ pipeline token-classification",local:"โครงสรางภายในของ-pipeline-token-classification",headingTag:"h2"}});const jt=[_t,St],dl=[];function yt(s,l){return s[0]==="pt"?0:1}Q=yt(b),B=dl[Q]=jt[Q](b),bs=new fl({props:{title:"การคำนวณผลลัพธ์เบื้องต้นด้วยการใช้ pipeline",local:"การคำนวณผลลพธเบองตนดวยการใช-pipeline",headingTag:"h3"}}),gs=new U({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBdG9rZW5fY2xhc3NpZmllciUyMCUzRCUyMHBpcGVsaW5lKCUyMnRva2VuLWNsYXNzaWZpY2F0aW9uJTIyKSUwQXRva2VuX2NsYXNzaWZpZXIoJTIyTXklMjBuYW1lJTIwaXMlMjBTeWx2YWluJTIwYW5kJTIwSSUyMHdvcmslMjBhdCUyMEh1Z2dpbmclMjBGYWNlJTIwaW4lMjBCcm9va2x5bi4lMjIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

token_classifier = pipeline(<span class="hljs-string">&quot;token-classification&quot;</span>)
token_classifier(<span class="hljs-string">&quot;My name is Sylvain and I work at Hugging Face in Brooklyn.&quot;</span>)`,wrap:!1}}),Is=new U({props:{code:"JTVCJTdCJ2VudGl0eSclM0ElMjAnSS1QRVInJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTk5MzgyOCUyQyUyMCdpbmRleCclM0ElMjA0JTJDJTIwJ3dvcmQnJTNBJTIwJ1MnJTJDJTIwJ3N0YXJ0JyUzQSUyMDExJTJDJTIwJ2VuZCclM0ElMjAxMiU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5ODE1NDc2JTJDJTIwJ2luZGV4JyUzQSUyMDUlMkMlMjAnd29yZCclM0ElMjAnJTIzJTIzeWwnJTJDJTIwJ3N0YXJ0JyUzQSUyMDEyJTJDJTIwJ2VuZCclM0ElMjAxNCU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5NTkwNzI1JTJDJTIwJ2luZGV4JyUzQSUyMDYlMkMlMjAnd29yZCclM0ElMjAnJTIzJTIzdmEnJTJDJTIwJ3N0YXJ0JyUzQSUyMDE0JTJDJTIwJ2VuZCclM0ElMjAxNiU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5OTIzMjclMkMlMjAnaW5kZXgnJTNBJTIwNyUyQyUyMCd3b3JkJyUzQSUyMCclMjMlMjNpbiclMkMlMjAnc3RhcnQnJTNBJTIwMTYlMkMlMjAnZW5kJyUzQSUyMDE4JTdEJTJDJTBBJTIwJTdCJ2VudGl0eSclM0ElMjAnSS1PUkcnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTczODkzMzQlMkMlMjAnaW5kZXgnJTNBJTIwMTIlMkMlMjAnd29yZCclM0ElMjAnSHUnJTJDJTIwJ3N0YXJ0JyUzQSUyMDMzJTJDJTIwJ2VuZCclM0ElMjAzNSU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktT1JHJyUyQyUyMCdzY29yZSclM0ElMjAwLjk3NjExNSUyQyUyMCdpbmRleCclM0ElMjAxMyUyQyUyMCd3b3JkJyUzQSUyMCclMjMlMjNnZ2luZyclMkMlMjAnc3RhcnQnJTNBJTIwMzUlMkMlMjAnZW5kJyUzQSUyMDQwJTdEJTJDJTBBJTIwJTdCJ2VudGl0eSclM0ElMjAnSS1PUkcnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTg4Nzk3NjYlMkMlMjAnaW5kZXgnJTNBJTIwMTQlMkMlMjAnd29yZCclM0ElMjAnRmFjZSclMkMlMjAnc3RhcnQnJTNBJTIwNDElMkMlMjAnZW5kJyUzQSUyMDQ1JTdEJTJDJTBBJTIwJTdCJ2VudGl0eSclM0ElMjAnSS1MT0MnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTkzMjEwNTUlMkMlMjAnaW5kZXgnJTNBJTIwMTYlMkMlMjAnd29yZCclM0ElMjAnQnJvb2tseW4nJTJDJTIwJ3N0YXJ0JyUzQSUyMDQ5JTJDJTIwJ2VuZCclM0ElMjA1NyU3RCU1RA==",highlighted:`[{<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-PER&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.9993828</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">4</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;S&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">11</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">12</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-PER&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.99815476</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">5</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;##yl&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">12</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">14</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-PER&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.99590725</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">6</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;##va&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">14</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">16</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-PER&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.9992327</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">7</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;##in&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">16</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">18</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-ORG&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.97389334</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">12</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Hu&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">33</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">35</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-ORG&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.976115</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">13</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;##gging&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">35</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">40</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-ORG&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.98879766</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">14</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Face&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">41</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">45</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-LOC&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.99321055</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">16</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Brooklyn&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">49</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">57</span>}]`,wrap:!1}}),Cs=new U({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBdG9rZW5fY2xhc3NpZmllciUyMCUzRCUyMHBpcGVsaW5lKCUyMnRva2VuLWNsYXNzaWZpY2F0aW9uJTIyJTJDJTIwYWdncmVnYXRpb25fc3RyYXRlZ3klM0QlMjJzaW1wbGUlMjIpJTBBdG9rZW5fY2xhc3NpZmllciglMjJNeSUyMG5hbWUlMjBpcyUyMFN5bHZhaW4lMjBhbmQlMjBJJTIwd29yayUyMGF0JTIwSHVnZ2luZyUyMEZhY2UlMjBpbiUyMEJyb29rbHluLiUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

token_classifier = pipeline(<span class="hljs-string">&quot;token-classification&quot;</span>, aggregation_strategy=<span class="hljs-string">&quot;simple&quot;</span>)
token_classifier(<span class="hljs-string">&quot;My name is Sylvain and I work at Hugging Face in Brooklyn.&quot;</span>)`,wrap:!1}}),$s=new U({props:{code:"JTVCJTdCJ2VudGl0eV9ncm91cCclM0ElMjAnUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5ODE2OTQlMkMlMjAnd29yZCclM0ElMjAnU3lsdmFpbiclMkMlMjAnc3RhcnQnJTNBJTIwMTElMkMlMjAnZW5kJyUzQSUyMDE4JTdEJTJDJTBBJTIwJTdCJ2VudGl0eV9ncm91cCclM0ElMjAnT1JHJyUyQyUyMCdzY29yZSclM0ElMjAwLjk3OTYwMjA0JTJDJTIwJ3dvcmQnJTNBJTIwJ0h1Z2dpbmclMjBGYWNlJyUyQyUyMCdzdGFydCclM0ElMjAzMyUyQyUyMCdlbmQnJTNBJTIwNDUlN0QlMkMlMEElMjAlN0InZW50aXR5X2dyb3VwJyUzQSUyMCdMT0MnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTkzMjEwNTUlMkMlMjAnd29yZCclM0ElMjAnQnJvb2tseW4nJTJDJTIwJ3N0YXJ0JyUzQSUyMDQ5JTJDJTIwJ2VuZCclM0ElMjA1NyU3RCU1RA==",highlighted:`[{<span class="hljs-string">&#x27;entity_group&#x27;</span>: <span class="hljs-string">&#x27;PER&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.9981694</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Sylvain&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">11</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">18</span>},
 {<span class="hljs-string">&#x27;entity_group&#x27;</span>: <span class="hljs-string">&#x27;ORG&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.97960204</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Hugging Face&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">33</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">45</span>},
 {<span class="hljs-string">&#x27;entity_group&#x27;</span>: <span class="hljs-string">&#x27;LOC&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.99321055</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Brooklyn&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">49</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">57</span>}]`,wrap:!1}}),Ns=new fl({props:{title:"จาก input สู่ ผลลัพธ์",local:"จาก-input-ส-ผลลพธ",headingTag:"h3"}});const Tt=[vt,Rt],wl=[];function ot(s,l){return s[0]==="pt"?0:1}Z=ot(b),N=wl[Z]=Tt[Z](b);const mt=[Ht,Wt],Ul=[];function ut(s,l){return s[0]==="pt"?0:1}return E=ut(b),z=Ul[E]=mt[E](b),zs=new U({props:{code:"JTVCMCUyQyUyMDAlMkMlMjAwJTJDJTIwMCUyQyUyMDQlMkMlMjA0JTJDJTIwNCUyQyUyMDQlMkMlMjAwJTJDJTIwMCUyQyUyMDAlMkMlMjAwJTJDJTIwNiUyQyUyMDYlMkMlMjA2JTJDJTIwMCUyQyUyMDglMkMlMjAwJTJDJTIwMCU1RA==",highlighted:'[<span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">4</span>, <span class="hljs-number">4</span>, <span class="hljs-number">4</span>, <span class="hljs-number">4</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">6</span>, <span class="hljs-number">6</span>, <span class="hljs-number">6</span>, <span class="hljs-number">0</span>, <span class="hljs-number">8</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>]',wrap:!1}}),_s=new U({props:{code:"bW9kZWwuY29uZmlnLmlkMmxhYmVs",highlighted:"model.config.id2label",wrap:!1}}),Rs=new U({props:{code:"JTdCMCUzQSUyMCdPJyUyQyUwQSUyMDElM0ElMjAnQi1NSVNDJyUyQyUwQSUyMDIlM0ElMjAnSS1NSVNDJyUyQyUwQSUyMDMlM0ElMjAnQi1QRVInJTJDJTBBJTIwNCUzQSUyMCdJLVBFUiclMkMlMEElMjA1JTNBJTIwJ0ItT1JHJyUyQyUwQSUyMDYlM0ElMjAnSS1PUkcnJTJDJTBBJTIwNyUzQSUyMCdCLUxPQyclMkMlMEElMjA4JTNBJTIwJ0ktTE9DJyU3RA==",highlighted:`{<span class="hljs-number">0</span>: <span class="hljs-string">&#x27;O&#x27;</span>,
 <span class="hljs-number">1</span>: <span class="hljs-string">&#x27;B-MISC&#x27;</span>,
 <span class="hljs-number">2</span>: <span class="hljs-string">&#x27;I-MISC&#x27;</span>,
 <span class="hljs-number">3</span>: <span class="hljs-string">&#x27;B-PER&#x27;</span>,
 <span class="hljs-number">4</span>: <span class="hljs-string">&#x27;I-PER&#x27;</span>,
 <span class="hljs-number">5</span>: <span class="hljs-string">&#x27;B-ORG&#x27;</span>,
 <span class="hljs-number">6</span>: <span class="hljs-string">&#x27;I-ORG&#x27;</span>,
 <span class="hljs-number">7</span>: <span class="hljs-string">&#x27;B-LOC&#x27;</span>,
 <span class="hljs-number">8</span>: <span class="hljs-string">&#x27;I-LOC&#x27;</span>}`,wrap:!1}}),Gs=new U({props:{code:"cmVzdWx0cyUyMCUzRCUyMCU1QiU1RCUwQXRva2VucyUyMCUzRCUyMGlucHV0cy50b2tlbnMoKSUwQSUwQWZvciUyMGlkeCUyQyUyMHByZWQlMjBpbiUyMGVudW1lcmF0ZShwcmVkaWN0aW9ucyklM0ElMEElMjAlMjAlMjAlMjBsYWJlbCUyMCUzRCUyMG1vZGVsLmNvbmZpZy5pZDJsYWJlbCU1QnByZWQlNUQlMEElMjAlMjAlMjAlMjBpZiUyMGxhYmVsJTIwISUzRCUyMCUyMk8lMjIlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXN1bHRzLmFwcGVuZCglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMjJlbnRpdHklMjIlM0ElMjBsYWJlbCUyQyUyMCUyMnNjb3JlJTIyJTNBJTIwcHJvYmFiaWxpdGllcyU1QmlkeCU1RCU1QnByZWQlNUQlMkMlMjAlMjJ3b3JkJTIyJTNBJTIwdG9rZW5zJTVCaWR4JTVEJTdEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKSUwQSUwQXByaW50KHJlc3VsdHMp",highlighted:`results = []
tokens = inputs.tokens()

<span class="hljs-keyword">for</span> idx, pred <span class="hljs-keyword">in</span> <span class="hljs-built_in">enumerate</span>(predictions):
    label = model.config.id2label[pred]
    <span class="hljs-keyword">if</span> label != <span class="hljs-string">&quot;O&quot;</span>:
        results.append(
            {<span class="hljs-string">&quot;entity&quot;</span>: label, <span class="hljs-string">&quot;score&quot;</span>: probabilities[idx][pred], <span class="hljs-string">&quot;word&quot;</span>: tokens[idx]}
        )

<span class="hljs-built_in">print</span>(results)`,wrap:!1}}),Ds=new U({props:{code:"JTVCJTdCJ2VudGl0eSclM0ElMjAnSS1QRVInJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTk5MzgyOCUyQyUyMCdpbmRleCclM0ElMjA0JTJDJTIwJ3dvcmQnJTNBJTIwJ1MnJTdEJTJDJTBBJTIwJTdCJ2VudGl0eSclM0ElMjAnSS1QRVInJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTk4MTU0NzYlMkMlMjAnaW5kZXgnJTNBJTIwNSUyQyUyMCd3b3JkJyUzQSUyMCclMjMlMjN5bCclN0QlMkMlMEElMjAlN0InZW50aXR5JyUzQSUyMCdJLVBFUiclMkMlMjAnc2NvcmUnJTNBJTIwMC45OTU5MDcyNSUyQyUyMCdpbmRleCclM0ElMjA2JTJDJTIwJ3dvcmQnJTNBJTIwJyUyMyUyM3ZhJyU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5OTIzMjclMkMlMjAnaW5kZXgnJTNBJTIwNyUyQyUyMCd3b3JkJyUzQSUyMCclMjMlMjNpbiclN0QlMkMlMEElMjAlN0InZW50aXR5JyUzQSUyMCdJLU9SRyclMkMlMjAnc2NvcmUnJTNBJTIwMC45NzM4OTMzNCUyQyUyMCdpbmRleCclM0ElMjAxMiUyQyUyMCd3b3JkJyUzQSUyMCdIdSclN0QlMkMlMEElMjAlN0InZW50aXR5JyUzQSUyMCdJLU9SRyclMkMlMjAnc2NvcmUnJTNBJTIwMC45NzYxMTUlMkMlMjAnaW5kZXgnJTNBJTIwMTMlMkMlMjAnd29yZCclM0ElMjAnJTIzJTIzZ2dpbmcnJTdEJTJDJTBBJTIwJTdCJ2VudGl0eSclM0ElMjAnSS1PUkcnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTg4Nzk3NjYlMkMlMjAnaW5kZXgnJTNBJTIwMTQlMkMlMjAnd29yZCclM0ElMjAnRmFjZSclN0QlMkMlMEElMjAlN0InZW50aXR5JyUzQSUyMCdJLUxPQyclMkMlMjAnc2NvcmUnJTNBJTIwMC45OTMyMTA1NSUyQyUyMCdpbmRleCclM0ElMjAxNiUyQyUyMCd3b3JkJyUzQSUyMCdCcm9va2x5biclN0QlNUQ=",highlighted:`[{<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-PER&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.9993828</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">4</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;S&#x27;</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-PER&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.99815476</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">5</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;##yl&#x27;</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-PER&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.99590725</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">6</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;##va&#x27;</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-PER&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.9992327</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">7</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;##in&#x27;</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-ORG&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.97389334</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">12</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Hu&#x27;</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-ORG&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.976115</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">13</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;##gging&#x27;</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-ORG&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.98879766</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">14</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Face&#x27;</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-LOC&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.99321055</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">16</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Brooklyn&#x27;</span>}]`,wrap:!1}}),Ls=new U({props:{code:"aW5wdXRzX3dpdGhfb2Zmc2V0cyUyMCUzRCUyMHRva2VuaXplcihleGFtcGxlJTJDJTIwcmV0dXJuX29mZnNldHNfbWFwcGluZyUzRFRydWUpJTBBaW5wdXRzX3dpdGhfb2Zmc2V0cyU1QiUyMm9mZnNldF9tYXBwaW5nJTIyJTVE",highlighted:`inputs_with_offsets = tokenizer(example, return_offsets_mapping=<span class="hljs-literal">True</span>)
inputs_with_offsets[<span class="hljs-string">&quot;offset_mapping&quot;</span>]`,wrap:!1}}),Fs=new U({props:{code:"JTVCKDAlMkMlMjAwKSUyQyUyMCgwJTJDJTIwMiklMkMlMjAoMyUyQyUyMDcpJTJDJTIwKDglMkMlMjAxMCklMkMlMjAoMTElMkMlMjAxMiklMkMlMjAoMTIlMkMlMjAxNCklMkMlMjAoMTQlMkMlMjAxNiklMkMlMjAoMTYlMkMlMjAxOCklMkMlMjAoMTklMkMlMjAyMiklMkMlMjAoMjMlMkMlMjAyNCklMkMlMjAoMjUlMkMlMjAyOSklMkMlMjAoMzAlMkMlMjAzMiklMkMlMEElMjAoMzMlMkMlMjAzNSklMkMlMjAoMzUlMkMlMjA0MCklMkMlMjAoNDElMkMlMjA0NSklMkMlMjAoNDYlMkMlMjA0OCklMkMlMjAoNDklMkMlMjA1NyklMkMlMjAoNTclMkMlMjA1OCklMkMlMjAoMCUyQyUyMDApJTVE",highlighted:`[(<span class="hljs-number">0</span>, <span class="hljs-number">0</span>), (<span class="hljs-number">0</span>, <span class="hljs-number">2</span>), (<span class="hljs-number">3</span>, <span class="hljs-number">7</span>), (<span class="hljs-number">8</span>, <span class="hljs-number">10</span>), (<span class="hljs-number">11</span>, <span class="hljs-number">12</span>), (<span class="hljs-number">12</span>, <span class="hljs-number">14</span>), (<span class="hljs-number">14</span>, <span class="hljs-number">16</span>), (<span class="hljs-number">16</span>, <span class="hljs-number">18</span>), (<span class="hljs-number">19</span>, <span class="hljs-number">22</span>), (<span class="hljs-number">23</span>, <span class="hljs-number">24</span>), (<span class="hljs-number">25</span>, <span class="hljs-number">29</span>), (<span class="hljs-number">30</span>, <span class="hljs-number">32</span>),
 (<span class="hljs-number">33</span>, <span class="hljs-number">35</span>), (<span class="hljs-number">35</span>, <span class="hljs-number">40</span>), (<span class="hljs-number">41</span>, <span class="hljs-number">45</span>), (<span class="hljs-number">46</span>, <span class="hljs-number">48</span>), (<span class="hljs-number">49</span>, <span class="hljs-number">57</span>), (<span class="hljs-number">57</span>, <span class="hljs-number">58</span>), (<span class="hljs-number">0</span>, <span class="hljs-number">0</span>)]`,wrap:!1}}),Ps=new U({props:{code:"ZXhhbXBsZSU1QjEyJTNBMTQlNUQ=",highlighted:'example[<span class="hljs-number">12</span>:<span class="hljs-number">14</span>]',wrap:!1}}),Ks=new U({props:{code:"eWw=",highlighted:"yl",wrap:!1}}),ll=new U({props:{code:"cmVzdWx0cyUyMCUzRCUyMCU1QiU1RCUwQWlucHV0c193aXRoX29mZnNldHMlMjAlM0QlMjB0b2tlbml6ZXIoZXhhbXBsZSUyQyUyMHJldHVybl9vZmZzZXRzX21hcHBpbmclM0RUcnVlKSUwQXRva2VucyUyMCUzRCUyMGlucHV0c193aXRoX29mZnNldHMudG9rZW5zKCklMEFvZmZzZXRzJTIwJTNEJTIwaW5wdXRzX3dpdGhfb2Zmc2V0cyU1QiUyMm9mZnNldF9tYXBwaW5nJTIyJTVEJTBBJTBBZm9yJTIwaWR4JTJDJTIwcHJlZCUyMGluJTIwZW51bWVyYXRlKHByZWRpY3Rpb25zKSUzQSUwQSUyMCUyMCUyMCUyMGxhYmVsJTIwJTNEJTIwbW9kZWwuY29uZmlnLmlkMmxhYmVsJTVCcHJlZCU1RCUwQSUyMCUyMCUyMCUyMGlmJTIwbGFiZWwlMjAhJTNEJTIwJTIyTyUyMiUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN0YXJ0JTJDJTIwZW5kJTIwJTNEJTIwb2Zmc2V0cyU1QmlkeCU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJlc3VsdHMuYXBwZW5kKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMmVudGl0eSUyMiUzQSUyMGxhYmVsJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyc2NvcmUlMjIlM0ElMjBwcm9iYWJpbGl0aWVzJTVCaWR4JTVEJTVCcHJlZCU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMndvcmQlMjIlM0ElMjB0b2tlbnMlNUJpZHglNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJzdGFydCUyMiUzQSUyMHN0YXJ0JTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyZW5kJTIyJTNBJTIwZW5kJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKSUwQSUwQXByaW50KHJlc3VsdHMp",highlighted:`results = []
inputs_with_offsets = tokenizer(example, return_offsets_mapping=<span class="hljs-literal">True</span>)
tokens = inputs_with_offsets.tokens()
offsets = inputs_with_offsets[<span class="hljs-string">&quot;offset_mapping&quot;</span>]

<span class="hljs-keyword">for</span> idx, pred <span class="hljs-keyword">in</span> <span class="hljs-built_in">enumerate</span>(predictions):
    label = model.config.id2label[pred]
    <span class="hljs-keyword">if</span> label != <span class="hljs-string">&quot;O&quot;</span>:
        start, end = offsets[idx]
        results.append(
            {
                <span class="hljs-string">&quot;entity&quot;</span>: label,
                <span class="hljs-string">&quot;score&quot;</span>: probabilities[idx][pred],
                <span class="hljs-string">&quot;word&quot;</span>: tokens[idx],
                <span class="hljs-string">&quot;start&quot;</span>: start,
                <span class="hljs-string">&quot;end&quot;</span>: end,
            }
        )

<span class="hljs-built_in">print</span>(results)`,wrap:!1}}),nl=new U({props:{code:"JTVCJTdCJ2VudGl0eSclM0ElMjAnSS1QRVInJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTk5MzgyOCUyQyUyMCdpbmRleCclM0ElMjA0JTJDJTIwJ3dvcmQnJTNBJTIwJ1MnJTJDJTIwJ3N0YXJ0JyUzQSUyMDExJTJDJTIwJ2VuZCclM0ElMjAxMiU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5ODE1NDc2JTJDJTIwJ2luZGV4JyUzQSUyMDUlMkMlMjAnd29yZCclM0ElMjAnJTIzJTIzeWwnJTJDJTIwJ3N0YXJ0JyUzQSUyMDEyJTJDJTIwJ2VuZCclM0ElMjAxNCU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5NTkwNzI1JTJDJTIwJ2luZGV4JyUzQSUyMDYlMkMlMjAnd29yZCclM0ElMjAnJTIzJTIzdmEnJTJDJTIwJ3N0YXJ0JyUzQSUyMDE0JTJDJTIwJ2VuZCclM0ElMjAxNiU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5OTIzMjclMkMlMjAnaW5kZXgnJTNBJTIwNyUyQyUyMCd3b3JkJyUzQSUyMCclMjMlMjNpbiclMkMlMjAnc3RhcnQnJTNBJTIwMTYlMkMlMjAnZW5kJyUzQSUyMDE4JTdEJTJDJTBBJTIwJTdCJ2VudGl0eSclM0ElMjAnSS1PUkcnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTczODkzMzQlMkMlMjAnaW5kZXgnJTNBJTIwMTIlMkMlMjAnd29yZCclM0ElMjAnSHUnJTJDJTIwJ3N0YXJ0JyUzQSUyMDMzJTJDJTIwJ2VuZCclM0ElMjAzNSU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktT1JHJyUyQyUyMCdzY29yZSclM0ElMjAwLjk3NjExNSUyQyUyMCdpbmRleCclM0ElMjAxMyUyQyUyMCd3b3JkJyUzQSUyMCclMjMlMjNnZ2luZyclMkMlMjAnc3RhcnQnJTNBJTIwMzUlMkMlMjAnZW5kJyUzQSUyMDQwJTdEJTJDJTBBJTIwJTdCJ2VudGl0eSclM0ElMjAnSS1PUkcnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTg4Nzk3NjYlMkMlMjAnaW5kZXgnJTNBJTIwMTQlMkMlMjAnd29yZCclM0ElMjAnRmFjZSclMkMlMjAnc3RhcnQnJTNBJTIwNDElMkMlMjAnZW5kJyUzQSUyMDQ1JTdEJTJDJTBBJTIwJTdCJ2VudGl0eSclM0ElMjAnSS1MT0MnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTkzMjEwNTUlMkMlMjAnaW5kZXgnJTNBJTIwMTYlMkMlMjAnd29yZCclM0ElMjAnQnJvb2tseW4nJTJDJTIwJ3N0YXJ0JyUzQSUyMDQ5JTJDJTIwJ2VuZCclM0ElMjA1NyU3RCU1RA==",highlighted:`[{<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-PER&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.9993828</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">4</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;S&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">11</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">12</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-PER&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.99815476</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">5</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;##yl&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">12</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">14</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-PER&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.99590725</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">6</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;##va&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">14</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">16</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-PER&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.9992327</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">7</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;##in&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">16</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">18</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-ORG&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.97389334</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">12</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Hu&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">33</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">35</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-ORG&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.976115</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">13</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;##gging&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">35</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">40</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-ORG&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.98879766</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">14</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Face&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">41</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">45</span>},
 {<span class="hljs-string">&#x27;entity&#x27;</span>: <span class="hljs-string">&#x27;I-LOC&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.99321055</span>, <span class="hljs-string">&#x27;index&#x27;</span>: <span class="hljs-number">16</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Brooklyn&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">49</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">57</span>}]`,wrap:!1}}),tl=new fl({props:{title:"การรวม entities",local:"การรวม-entities",headingTag:"h3"}}),Ml=new U({props:{code:"ZXhhbXBsZSU1QjMzJTNBNDUlNUQ=",highlighted:'example[<span class="hljs-number">33</span>:<span class="hljs-number">45</span>]',wrap:!1}}),cl=new U({props:{code:"SHVnZ2luZyUyMEZhY2U=",highlighted:"Hugging Face",wrap:!1}}),jl=new U({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBJTBBcmVzdWx0cyUyMCUzRCUyMCU1QiU1RCUwQWlucHV0c193aXRoX29mZnNldHMlMjAlM0QlMjB0b2tlbml6ZXIoZXhhbXBsZSUyQyUyMHJldHVybl9vZmZzZXRzX21hcHBpbmclM0RUcnVlKSUwQXRva2VucyUyMCUzRCUyMGlucHV0c193aXRoX29mZnNldHMudG9rZW5zKCklMEFvZmZzZXRzJTIwJTNEJTIwaW5wdXRzX3dpdGhfb2Zmc2V0cyU1QiUyMm9mZnNldF9tYXBwaW5nJTIyJTVEJTBBJTBBaWR4JTIwJTNEJTIwMCUwQXdoaWxlJTIwaWR4JTIwJTNDJTIwbGVuKHByZWRpY3Rpb25zKSUzQSUwQSUyMCUyMCUyMCUyMHByZWQlMjAlM0QlMjBwcmVkaWN0aW9ucyU1QmlkeCU1RCUwQSUyMCUyMCUyMCUyMGxhYmVsJTIwJTNEJTIwbW9kZWwuY29uZmlnLmlkMmxhYmVsJTVCcHJlZCU1RCUwQSUyMCUyMCUyMCUyMGlmJTIwbGFiZWwlMjAhJTNEJTIwJTIyTyUyMiUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMFJlbW92ZSUyMHRoZSUyMEItJTIwb3IlMjBJLSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxhYmVsJTIwJTNEJTIwbGFiZWwlNUIyJTNBJTVEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3RhcnQlMkMlMjBfJTIwJTNEJTIwb2Zmc2V0cyU1QmlkeCU1RCUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMEdyYWIlMjBhbGwlMjB0aGUlMjB0b2tlbnMlMjBsYWJlbGVkJTIwd2l0aCUyMEktbGFiZWwlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhbGxfc2NvcmVzJTIwJTNEJTIwJTVCJTVEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwd2hpbGUlMjAoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWR4JTIwJTNDJTIwbGVuKHByZWRpY3Rpb25zKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGFuZCUyMG1vZGVsLmNvbmZpZy5pZDJsYWJlbCU1QnByZWRpY3Rpb25zJTVCaWR4JTVEJTVEJTIwJTNEJTNEJTIwZiUyMkktJTdCbGFiZWwlN0QlMjIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjApJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYWxsX3Njb3Jlcy5hcHBlbmQocHJvYmFiaWxpdGllcyU1QmlkeCU1RCU1QnByZWQlNUQpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwXyUyQyUyMGVuZCUyMCUzRCUyMG9mZnNldHMlNUJpZHglNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZHglMjAlMkIlM0QlMjAxJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwVGhlJTIwc2NvcmUlMjBpcyUyMHRoZSUyMG1lYW4lMjBvZiUyMGFsbCUyMHRoZSUyMHNjb3JlcyUyMG9mJTIwdGhlJTIwdG9rZW5zJTIwaW4lMjB0aGF0JTIwZ3JvdXBlZCUyMGVudGl0eSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNjb3JlJTIwJTNEJTIwbnAubWVhbihhbGxfc2NvcmVzKS5pdGVtKCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB3b3JkJTIwJTNEJTIwZXhhbXBsZSU1QnN0YXJ0JTNBZW5kJTVEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmVzdWx0cy5hcHBlbmQoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyZW50aXR5X2dyb3VwJTIyJTNBJTIwbGFiZWwlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJzY29yZSUyMiUzQSUyMHNjb3JlJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyd29yZCUyMiUzQSUyMHdvcmQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJzdGFydCUyMiUzQSUyMHN0YXJ0JTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyZW5kJTIyJTNBJTIwZW5kJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKSUwQSUyMCUyMCUyMCUyMGlkeCUyMCUyQiUzRCUyMDElMEElMEFwcmludChyZXN1bHRzKQ==",highlighted:`<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np

results = []
inputs_with_offsets = tokenizer(example, return_offsets_mapping=<span class="hljs-literal">True</span>)
tokens = inputs_with_offsets.tokens()
offsets = inputs_with_offsets[<span class="hljs-string">&quot;offset_mapping&quot;</span>]

idx = <span class="hljs-number">0</span>
<span class="hljs-keyword">while</span> idx &lt; <span class="hljs-built_in">len</span>(predictions):
    pred = predictions[idx]
    label = model.config.id2label[pred]
    <span class="hljs-keyword">if</span> label != <span class="hljs-string">&quot;O&quot;</span>:
        <span class="hljs-comment"># Remove the B- or I-</span>
        label = label[<span class="hljs-number">2</span>:]
        start, _ = offsets[idx]

        <span class="hljs-comment"># Grab all the tokens labeled with I-label</span>
        all_scores = []
        <span class="hljs-keyword">while</span> (
            idx &lt; <span class="hljs-built_in">len</span>(predictions)
            <span class="hljs-keyword">and</span> model.config.id2label[predictions[idx]] == <span class="hljs-string">f&quot;I-<span class="hljs-subst">{label}</span>&quot;</span>
        ):
            all_scores.append(probabilities[idx][pred])
            _, end = offsets[idx]
            idx += <span class="hljs-number">1</span>

        <span class="hljs-comment"># The score is the mean of all the scores of the tokens in that grouped entity</span>
        score = np.mean(all_scores).item()
        word = example[start:end]
        results.append(
            {
                <span class="hljs-string">&quot;entity_group&quot;</span>: label,
                <span class="hljs-string">&quot;score&quot;</span>: score,
                <span class="hljs-string">&quot;word&quot;</span>: word,
                <span class="hljs-string">&quot;start&quot;</span>: start,
                <span class="hljs-string">&quot;end&quot;</span>: end,
            }
        )
    idx += <span class="hljs-number">1</span>

<span class="hljs-built_in">print</span>(results)`,wrap:!1}}),Tl=new U({props:{code:"JTVCJTdCJ2VudGl0eV9ncm91cCclM0ElMjAnUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5ODE2OTQlMkMlMjAnd29yZCclM0ElMjAnU3lsdmFpbiclMkMlMjAnc3RhcnQnJTNBJTIwMTElMkMlMjAnZW5kJyUzQSUyMDE4JTdEJTJDJTBBJTIwJTdCJ2VudGl0eV9ncm91cCclM0ElMjAnT1JHJyUyQyUyMCdzY29yZSclM0ElMjAwLjk3OTYwMjA0JTJDJTIwJ3dvcmQnJTNBJTIwJ0h1Z2dpbmclMjBGYWNlJyUyQyUyMCdzdGFydCclM0ElMjAzMyUyQyUyMCdlbmQnJTNBJTIwNDUlN0QlMkMlMEElMjAlN0InZW50aXR5X2dyb3VwJyUzQSUyMCdMT0MnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTkzMjEwNTUlMkMlMjAnd29yZCclM0ElMjAnQnJvb2tseW4nJTJDJTIwJ3N0YXJ0JyUzQSUyMDQ5JTJDJTIwJ2VuZCclM0ElMjA1NyU3RCU1RA==",highlighted:`[{<span class="hljs-string">&#x27;entity_group&#x27;</span>: <span class="hljs-string">&#x27;PER&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.9981694</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Sylvain&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">11</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">18</span>},
 {<span class="hljs-string">&#x27;entity_group&#x27;</span>: <span class="hljs-string">&#x27;ORG&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.97960204</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Hugging Face&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">33</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">45</span>},
 {<span class="hljs-string">&#x27;entity_group&#x27;</span>: <span class="hljs-string">&#x27;LOC&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.99321055</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Brooklyn&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">49</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">57</span>}]`,wrap:!1}}),ml=new Qt({props:{source:"https://github.com/huggingface/course/blob/main/chapters/th/chapter6/3.mdx"}}),{c(){p=J("meta"),d=t(),i=J("p"),w=t(),y(I.$$.fragment),h=t(),y(C.$$.fragment),A=t(),k.c(),g=t(),$=J("p"),$.textContent=M,f=t(),W=J("p"),W.innerHTML=de,Il=t(),y(H.$$.fragment),kl=t(),V=J("p"),V.innerHTML=we,Cl=t(),X=J("table"),X.innerHTML=Ue,$l=t(),y(S.$$.fragment),Al=t(),y(G.$$.fragment),Ql=t(),y(D.$$.fragment),Bl=t(),Y=J("p"),Y.innerHTML=he,Zl=t(),L=J("p"),L.innerHTML=xe,Nl=t(),F=J("p"),F.innerHTML=be,El=t(),q=J("p"),q.textContent=fe,zl=t(),y(P.$$.fragment),Sl=t(),O=J("p"),O.innerHTML=ge,_l=t(),y(K.$$.fragment),Rl=t(),ss=J("p"),ss.innerHTML=Ie,vl=t(),y(ls.$$.fragment),Wl=t(),y(ns.$$.fragment),Hl=t(),es=J("p"),es.innerHTML=ke,Vl=t(),y(ts.$$.fragment),Xl=t(),y(as.$$.fragment),Gl=t(),ps=J("p"),ps.textContent=Ce,Dl=t(),y(is.$$.fragment),Yl=t(),y(Ms.$$.fragment),Ll=t(),cs=J("p"),cs.innerHTML=$e,Fl=t(),rs=J("p"),rs.innerHTML=Ae,ql=t(),y(Js.$$.fragment),Pl=t(),y(js.$$.fragment),Ol=t(),ys=J("p"),ys.innerHTML=Qe,Kl=t(),Ts=J("p"),Ts.innerHTML=Be,sn=t(),y(_.$$.fragment),ln=t(),os=J("p"),os.innerHTML=Ze,nn=t(),ms=J("p"),ms.innerHTML=Ne,en=t(),us=J("p"),us.innerHTML=Ee,tn=t(),y(ds.$$.fragment),an=t(),y(ws.$$.fragment),pn=t(),Us=J("p"),Us.innerHTML=ze,Mn=t(),y(R.$$.fragment),cn=t(),y(hs.$$.fragment),rn=t(),xs=J("p"),xs.innerHTML=Se,Jn=t(),B.c(),hl=t(),y(bs.$$.fragment),jn=t(),fs=J("p"),fs.innerHTML=_e,yn=t(),y(gs.$$.fragment),Tn=t(),y(Is.$$.fragment),on=t(),ks=J("p"),ks.textContent=Re,mn=t(),y(Cs.$$.fragment),un=t(),y($s.$$.fragment),dn=t(),As=J("p"),As.innerHTML=ve,wn=t(),Qs=J("p"),Qs.textContent=We,Un=t(),Bs=J("ul"),Bs.innerHTML=He,hn=t(),Zs=J("p"),Zs.innerHTML=Ve,xn=t(),y(Ns.$$.fragment),bn=t(),N.c(),xl=t(),Es=J("p"),Es.textContent=Xe,fn=t(),z.c(),bl=t(),y(zs.$$.fragment),gn=t(),Ss=J("p"),Ss.innerHTML=Ge,In=t(),y(_s.$$.fragment),kn=t(),y(Rs.$$.fragment),Cn=t(),vs=J("p"),vs.innerHTML=De,$n=t(),Ws=J("p"),Ws.innerHTML=Ye,An=t(),Hs=J("p"),Hs.innerHTML=Le,Qn=t(),Vs=J("p"),Vs.innerHTML=Fe,Bn=t(),v=J("div"),v.innerHTML=qe,Zn=t(),Xs=J("p"),Xs.innerHTML=Pe,Nn=t(),y(Gs.$$.fragment),En=t(),y(Ds.$$.fragment),zn=t(),Ys=J("p"),Ys.innerHTML=Oe,Sn=t(),y(Ls.$$.fragment),_n=t(),y(Fs.$$.fragment),Rn=t(),qs=J("p"),qs.innerHTML=Ke,vn=t(),y(Ps.$$.fragment),Wn=t(),Os=J("p"),Os.innerHTML=st,Hn=t(),y(Ks.$$.fragment),Vn=t(),sl=J("p"),sl.textContent=lt,Xn=t(),y(ll.$$.fragment),Gn=t(),y(nl.$$.fragment),Dn=t(),el=J("p"),el.textContent=nt,Yn=t(),y(tl.$$.fragment),Ln=t(),al=J("p"),al.textContent=et,Fn=t(),pl=J("p"),pl.innerHTML=tt,qn=t(),il=J("p"),il.innerHTML=at,Pn=t(),y(Ml.$$.fragment),On=t(),y(cl.$$.fragment),Kn=t(),rl=J("p"),rl.textContent=pt,se=t(),Jl=J("p"),Jl.innerHTML=it,le=t(),y(jl.$$.fragment),ne=t(),yl=J("p"),yl.textContent=Mt,ee=t(),y(Tl.$$.fragment),te=t(),ol=J("p"),ol.textContent=ct,ae=t(),y(ml.$$.fragment),pe=t(),gl=J("p"),this.h()},l(s){const l=Ct("svelte-u9bgzb",document.head);p=j(l,"META",{name:!0,content:!0}),l.forEach(n),d=a(s),i=j(s,"P",{}),xt(i).forEach(n),w=a(s),T(I.$$.fragment,s),h=a(s),T(C.$$.fragment,s),A=a(s),k.l(s),g=a(s),$=j(s,"P",{"data-svelte-h":!0}),u($)!=="svelte-h9gmx3"&&($.textContent=M),f=a(s),W=j(s,"P",{"data-svelte-h":!0}),u(W)!=="svelte-1c8cedk"&&(W.innerHTML=de),Il=a(s),T(H.$$.fragment,s),kl=a(s),V=j(s,"P",{"data-svelte-h":!0}),u(V)!=="svelte-150ttb5"&&(V.innerHTML=we),Cl=a(s),X=j(s,"TABLE",{"data-svelte-h":!0}),u(X)!=="svelte-1hjgutj"&&(X.innerHTML=Ue),$l=a(s),T(S.$$.fragment,s),Al=a(s),T(G.$$.fragment,s),Ql=a(s),T(D.$$.fragment,s),Bl=a(s),Y=j(s,"P",{"data-svelte-h":!0}),u(Y)!=="svelte-n0kj1"&&(Y.innerHTML=he),Zl=a(s),L=j(s,"P",{"data-svelte-h":!0}),u(L)!=="svelte-1o66ql"&&(L.innerHTML=xe),Nl=a(s),F=j(s,"P",{"data-svelte-h":!0}),u(F)!=="svelte-a295y4"&&(F.innerHTML=be),El=a(s),q=j(s,"P",{"data-svelte-h":!0}),u(q)!=="svelte-10zibem"&&(q.textContent=fe),zl=a(s),T(P.$$.fragment,s),Sl=a(s),O=j(s,"P",{"data-svelte-h":!0}),u(O)!=="svelte-1t5x2j9"&&(O.innerHTML=ge),_l=a(s),T(K.$$.fragment,s),Rl=a(s),ss=j(s,"P",{"data-svelte-h":!0}),u(ss)!=="svelte-1jvz5q8"&&(ss.innerHTML=Ie),vl=a(s),T(ls.$$.fragment,s),Wl=a(s),T(ns.$$.fragment,s),Hl=a(s),es=j(s,"P",{"data-svelte-h":!0}),u(es)!=="svelte-zrjmw6"&&(es.innerHTML=ke),Vl=a(s),T(ts.$$.fragment,s),Xl=a(s),T(as.$$.fragment,s),Gl=a(s),ps=j(s,"P",{"data-svelte-h":!0}),u(ps)!=="svelte-1plxvsv"&&(ps.textContent=Ce),Dl=a(s),T(is.$$.fragment,s),Yl=a(s),T(Ms.$$.fragment,s),Ll=a(s),cs=j(s,"P",{"data-svelte-h":!0}),u(cs)!=="svelte-kf1bqt"&&(cs.innerHTML=$e),Fl=a(s),rs=j(s,"P",{"data-svelte-h":!0}),u(rs)!=="svelte-17mmjv3"&&(rs.innerHTML=Ae),ql=a(s),T(Js.$$.fragment,s),Pl=a(s),T(js.$$.fragment,s),Ol=a(s),ys=j(s,"P",{"data-svelte-h":!0}),u(ys)!=="svelte-k1ae1f"&&(ys.innerHTML=Qe),Kl=a(s),Ts=j(s,"P",{"data-svelte-h":!0}),u(Ts)!=="svelte-ltnlgf"&&(Ts.innerHTML=Be),sn=a(s),T(_.$$.fragment,s),ln=a(s),os=j(s,"P",{"data-svelte-h":!0}),u(os)!=="svelte-9jzqw"&&(os.innerHTML=Ze),nn=a(s),ms=j(s,"P",{"data-svelte-h":!0}),u(ms)!=="svelte-dek4wm"&&(ms.innerHTML=Ne),en=a(s),us=j(s,"P",{"data-svelte-h":!0}),u(us)!=="svelte-1g3ppzk"&&(us.innerHTML=Ee),tn=a(s),T(ds.$$.fragment,s),an=a(s),T(ws.$$.fragment,s),pn=a(s),Us=j(s,"P",{"data-svelte-h":!0}),u(Us)!=="svelte-j0fahj"&&(Us.innerHTML=ze),Mn=a(s),T(R.$$.fragment,s),cn=a(s),T(hs.$$.fragment,s),rn=a(s),xs=j(s,"P",{"data-svelte-h":!0}),u(xs)!=="svelte-z4oh30"&&(xs.innerHTML=Se),Jn=a(s),B.l(s),hl=a(s),T(bs.$$.fragment,s),jn=a(s),fs=j(s,"P",{"data-svelte-h":!0}),u(fs)!=="svelte-kma7bw"&&(fs.innerHTML=_e),yn=a(s),T(gs.$$.fragment,s),Tn=a(s),T(Is.$$.fragment,s),on=a(s),ks=j(s,"P",{"data-svelte-h":!0}),u(ks)!=="svelte-ur6zob"&&(ks.textContent=Re),mn=a(s),T(Cs.$$.fragment,s),un=a(s),T($s.$$.fragment,s),dn=a(s),As=j(s,"P",{"data-svelte-h":!0}),u(As)!=="svelte-1mal0m7"&&(As.innerHTML=ve),wn=a(s),Qs=j(s,"P",{"data-svelte-h":!0}),u(Qs)!=="svelte-dlvgti"&&(Qs.textContent=We),Un=a(s),Bs=j(s,"UL",{"data-svelte-h":!0}),u(Bs)!=="svelte-1khumke"&&(Bs.innerHTML=He),hn=a(s),Zs=j(s,"P",{"data-svelte-h":!0}),u(Zs)!=="svelte-be19nb"&&(Zs.innerHTML=Ve),xn=a(s),T(Ns.$$.fragment,s),bn=a(s),N.l(s),xl=a(s),Es=j(s,"P",{"data-svelte-h":!0}),u(Es)!=="svelte-1u8790f"&&(Es.textContent=Xe),fn=a(s),z.l(s),bl=a(s),T(zs.$$.fragment,s),gn=a(s),Ss=j(s,"P",{"data-svelte-h":!0}),u(Ss)!=="svelte-1e33soq"&&(Ss.innerHTML=Ge),In=a(s),T(_s.$$.fragment,s),kn=a(s),T(Rs.$$.fragment,s),Cn=a(s),vs=j(s,"P",{"data-svelte-h":!0}),u(vs)!=="svelte-lngqu3"&&(vs.innerHTML=De),$n=a(s),Ws=j(s,"P",{"data-svelte-h":!0}),u(Ws)!=="svelte-1os7m2b"&&(Ws.innerHTML=Ye),An=a(s),Hs=j(s,"P",{"data-svelte-h":!0}),u(Hs)!=="svelte-10ka1xu"&&(Hs.innerHTML=Le),Qn=a(s),Vs=j(s,"P",{"data-svelte-h":!0}),u(Vs)!=="svelte-10r2xqd"&&(Vs.innerHTML=Fe),Bn=a(s),v=j(s,"DIV",{class:!0,"data-svelte-h":!0}),u(v)!=="svelte-qf2tof"&&(v.innerHTML=qe),Zn=a(s),Xs=j(s,"P",{"data-svelte-h":!0}),u(Xs)!=="svelte-1thg1mp"&&(Xs.innerHTML=Pe),Nn=a(s),T(Gs.$$.fragment,s),En=a(s),T(Ds.$$.fragment,s),zn=a(s),Ys=j(s,"P",{"data-svelte-h":!0}),u(Ys)!=="svelte-7dmzyn"&&(Ys.innerHTML=Oe),Sn=a(s),T(Ls.$$.fragment,s),_n=a(s),T(Fs.$$.fragment,s),Rn=a(s),qs=j(s,"P",{"data-svelte-h":!0}),u(qs)!=="svelte-wy2mk2"&&(qs.innerHTML=Ke),vn=a(s),T(Ps.$$.fragment,s),Wn=a(s),Os=j(s,"P",{"data-svelte-h":!0}),u(Os)!=="svelte-1kqqje8"&&(Os.innerHTML=st),Hn=a(s),T(Ks.$$.fragment,s),Vn=a(s),sl=j(s,"P",{"data-svelte-h":!0}),u(sl)!=="svelte-174b3vx"&&(sl.textContent=lt),Xn=a(s),T(ll.$$.fragment,s),Gn=a(s),T(nl.$$.fragment,s),Dn=a(s),el=j(s,"P",{"data-svelte-h":!0}),u(el)!=="svelte-ttwot1"&&(el.textContent=nt),Yn=a(s),T(tl.$$.fragment,s),Ln=a(s),al=j(s,"P",{"data-svelte-h":!0}),u(al)!=="svelte-166o6gk"&&(al.textContent=et),Fn=a(s),pl=j(s,"P",{"data-svelte-h":!0}),u(pl)!=="svelte-nvmqhm"&&(pl.innerHTML=tt),qn=a(s),il=j(s,"P",{"data-svelte-h":!0}),u(il)!=="svelte-g86u14"&&(il.innerHTML=at),Pn=a(s),T(Ml.$$.fragment,s),On=a(s),T(cl.$$.fragment,s),Kn=a(s),rl=j(s,"P",{"data-svelte-h":!0}),u(rl)!=="svelte-1v7asck"&&(rl.textContent=pt),se=a(s),Jl=j(s,"P",{"data-svelte-h":!0}),u(Jl)!=="svelte-8upx01"&&(Jl.innerHTML=it),le=a(s),T(jl.$$.fragment,s),ne=a(s),yl=j(s,"P",{"data-svelte-h":!0}),u(yl)!=="svelte-1irzrok"&&(yl.textContent=Mt),ee=a(s),T(Tl.$$.fragment,s),te=a(s),ol=j(s,"P",{"data-svelte-h":!0}),u(ol)!=="svelte-royqcg"&&(ol.textContent=ct),ae=a(s),T(ml.$$.fragment,s),pe=a(s),gl=j(s,"P",{}),xt(gl).forEach(n),this.h()},h(){oe(p,"name","hf:doc:metadata"),oe(p,"content",Xt),oe(v,"class","flex justify-center")},m(s,l){$t(document.head,p),e(s,d,l),e(s,i,l),e(s,w,l),o(I,s,l),e(s,h,l),o(C,s,l),e(s,A,l),ul[x].m(s,l),e(s,g,l),e(s,$,l),e(s,f,l),e(s,W,l),e(s,Il,l),o(H,s,l),e(s,kl,l),e(s,V,l),e(s,Cl,l),e(s,X,l),e(s,$l,l),o(S,s,l),e(s,Al,l),o(G,s,l),e(s,Ql,l),o(D,s,l),e(s,Bl,l),e(s,Y,l),e(s,Zl,l),e(s,L,l),e(s,Nl,l),e(s,F,l),e(s,El,l),e(s,q,l),e(s,zl,l),o(P,s,l),e(s,Sl,l),e(s,O,l),e(s,_l,l),o(K,s,l),e(s,Rl,l),e(s,ss,l),e(s,vl,l),o(ls,s,l),e(s,Wl,l),o(ns,s,l),e(s,Hl,l),e(s,es,l),e(s,Vl,l),o(ts,s,l),e(s,Xl,l),o(as,s,l),e(s,Gl,l),e(s,ps,l),e(s,Dl,l),o(is,s,l),e(s,Yl,l),o(Ms,s,l),e(s,Ll,l),e(s,cs,l),e(s,Fl,l),e(s,rs,l),e(s,ql,l),o(Js,s,l),e(s,Pl,l),o(js,s,l),e(s,Ol,l),e(s,ys,l),e(s,Kl,l),e(s,Ts,l),e(s,sn,l),o(_,s,l),e(s,ln,l),e(s,os,l),e(s,nn,l),e(s,ms,l),e(s,en,l),e(s,us,l),e(s,tn,l),o(ds,s,l),e(s,an,l),o(ws,s,l),e(s,pn,l),e(s,Us,l),e(s,Mn,l),o(R,s,l),e(s,cn,l),o(hs,s,l),e(s,rn,l),e(s,xs,l),e(s,Jn,l),dl[Q].m(s,l),e(s,hl,l),o(bs,s,l),e(s,jn,l),e(s,fs,l),e(s,yn,l),o(gs,s,l),e(s,Tn,l),o(Is,s,l),e(s,on,l),e(s,ks,l),e(s,mn,l),o(Cs,s,l),e(s,un,l),o($s,s,l),e(s,dn,l),e(s,As,l),e(s,wn,l),e(s,Qs,l),e(s,Un,l),e(s,Bs,l),e(s,hn,l),e(s,Zs,l),e(s,xn,l),o(Ns,s,l),e(s,bn,l),wl[Z].m(s,l),e(s,xl,l),e(s,Es,l),e(s,fn,l),Ul[E].m(s,l),e(s,bl,l),o(zs,s,l),e(s,gn,l),e(s,Ss,l),e(s,In,l),o(_s,s,l),e(s,kn,l),o(Rs,s,l),e(s,Cn,l),e(s,vs,l),e(s,$n,l),e(s,Ws,l),e(s,An,l),e(s,Hs,l),e(s,Qn,l),e(s,Vs,l),e(s,Bn,l),e(s,v,l),e(s,Zn,l),e(s,Xs,l),e(s,Nn,l),o(Gs,s,l),e(s,En,l),o(Ds,s,l),e(s,zn,l),e(s,Ys,l),e(s,Sn,l),o(Ls,s,l),e(s,_n,l),o(Fs,s,l),e(s,Rn,l),e(s,qs,l),e(s,vn,l),o(Ps,s,l),e(s,Wn,l),e(s,Os,l),e(s,Hn,l),o(Ks,s,l),e(s,Vn,l),e(s,sl,l),e(s,Xn,l),o(ll,s,l),e(s,Gn,l),o(nl,s,l),e(s,Dn,l),e(s,el,l),e(s,Yn,l),o(tl,s,l),e(s,Ln,l),e(s,al,l),e(s,Fn,l),e(s,pl,l),e(s,qn,l),e(s,il,l),e(s,Pn,l),o(Ml,s,l),e(s,On,l),o(cl,s,l),e(s,Kn,l),e(s,rl,l),e(s,se,l),e(s,Jl,l),e(s,le,l),o(jl,s,l),e(s,ne,l),e(s,yl,l),e(s,ee,l),o(Tl,s,l),e(s,te,l),e(s,ol,l),e(s,ae,l),o(ml,s,l),e(s,pe,l),e(s,gl,l),ie=!0},p(s,[l]){const dt={};l&1&&(dt.fw=s[0]),I.$set(dt);let Je=x;x=Jt(s),x!==Je&&(ce(),c(ul[Je],1,1,()=>{ul[Je]=null}),Me(),k=ul[x],k||(k=ul[x]=rt[x](s),k.c()),r(k,1),k.m(g.parentNode,g));const wt={};l&2&&(wt.$$scope={dirty:l,ctx:s}),S.$set(wt);const Ut={};l&2&&(Ut.$$scope={dirty:l,ctx:s}),_.$set(Ut);const ht={};l&2&&(ht.$$scope={dirty:l,ctx:s}),R.$set(ht);let je=Q;Q=yt(s),Q!==je&&(ce(),c(dl[je],1,1,()=>{dl[je]=null}),Me(),B=dl[Q],B||(B=dl[Q]=jt[Q](s),B.c()),r(B,1),B.m(hl.parentNode,hl));let ye=Z;Z=ot(s),Z!==ye&&(ce(),c(wl[ye],1,1,()=>{wl[ye]=null}),Me(),N=wl[Z],N||(N=wl[Z]=Tt[Z](s),N.c()),r(N,1),N.m(xl.parentNode,xl));let Te=E;E=ut(s),E!==Te&&(ce(),c(Ul[Te],1,1,()=>{Ul[Te]=null}),Me(),z=Ul[E],z||(z=Ul[E]=mt[E](s),z.c()),r(z,1),z.m(bl.parentNode,bl))},i(s){ie||(r(I.$$.fragment,s),r(C.$$.fragment,s),r(k),r(H.$$.fragment,s),r(S.$$.fragment,s),r(G.$$.fragment,s),r(D.$$.fragment,s),r(P.$$.fragment,s),r(K.$$.fragment,s),r(ls.$$.fragment,s),r(ns.$$.fragment,s),r(ts.$$.fragment,s),r(as.$$.fragment,s),r(is.$$.fragment,s),r(Ms.$$.fragment,s),r(Js.$$.fragment,s),r(js.$$.fragment,s),r(_.$$.fragment,s),r(ds.$$.fragment,s),r(ws.$$.fragment,s),r(R.$$.fragment,s),r(hs.$$.fragment,s),r(B),r(bs.$$.fragment,s),r(gs.$$.fragment,s),r(Is.$$.fragment,s),r(Cs.$$.fragment,s),r($s.$$.fragment,s),r(Ns.$$.fragment,s),r(N),r(z),r(zs.$$.fragment,s),r(_s.$$.fragment,s),r(Rs.$$.fragment,s),r(Gs.$$.fragment,s),r(Ds.$$.fragment,s),r(Ls.$$.fragment,s),r(Fs.$$.fragment,s),r(Ps.$$.fragment,s),r(Ks.$$.fragment,s),r(ll.$$.fragment,s),r(nl.$$.fragment,s),r(tl.$$.fragment,s),r(Ml.$$.fragment,s),r(cl.$$.fragment,s),r(jl.$$.fragment,s),r(Tl.$$.fragment,s),r(ml.$$.fragment,s),ie=!0)},o(s){c(I.$$.fragment,s),c(C.$$.fragment,s),c(k),c(H.$$.fragment,s),c(S.$$.fragment,s),c(G.$$.fragment,s),c(D.$$.fragment,s),c(P.$$.fragment,s),c(K.$$.fragment,s),c(ls.$$.fragment,s),c(ns.$$.fragment,s),c(ts.$$.fragment,s),c(as.$$.fragment,s),c(is.$$.fragment,s),c(Ms.$$.fragment,s),c(Js.$$.fragment,s),c(js.$$.fragment,s),c(_.$$.fragment,s),c(ds.$$.fragment,s),c(ws.$$.fragment,s),c(R.$$.fragment,s),c(hs.$$.fragment,s),c(B),c(bs.$$.fragment,s),c(gs.$$.fragment,s),c(Is.$$.fragment,s),c(Cs.$$.fragment,s),c($s.$$.fragment,s),c(Ns.$$.fragment,s),c(N),c(z),c(zs.$$.fragment,s),c(_s.$$.fragment,s),c(Rs.$$.fragment,s),c(Gs.$$.fragment,s),c(Ds.$$.fragment,s),c(Ls.$$.fragment,s),c(Fs.$$.fragment,s),c(Ps.$$.fragment,s),c(Ks.$$.fragment,s),c(ll.$$.fragment,s),c(nl.$$.fragment,s),c(tl.$$.fragment,s),c(Ml.$$.fragment,s),c(cl.$$.fragment,s),c(jl.$$.fragment,s),c(Tl.$$.fragment,s),c(ml.$$.fragment,s),ie=!1},d(s){s&&(n(d),n(i),n(w),n(h),n(A),n(g),n($),n(f),n(W),n(Il),n(kl),n(V),n(Cl),n(X),n($l),n(Al),n(Ql),n(Bl),n(Y),n(Zl),n(L),n(Nl),n(F),n(El),n(q),n(zl),n(Sl),n(O),n(_l),n(Rl),n(ss),n(vl),n(Wl),n(Hl),n(es),n(Vl),n(Xl),n(Gl),n(ps),n(Dl),n(Yl),n(Ll),n(cs),n(Fl),n(rs),n(ql),n(Pl),n(Ol),n(ys),n(Kl),n(Ts),n(sn),n(ln),n(os),n(nn),n(ms),n(en),n(us),n(tn),n(an),n(pn),n(Us),n(Mn),n(cn),n(rn),n(xs),n(Jn),n(hl),n(jn),n(fs),n(yn),n(Tn),n(on),n(ks),n(mn),n(un),n(dn),n(As),n(wn),n(Qs),n(Un),n(Bs),n(hn),n(Zs),n(xn),n(bn),n(xl),n(Es),n(fn),n(bl),n(gn),n(Ss),n(In),n(kn),n(Cn),n(vs),n($n),n(Ws),n(An),n(Hs),n(Qn),n(Vs),n(Bn),n(v),n(Zn),n(Xs),n(Nn),n(En),n(zn),n(Ys),n(Sn),n(_n),n(Rn),n(qs),n(vn),n(Wn),n(Os),n(Hn),n(Vn),n(sl),n(Xn),n(Gn),n(Dn),n(el),n(Yn),n(Ln),n(al),n(Fn),n(pl),n(qn),n(il),n(Pn),n(On),n(Kn),n(rl),n(se),n(Jl),n(le),n(ne),n(yl),n(ee),n(te),n(ol),n(ae),n(pe),n(gl)),n(p),m(I,s),m(C,s),ul[x].d(s),m(H,s),m(S,s),m(G,s),m(D,s),m(P,s),m(K,s),m(ls,s),m(ns,s),m(ts,s),m(as,s),m(is,s),m(Ms,s),m(Js,s),m(js,s),m(_,s),m(ds,s),m(ws,s),m(R,s),m(hs,s),dl[Q].d(s),m(bs,s),m(gs,s),m(Is,s),m(Cs,s),m($s,s),m(Ns,s),wl[Z].d(s),Ul[E].d(s),m(zs,s),m(_s,s),m(Rs,s),m(Gs,s),m(Ds,s),m(Ls,s),m(Fs,s),m(Ps,s),m(Ks,s),m(ll,s),m(nl,s),m(tl,s),m(Ml,s),m(cl,s),m(jl,s),m(Tl,s),m(ml,s)}}}const Xt='{"title":"ความสามารถพิเศษของตัวตัดคำแบบเร็ว (fast tokenizers)","local":"ความสามารถพเศษของตวตดคำแบบเรว-fast-tokenizers","sections":[{"title":"Batch encoding","local":"batch-encoding","sections":[],"depth":2},{"title":"โครงสร้างภายในของ pipeline token-classification","local":"โครงสรางภายในของ-pipeline-token-classification","sections":[{"title":"การคำนวณผลลัพธ์เบื้องต้นด้วยการใช้ pipeline","local":"การคำนวณผลลพธเบองตนดวยการใช-pipeline","sections":[],"depth":3},{"title":"จาก input สู่ ผลลัพธ์","local":"จาก-input-ส-ผลลพธ","sections":[],"depth":3},{"title":"การรวม entities","local":"การรวม-entities","sections":[],"depth":3}],"depth":2}],"depth":1}';function Gt(b,p,d){let i="pt";return gt(()=>{const w=new URLSearchParams(window.location.search);d(0,i=w.get("fw")||"pt")}),[i]}class sa extends It{constructor(p){super(),kt(this,p,Gt,Vt,ft,{})}}export{sa as component};
