import{s as xt,o as bt,n as oe}from"../chunks/scheduler.37c15a92.js";import{S as ft,i as gt,g as J,s as t,r as T,A as It,h as j,f as n,c as a,j as Ut,u as o,x as y,k as ye,y as kt,a as e,v as m,t as c,b as pe,d as r,w as u,p as ie}from"../chunks/index.2bf4358c.js";import{T as Te}from"../chunks/Tip.363c041f.js";import{Y as Me}from"../chunks/Youtube.1e50a667.js";import{C as U}from"../chunks/CodeBlock.4f5fc1ad.js";import{C as ht}from"../chunks/CourseFloatingBanner.15ba07e6.js";import{F as Ct}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as bl}from"../chunks/Heading.8ada512a.js";function $t(b){let p,d;return p=new ht({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(){T(p.$$.fragment)},l(i){o(p.$$.fragment,i)},m(i,w){m(p,i,w),d=!0},i(i){d||(r(p.$$.fragment,i),d=!0)},o(i){c(p.$$.fragment,i),d=!1},d(i){u(p,i)}}}function At(b){let p,d;return p=new ht({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(){T(p.$$.fragment)},l(i){o(p.$$.fragment,i)},m(i,w){m(p,i,w),d=!0},i(i){d||(r(p.$$.fragment,i),d=!0)},o(i){c(p.$$.fragment,i),d=!1},d(i){u(p,i)}}}function Qt(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}),y(p)!=="svelte-f2t0nd"&&(p.textContent=d)},m(i,w){e(i,p,w)},p:oe,d(i){i&&n(p)}}}function Bt(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}),y(p)!=="svelte-1exf7vn"&&(p.textContent=d),i=a(h),w=j(h,"P",{"data-svelte-h":!0}),y(w)!=="svelte-12r6sbi"&&(w.innerHTML=I)},m(h,C){e(h,p,C),e(h,i,C),e(h,w,C)},p:oe,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}),y(p)!=="svelte-77saqb"&&(p.innerHTML=d)},m(i,w){e(i,p,w)},p:oe,d(i){i&&n(p)}}}function Nt(b){let p,d;return p=new Me({props:{id:"PrX4CjrVnNc"}}),{c(){T(p.$$.fragment)},l(i){o(p.$$.fragment,i)},m(i,w){m(p,i,w),d=!0},i(i){d||(r(p.$$.fragment,i),d=!0)},o(i){c(p.$$.fragment,i),d=!1},d(i){u(p,i)}}}function Et(b){let p,d;return p=new Me({props:{id:"0E7ltQB7fM8"}}),{c(){T(p.$$.fragment)},l(i){o(p.$$.fragment,i)},m(i,w){m(p,i,w),d=!0},i(i){d||(r(p.$$.fragment,i),d=!0)},o(i){c(p.$$.fragment,i),d=!1},d(i){u(p,i)}}}function zt(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(),T(w.$$.fragment),I=t(),h=J("p"),h.innerHTML=C,A=t(),T(x.$$.fragment),k=t(),T(g.$$.fragment)},l(M){p=j(M,"P",{"data-svelte-h":!0}),y(p)!=="svelte-1h7g267"&&(p.innerHTML=d),i=a(M),o(w.$$.fragment,M),I=a(M),h=j(M,"P",{"data-svelte-h":!0}),y(h)!=="svelte-68y70g"&&(h.innerHTML=C),A=a(M),o(x.$$.fragment,M),k=a(M),o(g.$$.fragment,M)},m(M,f){e(M,p,f),e(M,i,f),m(w,M,f),e(M,I,f),e(M,h,f),e(M,A,f),m(x,M,f),e(M,k,f),m(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)),u(w,M),u(x,M),u(g,M)}}}function St(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(),T(w.$$.fragment),I=t(),h=J("p"),h.innerHTML=C,A=t(),T(x.$$.fragment),k=t(),T(g.$$.fragment)},l(M){p=j(M,"P",{"data-svelte-h":!0}),y(p)!=="svelte-datyhh"&&(p.innerHTML=d),i=a(M),o(w.$$.fragment,M),I=a(M),h=j(M,"P",{"data-svelte-h":!0}),y(h)!=="svelte-1b3jfne"&&(h.innerHTML=C),A=a(M),o(x.$$.fragment,M),k=a(M),o(g.$$.fragment,M)},m(M,f){e(M,p,f),e(M,i,f),m(w,M,f),e(M,I,f),e(M,h,f),e(M,A,f),m(x,M,f),e(M,k,f),m(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)),u(w,M),u(x,M),u(g,M)}}}function _t(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(){T(p.$$.fragment)},l(i){o(p.$$.fragment,i)},m(i,w){m(p,i,w),d=!0},i(i){d||(r(p.$$.fragment,i),d=!0)},o(i){c(p.$$.fragment,i),d=!1},d(i){u(p,i)}}}function Rt(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(){T(p.$$.fragment)},l(i){o(p.$$.fragment,i)},m(i,w){m(p,i,w),d=!0},i(i){d||(r(p.$$.fragment,i),d=!0)},o(i){c(p.$$.fragment,i),d=!1},d(i){u(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,me='เพื่อให้คุณเห็นภาพได้อย่างชัดเจน เราจะมาลองคำนวณผลลัพธ์ (reproduce) ของ <code>token-classification</code> (ซึ่งเราจะเรียกสั้นๆว่า <code>ner</code>) และสร้าง pipeline สำหรับ <code>question-answering</code> อย่างที่คุณได้เรียนมาแล้ว<a href="/course/chapter1">บทที่ 1</a>กัน',gl,H,Il,V,ue=`เราจะแยก tokenizer เป็นแบบช้า (slow) และแบบเร็ว (fast) ซึ่งแบบช้าหมายถึง tokenizer ที่เขียนด้วย Python และมาจาก 🤗 Transformers library ส่วนแบบเร็วหมายถึง tokenizer ที่เขียนด้วย Rust และมาจาก 🤗 Tokenizers library
ถ้าคุณยังจำตารางจาก<a href="/course/chapter5/3">บทที่ 5</a>ได้ ซึ่งเป็นตารางเปรียบเทียบเวลา ที่ tokenizer แบบเร็วและช้า ใช้ในการตัดคำชุดข้อมูล Drug Review คุณก็จะเห็นว่า ทำไมเราจึงเรียกพวกมันว่า แบบช้าและเร็ว`,kl,X,de='<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>',Cl,S,$l,G,Al,D,Ql,Y,we="output ที่ได้จากการตัดคำนั้นไม่ใช่ dictionary แต่เป็น Python object ที่เรียกว่า <code>BatchEncoding</code> ซึ่งเป็น subclass ของ dictionary อีกที ทำให้เราสามารถ index ตัว output ได้ <code>BatchEncoding</code> ต่างจาก dictionary ทั่วไปตรงที่ มันมี method เพิ่มเติม ที่ส่วนมากจะถูกใช้โดย fast tokenizer",Bl,L,Ue="นอกจาก fast tokenizer จะสามารถประมวลผลแบบ parallel ได้แล้ว ความสามารถหลักของของมันก็คือ มันจะบันทึก span (ตำแหน่งเริ่มและจบ) ของแต่ละ token ไว้ด้วย ข้อมูลเกี่ยวกับ span นี้เราเรียกว่า <em>offset mapping</em>",Zl,F,he="<em>offset mapping</em> สามารถช่วยให้เราโยง “คำ” ไปหา token ของมันได้ (ในที่นี้ “คำ” หมายถึง กลุ่มของตัวอักษรที่ถูกแบ่งด้วย space ซึ่งหนึ่งคำอาจจะถูกแบ่งออกเป็นหลาย token ได้) และนอกจากนั้น ก็ยังช่วยให้เราสามารถโยงตัวอักษร ไปหา token ได้ด้วยเช่นกัน",Nl,q,xe="มาดูตัวอย่างกัน:",El,P,zl,O,be="จะเห็นได้ว่า ผลลัพธ์ที่ได้จากตัดคำ คือ <code>BatchEncoding</code> อย่างที่เราได้กล่าวไว้ข้างต้น:",Sl,K,_l,ss,fe=`เนื่องจาก class <code>AutoTokenizer</code> จะเรียกใช้ตัว fast tokenizer เป็นค่าเริ่มต้น (by default) ซึ่งแปลว่า output ที่ได้คือ <code>BatchEncoding</code> และเราก็จะสามารถใช้ method พิเศษของมันได้
การจะเช็คว่า ตัวตัดคำเป็นแบบเร็วหรือช้า ทำได้สองวิธี วิธีแรกคือเช็คโดยการใช้ attribute <code>is_fast</code> ของ <code>tokenizer</code> :`,Rl,ls,vl,ns,Wl,es,ge="อีกวิธีคือเช็ค attribute <code>is_fast</code> ของ <code>encoding</code>:",Hl,ts,Vl,as,Xl,ps,Ie="มาดูกันว่า fast tokenizer ทำอะไรได้บ้าง อย่างแรกคือ เราสามารถเรียกดู token ได้ โดยไม่ต้องแปลงแต่ละ ID กลับไปเป็น token",Gl,is,Dl,Ms,Yl,cs,ke="ในตัวอย่างนี้ token ในตำแหน่งที่ 5 คือ <code>##yl</code> ซึ่งเป็นส่วนหนึ่งของคำว่า “Sylvain”",Ll,rs,Ce="นอกจากนั้น คุณยังสามารถใช้ method <code>word_ids()</code> เพื่อเรียกดูตำแหน่งของคำได้ด้วย",Fl,Js,ql,js,Pl,ys,$e=`คุณจะเห็นว่า token พิเศษอย่าง <code>[CLS]</code> และ <code>[SEP]</code> จะถูกจับคู่กับค่า <code>None</code> ส่วน token อื่นๆก็จะถูกจับคู่กับคำต้นตอของมัน
ข้อมูลนี้ มีประโยชน์ในการเอาไว้เช็คว่า token ที่เราสนใจนั้น อยู่ในตำแหน่งที่เป็นจุดเริ่มต้นของคำหรือไม่ และเอาไว้เช็คว่า token สองตัว มาจากคำเดียวกันหรือไม่
คุณสามารถเช็คข้อมูลพวกนี้ได้จากการดูที่สัญลักษณ์ <code>##</code> ที่อยู่ข้างหน้า token (ซึ่งแปลว่า token ตัวนี้ ไม่ได้อยู่ตรงจุดเริ่มต้นคำ) แต่วิธีนี้ ใช้ได้แค่กับตัวตัดคำที่มีโครงสร้างแบบโมเดล BERT เท่านั้น อย่างไรก็ตาม วิธีนี้ใช้ได้กับตัวตัดคำทุกประเภทที่เป็นแบบเร็ว`,Ol,Ts,Ae=`ในบทหน้า เราจะมาดูกันว่า เราจะใช้ feature นี้เพื่อจับคู่ label กับ token ใน task เช่น entity recognition (NER) and part-of-speech (POS) tagging ได้อย่างไร
นอกจากนั้น คุณยังสามารถใช้ feature นี้ เพื่อทำการปกปิด(mask) token ทุกตัวที่มาจากคำเดียวกัน เวลาใช้ masked language modeling ได้อีกด้วย (การทำแบบนี้เราเรียกว่า <em>whole word masking</em>)`,Kl,_,sn,os,Qe="นอกจากนั้นยังมี method คล้ายๆกัน ที่ชื่อ <code>sentence_ids()</code> ที่เอาไว้ใช้เพื่อโยง token ไปหาประโยคต้นตอ ในตัวอย่างของเรา คุณสามารถใช้ <code>token_type_ids</code> ซึ่งเป็นผลลัพธ์จากการรัน tokenizer แทน <code>sentence_ids()</code> ได้ เพราะทั้งสองให้ข้อมูลเดียวกัน",ln,ms,Be="ความสามารถสุดท้าย คือโยง token ไปหาแต่ละตัวอักษร หรือกลับกัน โดยการใช้ method <code>word_to_chars()</code> หรือ <code>token_to_chars()</code> และ <code>char_to_word()</code> หรือ <code>char_to_token()</code>",nn,us,Ze="ตัวอย่างเช่น method <code>word_ids()</code> สามารถบอกให้คุณรู้ว่า <code>##yl</code> เป็นส่วนหนึ่งของคำในตำแหน่งที่ 3 แต่ถ้าคุณอยากรู้ว่า เป็นคำไหนในประโยค คุณสามารถเช็คได้ดังนี้ :",en,ds,tn,ws,an,Us,Ne=`อย่างที่เราได้บอกข้างต้นแล้ว fast tokenizer สามารถทำแบบนี้ได้ เพราะมันเก็บข้อมูลเกี่ยวกับ span ของแต่ละ token เอาไว้ และบันทึกไว้ใน list ของ <em>offsets</em>
เพื่อที่จะอธิบายการใช้งานของ feature นี้ เรามาลองคำนวณผลลัพธ์ของ pipeline <code>token-classification</code> กัน`,pn,R,Mn,hs,cn,xs,Ee=`ใน<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 จะค่อนข้างซับซ้อนกว่า เราจะมาดูรายละเอียดกัน`,rn,Q,B,Ul,bs,Jn,fs,ze=`อันดับแรก เราจะใช้ 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:`,jn,gs,yn,Is,Tn,ks,Se=`คุณจะเห็นว่า โมเดลนี้สามารถบอกได้ว่า token ที่มาจาก คำว่า “Sylvain” นั้นเป็นชื่อคน และ token ที่มาจากคำว่า “Hugging Face” นั้นเป็นชื่อองค์กร และ “Brooklyn” เป็นชื่อสถานที่
เราสามารถใช้ pipeline นี้เพื่อรวมรวม token ที่มี entity ประเภทเดียวกันได้ด้วย`,on,Cs,mn,$s,un,As,_e=`<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>`,dn,Qs,Re="วิธีคำนวณคะแนนรวมแบบอื่น :",wn,Bs,ve="<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>",Un,Zs,We="มาดูกันว่า คุณจะสร้างผลลัพธ์แบบนี้ได้อย่างไร โดยไม่ใช้ฟังก์ชัน <code>pipeline()</code>!",hn,Ns,xn,Z,N,hl,Es,He=`แต่ละ batch ประกอบไปด้วย 1 ข้อความ ซึ่งมี token 19 ตัว และโมเดลที่เราใช้ สามารถทำนายได้ 9 หมวด (label) ดังนั้นขนาดของ output ที่ได้คือ 1 x 19 x 9
เช่นเดียวกับตอนที่เราใช้ text classification pipeline คือเราจะใช้ฟังก์ชัน softmax เพื่อที่จะแปลงค่า logits ไปเป็นค่าความเป็นไปได้ (probabilities) จากนั้นเราจะคำนวณค่า argmax เพื่อคำนวณคำทำนายสุดท้าย (เราใช้ argmax ของค่า logits ตรงนี้ได้ ก็เพราะการคำนวณ softmax จากคะแนนของแต่ละหมวด ไม่ได้ทำให้ลำดับของหมวดเปลี่ยน)`,bn,E,z,xl,zs,fn,Ss,Ve="attribute <code>model.config.id2label</code> คือตัวที่เก็บข้อมูลเกี่ยวกับ mapping ของ index ไปหา label ที่เราเอาไว้ใช้เพื่อดูว่า ผลลัพธ์นั้นถูกต้องหรือไม่",gn,_s,In,Rs,kn,vs,Xe="จาก output ข้างบน คุณจะเห็นว่า เรามีคำทำนายทั้งหมด 9 หมวด (label) โดยที่ label <code>O</code> หมายถึง token ที่ไม่ได้เป็น named entity (<code>O</code> มาจากคำว่า “outside”) และ แต่ละประเภทของ entity จะมีอย่างละสอง label (เรามีทั้งหมด 4 entity: miscellaneous, person, organization, and location)",Cn,Ws,Ge=`ถ้า 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 ประเภทชื่อคน)`,$n,Hs,De=`คุณอาจจะคิดว่า โมเดลของเราทำนายผิดในตัวอย่างนี้ เพราะว่ามันทำนายทั้งสี่ token ให้เป็น <code>I-PER</code> แต่จริงๆแล้ว ทำนายแบบนี้ก็ไม่ได้ผิดไปซะทั้งหมด
เพราะว่า การทำนายโดยใช้ label <code>B-</code> และ <code>I-</code> ในงาน NER มีสองแบบ คือ <em>IOB1</em> and <em>IOB2</em>`,An,Vs,Ye=`IOB1 (สีส้ม) เป็นแบบที่เราใช้ในตัวอย่างข้างบน ส่วน IOB2 (สีม่วง) แตกต่างตรงที่ <code>B-</code> เอาไว้ใช้แบ่ง entity สองตัวที่เป็นประเภทเดียว ให้ออกจากกัน
โมเดลที่เราใช้นั้นถูก fine-tune จากชุดข้อมูลที่มี label แบบ IOB2 ทำให้มันทำนาย <code>S</code> เป็น <code>I-PER</code>`,Qn,v,Le='<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"/>',Bn,Xs,Fe="ตอนนี้เราก็พร้อมที่จะคำนวณผลลัพธ์ ให้ได้แบบเดียวกับ pipeline แรกแล้ว โดยที่เราจะใช้คะแนนและ label ของแต่ละ token ที่ไม่ใช่ <code>O</code>เท่านั้น",Zn,Gs,Nn,Ds,En,Ys,qe=`จะเห็นว่าตอนนี้ เราได้ผลลัพธ์ที่คล้ายกับผลลัพธ์จาก pipeline ก่อนหน้านี้แล้ว ข้อแตกต่างเดียวก็คือ ผลลัพธ์จาก pipeline จะให้ข้อมูลเกี่ยวกับ ตำแหน่งเริ่มและจบในข้อความของแต่ละ entity ด้วย
ขั้นตอนต่อไป เราจะได้เรียกใช้ค่า offset mapping เพื่อตั้งค่าให้โมเดลคำนวณค่า offset เราจะเช็ต <code>return_offsets_mapping=True</code> ในตอนที่เราใช้รันตัวตัดคำ`,zn,Ls,Sn,Fs,_n,qs,Pe=`แต่ละ tuple ในนี้ จะบันทึกค่า span ของแต่ละ token ไว้ โดยที่พวก token พิเศษ ก็จะมีค่า span เป็น <code>(0, 0)</code>
ก่อนหน้านี้ เราได้เห็นว่า token ในตำแหน่งที่ 5 คือ <code>##yl</code> มีค่า offset เป็น <code>(12, 14)</code>
ถ้าคุณลอง slice ข้อความ input ด้วย index สองค่านี้`,Rn,Ps,vn,Os,Oe="คุณจะได้ส่วนของข้อความที่เป็น <code>yl</code> โดยที่ <code>##</code> จะถูกละออกจากผลลัพธ์:",Wn,Ks,Hn,sl,Ke="เราจะใช้วิธีนี้ เพื่อคำนวณผลลัพธ์ให้ได้ผลลัพธ์เหมือนใน pipeline:",Vn,ll,Xn,nl,Gn,el,st="ตอนนี้ เราก็ได้ผลลัพธ์แบบเดียวกับผลลัพธ์จาก pipeline แล้ว!",Dn,tl,Yn,al,lt=`ข้อมูลเกี่ยวกับ ตำแหน่งเริ่มและตำแหน่งจบของแต่ละ entity ที่เราได้จาก offset อาจจะไม่เป็นประโยชน์มากนัก
แต่ถ้าคุณต้องการจะรวม token ที่อยู่ในกลุ่ม entity เดียวกันเข้าด้วยกัน ข้อมูลจาก offset พวกนี้ จะมีโยชน์มาก และทำให้คุณไม่ต้องเขียนโค้ดเพิ่มเติมด้วย`,Ln,pl,nt=`ตัวอย่างเช่น ถ้าคุณต้องการจะรวม <code>Hu</code>, <code>##gging</code>, และ <code>Face</code> เข้าด้วยกัน คุณอาจจะเขียนกฎขึ้นมาว่า ให้รวม token แรกกับ token ที่สองเข้าด้วยกัน โดยลบ <code>##</code> ออก
แล้วให้รวม token ที่สามโดยใช้ช่องว่างในการเชื่อม เพราะ <code>Face</code> ไม่ได้เริ่มต้นด้วย  <code>##</code> อย่างไรก็ตามวิธีนี้ ใช้ได้แค่กับตัวตัดคำบางประเภทเท่านั้น
สำหรับตัวตัดคำอื่นๆเช่น แบบ SentencePiece หรือ Byte-Pair-Encoding เราก็จะต้องสร้างกฎขึ้นมาใหม่`,Fn,il,et=`การที่เราใช้ค่า 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 นี้`,qn,Ml,Pn,cl,On,rl,tt="ขั้นตอนต่อไป เราจะมาเขียนโค้ดเพื่อปรับแต่งผลลัพธ์จากโมเดลกัน (post-processing) โดยจะทำไปพร้อมๆกับการรวมกลุ่ม entity ด้วยวิธีต่อไปนี้",Kn,Jl,at="เริ่มจาก 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 ตัวใหม่)",se,jl,le,yl,pt="ตอนนี้ เราก็ได้ผลลัพธ์แบบเดียวกันกับ pipeline แล้ว!",ne,Tl,ee,ol,it=`อีกตัวอย่างหนึ่งของงานที่ค่า offset เป็นโยชน์มาก ก็คือ question answering
ในบทถัดไป คุณจะได้เรียนเกี่ยวกับ pipeline แบบเจาะลึกมากขึ้น ซึ่งคุณจะได้รู้จักกับ feature สุดท้ายของ tokenizers ใน 🤗 Transformers library ซึ่งก็คือ การจัดการกับ tokens ที่ถูกตัดออกจากข้อความ input`,te,fl,ae;I=new Ct({props:{fw:b[0]}}),C=new bl({props:{title:"ความสามารถพิเศษของตัวตัดคำแบบเร็ว (fast tokenizers)",local:"ความสามารถพเศษของตวตดคำแบบเรว-fast-tokenizers",headingTag:"h1"}});const Mt=[At,$t],ml=[];function ct(s,l){return s[0]==="pt"?0:1}x=ct(b),k=ml[x]=Mt[x](b),H=new Me({props:{id:"g8quOxoqhHQ"}}),S=new Te({props:{warning:!0,$$slots:{default:[Qt]},$$scope:{ctx:b}}}),G=new bl({props:{title:"Batch encoding",local:"batch-encoding",headingTag:"h2"}}),D=new Me({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 Te({props:{$$slots:{default:[Bt]},$$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 Te({props:{$$slots:{default:[Zt]},$$scope:{ctx:b}}}),hs=new bl({props:{title:"โครงสร้างภายในของ pipeline token-classification",local:"โครงสรางภายในของ-pipeline-token-classification",headingTag:"h2"}});const rt=[Et,Nt],ul=[];function Jt(s,l){return s[0]==="pt"?0:1}Q=Jt(b),B=ul[Q]=rt[Q](b),bs=new bl({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 bl({props:{title:"จาก input สู่ ผลลัพธ์",local:"จาก-input-ส-ผลลพธ",headingTag:"h3"}});const jt=[St,zt],dl=[];function yt(s,l){return s[0]==="pt"?0:1}Z=yt(b),N=dl[Z]=jt[Z](b);const Tt=[Rt,_t],wl=[];function ot(s,l){return s[0]==="pt"?0:1}return E=ot(b),z=wl[E]=Tt[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 bl({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}}),{c(){p=J("meta"),d=t(),i=J("p"),w=t(),T(I.$$.fragment),h=t(),T(C.$$.fragment),A=t(),k.c(),g=t(),$=J("p"),$.textContent=M,f=t(),W=J("p"),W.innerHTML=me,gl=t(),T(H.$$.fragment),Il=t(),V=J("p"),V.innerHTML=ue,kl=t(),X=J("table"),X.innerHTML=de,Cl=t(),T(S.$$.fragment),$l=t(),T(G.$$.fragment),Al=t(),T(D.$$.fragment),Ql=t(),Y=J("p"),Y.innerHTML=we,Bl=t(),L=J("p"),L.innerHTML=Ue,Zl=t(),F=J("p"),F.innerHTML=he,Nl=t(),q=J("p"),q.textContent=xe,El=t(),T(P.$$.fragment),zl=t(),O=J("p"),O.innerHTML=be,Sl=t(),T(K.$$.fragment),_l=t(),ss=J("p"),ss.innerHTML=fe,Rl=t(),T(ls.$$.fragment),vl=t(),T(ns.$$.fragment),Wl=t(),es=J("p"),es.innerHTML=ge,Hl=t(),T(ts.$$.fragment),Vl=t(),T(as.$$.fragment),Xl=t(),ps=J("p"),ps.textContent=Ie,Gl=t(),T(is.$$.fragment),Dl=t(),T(Ms.$$.fragment),Yl=t(),cs=J("p"),cs.innerHTML=ke,Ll=t(),rs=J("p"),rs.innerHTML=Ce,Fl=t(),T(Js.$$.fragment),ql=t(),T(js.$$.fragment),Pl=t(),ys=J("p"),ys.innerHTML=$e,Ol=t(),Ts=J("p"),Ts.innerHTML=Ae,Kl=t(),T(_.$$.fragment),sn=t(),os=J("p"),os.innerHTML=Qe,ln=t(),ms=J("p"),ms.innerHTML=Be,nn=t(),us=J("p"),us.innerHTML=Ze,en=t(),T(ds.$$.fragment),tn=t(),T(ws.$$.fragment),an=t(),Us=J("p"),Us.innerHTML=Ne,pn=t(),T(R.$$.fragment),Mn=t(),T(hs.$$.fragment),cn=t(),xs=J("p"),xs.innerHTML=Ee,rn=t(),B.c(),Ul=t(),T(bs.$$.fragment),Jn=t(),fs=J("p"),fs.innerHTML=ze,jn=t(),T(gs.$$.fragment),yn=t(),T(Is.$$.fragment),Tn=t(),ks=J("p"),ks.textContent=Se,on=t(),T(Cs.$$.fragment),mn=t(),T($s.$$.fragment),un=t(),As=J("p"),As.innerHTML=_e,dn=t(),Qs=J("p"),Qs.textContent=Re,wn=t(),Bs=J("ul"),Bs.innerHTML=ve,Un=t(),Zs=J("p"),Zs.innerHTML=We,hn=t(),T(Ns.$$.fragment),xn=t(),N.c(),hl=t(),Es=J("p"),Es.textContent=He,bn=t(),z.c(),xl=t(),T(zs.$$.fragment),fn=t(),Ss=J("p"),Ss.innerHTML=Ve,gn=t(),T(_s.$$.fragment),In=t(),T(Rs.$$.fragment),kn=t(),vs=J("p"),vs.innerHTML=Xe,Cn=t(),Ws=J("p"),Ws.innerHTML=Ge,$n=t(),Hs=J("p"),Hs.innerHTML=De,An=t(),Vs=J("p"),Vs.innerHTML=Ye,Qn=t(),v=J("div"),v.innerHTML=Le,Bn=t(),Xs=J("p"),Xs.innerHTML=Fe,Zn=t(),T(Gs.$$.fragment),Nn=t(),T(Ds.$$.fragment),En=t(),Ys=J("p"),Ys.innerHTML=qe,zn=t(),T(Ls.$$.fragment),Sn=t(),T(Fs.$$.fragment),_n=t(),qs=J("p"),qs.innerHTML=Pe,Rn=t(),T(Ps.$$.fragment),vn=t(),Os=J("p"),Os.innerHTML=Oe,Wn=t(),T(Ks.$$.fragment),Hn=t(),sl=J("p"),sl.textContent=Ke,Vn=t(),T(ll.$$.fragment),Xn=t(),T(nl.$$.fragment),Gn=t(),el=J("p"),el.textContent=st,Dn=t(),T(tl.$$.fragment),Yn=t(),al=J("p"),al.textContent=lt,Ln=t(),pl=J("p"),pl.innerHTML=nt,Fn=t(),il=J("p"),il.innerHTML=et,qn=t(),T(Ml.$$.fragment),Pn=t(),T(cl.$$.fragment),On=t(),rl=J("p"),rl.textContent=tt,Kn=t(),Jl=J("p"),Jl.innerHTML=at,se=t(),T(jl.$$.fragment),le=t(),yl=J("p"),yl.textContent=pt,ne=t(),T(Tl.$$.fragment),ee=t(),ol=J("p"),ol.textContent=it,te=t(),fl=J("p"),this.h()},l(s){const l=It("svelte-u9bgzb",document.head);p=j(l,"META",{name:!0,content:!0}),l.forEach(n),d=a(s),i=j(s,"P",{}),Ut(i).forEach(n),w=a(s),o(I.$$.fragment,s),h=a(s),o(C.$$.fragment,s),A=a(s),k.l(s),g=a(s),$=j(s,"P",{"data-svelte-h":!0}),y($)!=="svelte-h9gmx3"&&($.textContent=M),f=a(s),W=j(s,"P",{"data-svelte-h":!0}),y(W)!=="svelte-1c8cedk"&&(W.innerHTML=me),gl=a(s),o(H.$$.fragment,s),Il=a(s),V=j(s,"P",{"data-svelte-h":!0}),y(V)!=="svelte-150ttb5"&&(V.innerHTML=ue),kl=a(s),X=j(s,"TABLE",{"data-svelte-h":!0}),y(X)!=="svelte-1hjgutj"&&(X.innerHTML=de),Cl=a(s),o(S.$$.fragment,s),$l=a(s),o(G.$$.fragment,s),Al=a(s),o(D.$$.fragment,s),Ql=a(s),Y=j(s,"P",{"data-svelte-h":!0}),y(Y)!=="svelte-n0kj1"&&(Y.innerHTML=we),Bl=a(s),L=j(s,"P",{"data-svelte-h":!0}),y(L)!=="svelte-1o66ql"&&(L.innerHTML=Ue),Zl=a(s),F=j(s,"P",{"data-svelte-h":!0}),y(F)!=="svelte-a295y4"&&(F.innerHTML=he),Nl=a(s),q=j(s,"P",{"data-svelte-h":!0}),y(q)!=="svelte-10zibem"&&(q.textContent=xe),El=a(s),o(P.$$.fragment,s),zl=a(s),O=j(s,"P",{"data-svelte-h":!0}),y(O)!=="svelte-1t5x2j9"&&(O.innerHTML=be),Sl=a(s),o(K.$$.fragment,s),_l=a(s),ss=j(s,"P",{"data-svelte-h":!0}),y(ss)!=="svelte-1jvz5q8"&&(ss.innerHTML=fe),Rl=a(s),o(ls.$$.fragment,s),vl=a(s),o(ns.$$.fragment,s),Wl=a(s),es=j(s,"P",{"data-svelte-h":!0}),y(es)!=="svelte-zrjmw6"&&(es.innerHTML=ge),Hl=a(s),o(ts.$$.fragment,s),Vl=a(s),o(as.$$.fragment,s),Xl=a(s),ps=j(s,"P",{"data-svelte-h":!0}),y(ps)!=="svelte-1plxvsv"&&(ps.textContent=Ie),Gl=a(s),o(is.$$.fragment,s),Dl=a(s),o(Ms.$$.fragment,s),Yl=a(s),cs=j(s,"P",{"data-svelte-h":!0}),y(cs)!=="svelte-kf1bqt"&&(cs.innerHTML=ke),Ll=a(s),rs=j(s,"P",{"data-svelte-h":!0}),y(rs)!=="svelte-17mmjv3"&&(rs.innerHTML=Ce),Fl=a(s),o(Js.$$.fragment,s),ql=a(s),o(js.$$.fragment,s),Pl=a(s),ys=j(s,"P",{"data-svelte-h":!0}),y(ys)!=="svelte-k1ae1f"&&(ys.innerHTML=$e),Ol=a(s),Ts=j(s,"P",{"data-svelte-h":!0}),y(Ts)!=="svelte-ltnlgf"&&(Ts.innerHTML=Ae),Kl=a(s),o(_.$$.fragment,s),sn=a(s),os=j(s,"P",{"data-svelte-h":!0}),y(os)!=="svelte-9jzqw"&&(os.innerHTML=Qe),ln=a(s),ms=j(s,"P",{"data-svelte-h":!0}),y(ms)!=="svelte-dek4wm"&&(ms.innerHTML=Be),nn=a(s),us=j(s,"P",{"data-svelte-h":!0}),y(us)!=="svelte-1g3ppzk"&&(us.innerHTML=Ze),en=a(s),o(ds.$$.fragment,s),tn=a(s),o(ws.$$.fragment,s),an=a(s),Us=j(s,"P",{"data-svelte-h":!0}),y(Us)!=="svelte-j0fahj"&&(Us.innerHTML=Ne),pn=a(s),o(R.$$.fragment,s),Mn=a(s),o(hs.$$.fragment,s),cn=a(s),xs=j(s,"P",{"data-svelte-h":!0}),y(xs)!=="svelte-z4oh30"&&(xs.innerHTML=Ee),rn=a(s),B.l(s),Ul=a(s),o(bs.$$.fragment,s),Jn=a(s),fs=j(s,"P",{"data-svelte-h":!0}),y(fs)!=="svelte-kma7bw"&&(fs.innerHTML=ze),jn=a(s),o(gs.$$.fragment,s),yn=a(s),o(Is.$$.fragment,s),Tn=a(s),ks=j(s,"P",{"data-svelte-h":!0}),y(ks)!=="svelte-ur6zob"&&(ks.textContent=Se),on=a(s),o(Cs.$$.fragment,s),mn=a(s),o($s.$$.fragment,s),un=a(s),As=j(s,"P",{"data-svelte-h":!0}),y(As)!=="svelte-1mal0m7"&&(As.innerHTML=_e),dn=a(s),Qs=j(s,"P",{"data-svelte-h":!0}),y(Qs)!=="svelte-dlvgti"&&(Qs.textContent=Re),wn=a(s),Bs=j(s,"UL",{"data-svelte-h":!0}),y(Bs)!=="svelte-1khumke"&&(Bs.innerHTML=ve),Un=a(s),Zs=j(s,"P",{"data-svelte-h":!0}),y(Zs)!=="svelte-be19nb"&&(Zs.innerHTML=We),hn=a(s),o(Ns.$$.fragment,s),xn=a(s),N.l(s),hl=a(s),Es=j(s,"P",{"data-svelte-h":!0}),y(Es)!=="svelte-1u8790f"&&(Es.textContent=He),bn=a(s),z.l(s),xl=a(s),o(zs.$$.fragment,s),fn=a(s),Ss=j(s,"P",{"data-svelte-h":!0}),y(Ss)!=="svelte-1e33soq"&&(Ss.innerHTML=Ve),gn=a(s),o(_s.$$.fragment,s),In=a(s),o(Rs.$$.fragment,s),kn=a(s),vs=j(s,"P",{"data-svelte-h":!0}),y(vs)!=="svelte-lngqu3"&&(vs.innerHTML=Xe),Cn=a(s),Ws=j(s,"P",{"data-svelte-h":!0}),y(Ws)!=="svelte-1os7m2b"&&(Ws.innerHTML=Ge),$n=a(s),Hs=j(s,"P",{"data-svelte-h":!0}),y(Hs)!=="svelte-10ka1xu"&&(Hs.innerHTML=De),An=a(s),Vs=j(s,"P",{"data-svelte-h":!0}),y(Vs)!=="svelte-10r2xqd"&&(Vs.innerHTML=Ye),Qn=a(s),v=j(s,"DIV",{class:!0,"data-svelte-h":!0}),y(v)!=="svelte-qf2tof"&&(v.innerHTML=Le),Bn=a(s),Xs=j(s,"P",{"data-svelte-h":!0}),y(Xs)!=="svelte-1thg1mp"&&(Xs.innerHTML=Fe),Zn=a(s),o(Gs.$$.fragment,s),Nn=a(s),o(Ds.$$.fragment,s),En=a(s),Ys=j(s,"P",{"data-svelte-h":!0}),y(Ys)!=="svelte-7dmzyn"&&(Ys.innerHTML=qe),zn=a(s),o(Ls.$$.fragment,s),Sn=a(s),o(Fs.$$.fragment,s),_n=a(s),qs=j(s,"P",{"data-svelte-h":!0}),y(qs)!=="svelte-wy2mk2"&&(qs.innerHTML=Pe),Rn=a(s),o(Ps.$$.fragment,s),vn=a(s),Os=j(s,"P",{"data-svelte-h":!0}),y(Os)!=="svelte-1kqqje8"&&(Os.innerHTML=Oe),Wn=a(s),o(Ks.$$.fragment,s),Hn=a(s),sl=j(s,"P",{"data-svelte-h":!0}),y(sl)!=="svelte-174b3vx"&&(sl.textContent=Ke),Vn=a(s),o(ll.$$.fragment,s),Xn=a(s),o(nl.$$.fragment,s),Gn=a(s),el=j(s,"P",{"data-svelte-h":!0}),y(el)!=="svelte-ttwot1"&&(el.textContent=st),Dn=a(s),o(tl.$$.fragment,s),Yn=a(s),al=j(s,"P",{"data-svelte-h":!0}),y(al)!=="svelte-166o6gk"&&(al.textContent=lt),Ln=a(s),pl=j(s,"P",{"data-svelte-h":!0}),y(pl)!=="svelte-nvmqhm"&&(pl.innerHTML=nt),Fn=a(s),il=j(s,"P",{"data-svelte-h":!0}),y(il)!=="svelte-g86u14"&&(il.innerHTML=et),qn=a(s),o(Ml.$$.fragment,s),Pn=a(s),o(cl.$$.fragment,s),On=a(s),rl=j(s,"P",{"data-svelte-h":!0}),y(rl)!=="svelte-1v7asck"&&(rl.textContent=tt),Kn=a(s),Jl=j(s,"P",{"data-svelte-h":!0}),y(Jl)!=="svelte-8upx01"&&(Jl.innerHTML=at),se=a(s),o(jl.$$.fragment,s),le=a(s),yl=j(s,"P",{"data-svelte-h":!0}),y(yl)!=="svelte-1irzrok"&&(yl.textContent=pt),ne=a(s),o(Tl.$$.fragment,s),ee=a(s),ol=j(s,"P",{"data-svelte-h":!0}),y(ol)!=="svelte-royqcg"&&(ol.textContent=it),te=a(s),fl=j(s,"P",{}),Ut(fl).forEach(n),this.h()},h(){ye(p,"name","hf:doc:metadata"),ye(p,"content",Wt),ye(v,"class","flex justify-center")},m(s,l){kt(document.head,p),e(s,d,l),e(s,i,l),e(s,w,l),m(I,s,l),e(s,h,l),m(C,s,l),e(s,A,l),ml[x].m(s,l),e(s,g,l),e(s,$,l),e(s,f,l),e(s,W,l),e(s,gl,l),m(H,s,l),e(s,Il,l),e(s,V,l),e(s,kl,l),e(s,X,l),e(s,Cl,l),m(S,s,l),e(s,$l,l),m(G,s,l),e(s,Al,l),m(D,s,l),e(s,Ql,l),e(s,Y,l),e(s,Bl,l),e(s,L,l),e(s,Zl,l),e(s,F,l),e(s,Nl,l),e(s,q,l),e(s,El,l),m(P,s,l),e(s,zl,l),e(s,O,l),e(s,Sl,l),m(K,s,l),e(s,_l,l),e(s,ss,l),e(s,Rl,l),m(ls,s,l),e(s,vl,l),m(ns,s,l),e(s,Wl,l),e(s,es,l),e(s,Hl,l),m(ts,s,l),e(s,Vl,l),m(as,s,l),e(s,Xl,l),e(s,ps,l),e(s,Gl,l),m(is,s,l),e(s,Dl,l),m(Ms,s,l),e(s,Yl,l),e(s,cs,l),e(s,Ll,l),e(s,rs,l),e(s,Fl,l),m(Js,s,l),e(s,ql,l),m(js,s,l),e(s,Pl,l),e(s,ys,l),e(s,Ol,l),e(s,Ts,l),e(s,Kl,l),m(_,s,l),e(s,sn,l),e(s,os,l),e(s,ln,l),e(s,ms,l),e(s,nn,l),e(s,us,l),e(s,en,l),m(ds,s,l),e(s,tn,l),m(ws,s,l),e(s,an,l),e(s,Us,l),e(s,pn,l),m(R,s,l),e(s,Mn,l),m(hs,s,l),e(s,cn,l),e(s,xs,l),e(s,rn,l),ul[Q].m(s,l),e(s,Ul,l),m(bs,s,l),e(s,Jn,l),e(s,fs,l),e(s,jn,l),m(gs,s,l),e(s,yn,l),m(Is,s,l),e(s,Tn,l),e(s,ks,l),e(s,on,l),m(Cs,s,l),e(s,mn,l),m($s,s,l),e(s,un,l),e(s,As,l),e(s,dn,l),e(s,Qs,l),e(s,wn,l),e(s,Bs,l),e(s,Un,l),e(s,Zs,l),e(s,hn,l),m(Ns,s,l),e(s,xn,l),dl[Z].m(s,l),e(s,hl,l),e(s,Es,l),e(s,bn,l),wl[E].m(s,l),e(s,xl,l),m(zs,s,l),e(s,fn,l),e(s,Ss,l),e(s,gn,l),m(_s,s,l),e(s,In,l),m(Rs,s,l),e(s,kn,l),e(s,vs,l),e(s,Cn,l),e(s,Ws,l),e(s,$n,l),e(s,Hs,l),e(s,An,l),e(s,Vs,l),e(s,Qn,l),e(s,v,l),e(s,Bn,l),e(s,Xs,l),e(s,Zn,l),m(Gs,s,l),e(s,Nn,l),m(Ds,s,l),e(s,En,l),e(s,Ys,l),e(s,zn,l),m(Ls,s,l),e(s,Sn,l),m(Fs,s,l),e(s,_n,l),e(s,qs,l),e(s,Rn,l),m(Ps,s,l),e(s,vn,l),e(s,Os,l),e(s,Wn,l),m(Ks,s,l),e(s,Hn,l),e(s,sl,l),e(s,Vn,l),m(ll,s,l),e(s,Xn,l),m(nl,s,l),e(s,Gn,l),e(s,el,l),e(s,Dn,l),m(tl,s,l),e(s,Yn,l),e(s,al,l),e(s,Ln,l),e(s,pl,l),e(s,Fn,l),e(s,il,l),e(s,qn,l),m(Ml,s,l),e(s,Pn,l),m(cl,s,l),e(s,On,l),e(s,rl,l),e(s,Kn,l),e(s,Jl,l),e(s,se,l),m(jl,s,l),e(s,le,l),e(s,yl,l),e(s,ne,l),m(Tl,s,l),e(s,ee,l),e(s,ol,l),e(s,te,l),e(s,fl,l),ae=!0},p(s,[l]){const mt={};l&1&&(mt.fw=s[0]),I.$set(mt);let ce=x;x=ct(s),x!==ce&&(ie(),c(ml[ce],1,1,()=>{ml[ce]=null}),pe(),k=ml[x],k||(k=ml[x]=Mt[x](s),k.c()),r(k,1),k.m(g.parentNode,g));const ut={};l&2&&(ut.$$scope={dirty:l,ctx:s}),S.$set(ut);const dt={};l&2&&(dt.$$scope={dirty:l,ctx:s}),_.$set(dt);const wt={};l&2&&(wt.$$scope={dirty:l,ctx:s}),R.$set(wt);let re=Q;Q=Jt(s),Q!==re&&(ie(),c(ul[re],1,1,()=>{ul[re]=null}),pe(),B=ul[Q],B||(B=ul[Q]=rt[Q](s),B.c()),r(B,1),B.m(Ul.parentNode,Ul));let Je=Z;Z=yt(s),Z!==Je&&(ie(),c(dl[Je],1,1,()=>{dl[Je]=null}),pe(),N=dl[Z],N||(N=dl[Z]=jt[Z](s),N.c()),r(N,1),N.m(hl.parentNode,hl));let je=E;E=ot(s),E!==je&&(ie(),c(wl[je],1,1,()=>{wl[je]=null}),pe(),z=wl[E],z||(z=wl[E]=Tt[E](s),z.c()),r(z,1),z.m(xl.parentNode,xl))},i(s){ae||(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),ae=!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),ae=!1},d(s){s&&(n(d),n(i),n(w),n(h),n(A),n(g),n($),n(f),n(W),n(gl),n(Il),n(V),n(kl),n(X),n(Cl),n($l),n(Al),n(Ql),n(Y),n(Bl),n(L),n(Zl),n(F),n(Nl),n(q),n(El),n(zl),n(O),n(Sl),n(_l),n(ss),n(Rl),n(vl),n(Wl),n(es),n(Hl),n(Vl),n(Xl),n(ps),n(Gl),n(Dl),n(Yl),n(cs),n(Ll),n(rs),n(Fl),n(ql),n(Pl),n(ys),n(Ol),n(Ts),n(Kl),n(sn),n(os),n(ln),n(ms),n(nn),n(us),n(en),n(tn),n(an),n(Us),n(pn),n(Mn),n(cn),n(xs),n(rn),n(Ul),n(Jn),n(fs),n(jn),n(yn),n(Tn),n(ks),n(on),n(mn),n(un),n(As),n(dn),n(Qs),n(wn),n(Bs),n(Un),n(Zs),n(hn),n(xn),n(hl),n(Es),n(bn),n(xl),n(fn),n(Ss),n(gn),n(In),n(kn),n(vs),n(Cn),n(Ws),n($n),n(Hs),n(An),n(Vs),n(Qn),n(v),n(Bn),n(Xs),n(Zn),n(Nn),n(En),n(Ys),n(zn),n(Sn),n(_n),n(qs),n(Rn),n(vn),n(Os),n(Wn),n(Hn),n(sl),n(Vn),n(Xn),n(Gn),n(el),n(Dn),n(Yn),n(al),n(Ln),n(pl),n(Fn),n(il),n(qn),n(Pn),n(On),n(rl),n(Kn),n(Jl),n(se),n(le),n(yl),n(ne),n(ee),n(ol),n(te),n(fl)),n(p),u(I,s),u(C,s),ml[x].d(s),u(H,s),u(S,s),u(G,s),u(D,s),u(P,s),u(K,s),u(ls,s),u(ns,s),u(ts,s),u(as,s),u(is,s),u(Ms,s),u(Js,s),u(js,s),u(_,s),u(ds,s),u(ws,s),u(R,s),u(hs,s),ul[Q].d(s),u(bs,s),u(gs,s),u(Is,s),u(Cs,s),u($s,s),u(Ns,s),dl[Z].d(s),wl[E].d(s),u(zs,s),u(_s,s),u(Rs,s),u(Gs,s),u(Ds,s),u(Ls,s),u(Fs,s),u(Ps,s),u(Ks,s),u(ll,s),u(nl,s),u(tl,s),u(Ml,s),u(cl,s),u(jl,s),u(Tl,s)}}}const Wt='{"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 Ht(b,p,d){let i="pt";return bt(()=>{const w=new URLSearchParams(window.location.search);d(0,i=w.get("fw")||"pt")}),[i]}class Pt extends ft{constructor(p){super(),gt(this,p,Ht,vt,xt,{})}}export{Pt as component};
