Buckets:
| import{s as xa,o as ba}from"../chunks/scheduler.ef843396.js";import{S as ga,i as fa,e as J,s as a,c as T,h as Ia,a as j,d as n,b as t,f as Ua,g as o,j as y,k as gl,l as ka,m as e,n as m,o as c,q as ce,t as r,p as u,r as re}from"../chunks/index.e046a64d.js";import{Y as Je}from"../chunks/Youtube.5dc4ef22.js";import{C as w}from"../chunks/CodeBlock.655932ae.js";import{C as ha}from"../chunks/CourseFloatingBanner.42872f72.js";import{F as Ca}from"../chunks/FrameworkSwitchCourse.da189476.js";import{H as fl,E as $a}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.e11afc57.js";function Aa(I){let i,d;return i=new ha({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(i.$$.fragment)},l(p){o(i.$$.fragment,p)},m(p,U){m(i,p,U),d=!0},i(p){d||(r(i.$$.fragment,p),d=!0)},o(p){c(i.$$.fragment,p),d=!1},d(p){u(i,p)}}}function Qa(I){let i,d;return i=new ha({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(i.$$.fragment)},l(p){o(i.$$.fragment,p)},m(p,U){m(i,p,U),d=!0},i(p){d||(r(i.$$.fragment,p),d=!0)},o(p){c(i.$$.fragment,p),d=!1},d(p){u(i,p)}}}function Ba(I){let i,d;return i=new Je({props:{id:"PrX4CjrVnNc"}}),{c(){T(i.$$.fragment)},l(p){o(i.$$.fragment,p)},m(p,U){m(i,p,U),d=!0},i(p){d||(r(i.$$.fragment,p),d=!0)},o(p){c(i.$$.fragment,p),d=!1},d(p){u(i,p)}}}function Za(I){let i,d;return i=new Je({props:{id:"0E7ltQB7fM8"}}),{c(){T(i.$$.fragment)},l(p){o(i.$$.fragment,p)},m(p,U){m(i,p,U),d=!0},i(p){d||(r(i.$$.fragment,p),d=!0)},o(p){c(i.$$.fragment,p),d=!1},d(p){u(i,p)}}}function Na(I){let i,d='อันดับแรก เราจะเอาข้อความ input มาตัดคำก่อน แล้วส่งต่อผลลัพธ์ที่ได้ไปให้กับโมเดล ขั้นตอนนี้จะเหมือนที่เราทำกันใน<a href="/course/chapter2">บทที่ 2</a> โดยเริ่มจากสร้างตัวตัดคำและโมเดลขึ้นมา โดยใช้คลาส <code>TFAutoXxx</code>',p,U,k,f,A="เนื่องจากเราใช้ <code>TFAutoModelForTokenClassification</code> หลังจากรัน เราจะได้ค่า logit (set of logits) สำหรับแต่ละ token ที่อยู่ในข้อความ input",$,h,g,b,C;return U=new w({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">"dbmdz/bert-large-cased-finetuned-conll03-english"</span> | |
| tokenizer = AutoTokenizer.from_pretrained(model_checkpoint) | |
| model = TFAutoModelForTokenClassification.from_pretrained(model_checkpoint) | |
| example = <span class="hljs-string">"My name is Sylvain and I work at Hugging Face in Brooklyn."</span> | |
| inputs = tokenizer(example, return_tensors=<span class="hljs-string">"tf"</span>) | |
| outputs = model(**inputs)`,wrap:!1}}),h=new w({props:{code:"cHJpbnQoaW5wdXRzJTVCJTIyaW5wdXRfaWRzJTIyJTVELnNoYXBlKSUwQXByaW50KG91dHB1dHMubG9naXRzLnNoYXBlKQ==",highlighted:`<span class="hljs-built_in">print</span>(inputs[<span class="hljs-string">"input_ids"</span>].shape) | |
| <span class="hljs-built_in">print</span>(outputs.logits.shape)`,wrap:!1}}),b=new w({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(){i=J("p"),i.innerHTML=d,p=a(),T(U.$$.fragment),k=a(),f=J("p"),f.innerHTML=A,$=a(),T(h.$$.fragment),g=a(),T(b.$$.fragment)},l(M){i=j(M,"P",{"data-svelte-h":!0}),y(i)!=="svelte-1h7g267"&&(i.innerHTML=d),p=t(M),o(U.$$.fragment,M),k=t(M),f=j(M,"P",{"data-svelte-h":!0}),y(f)!=="svelte-68y70g"&&(f.innerHTML=A),$=t(M),o(h.$$.fragment,M),g=t(M),o(b.$$.fragment,M)},m(M,x){e(M,i,x),e(M,p,x),m(U,M,x),e(M,k,x),e(M,f,x),e(M,$,x),m(h,M,x),e(M,g,x),m(b,M,x),C=!0},i(M){C||(r(U.$$.fragment,M),r(h.$$.fragment,M),r(b.$$.fragment,M),C=!0)},o(M){c(U.$$.fragment,M),c(h.$$.fragment,M),c(b.$$.fragment,M),C=!1},d(M){M&&(n(i),n(p),n(k),n(f),n($),n(g)),u(U,M),u(h,M),u(b,M)}}}function Ea(I){let i,d='อันดับแรก เราจะเอาข้อความ input มาตัดคำก่อน แล้วส่งต่อผลลัพธ์ที่ได้ไปให้กับโมเดล ขั้นตอนนี้จะเหมือนที่เราทำกันใน<a href="/course/chapter2">บทที่ 2</a> โดยเริ่มจากสร้างตัวตัดคำและโมเดลขึ้นมา โดยใช้คลาส <code>AutoXxx</code>',p,U,k,f,A="เนื่องจากเราใช้ <code>AutoModelForTokenClassification</code> หลังจากรัน เราจะได้ค่า logit (set of logits) สำหรับแต่ละ token ที่อยู่ในข้อความ input",$,h,g,b,C;return U=new w({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">"dbmdz/bert-large-cased-finetuned-conll03-english"</span> | |
| tokenizer = AutoTokenizer.from_pretrained(model_checkpoint) | |
| model = AutoModelForTokenClassification.from_pretrained(model_checkpoint) | |
| example = <span class="hljs-string">"My name is Sylvain and I work at Hugging Face in Brooklyn."</span> | |
| inputs = tokenizer(example, return_tensors=<span class="hljs-string">"pt"</span>) | |
| outputs = model(**inputs)`,wrap:!1}}),h=new w({props:{code:"cHJpbnQoaW5wdXRzJTVCJTIyaW5wdXRfaWRzJTIyJTVELnNoYXBlKSUwQXByaW50KG91dHB1dHMubG9naXRzLnNoYXBlKQ==",highlighted:`<span class="hljs-built_in">print</span>(inputs[<span class="hljs-string">"input_ids"</span>].shape) | |
| <span class="hljs-built_in">print</span>(outputs.logits.shape)`,wrap:!1}}),b=new w({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(){i=J("p"),i.innerHTML=d,p=a(),T(U.$$.fragment),k=a(),f=J("p"),f.innerHTML=A,$=a(),T(h.$$.fragment),g=a(),T(b.$$.fragment)},l(M){i=j(M,"P",{"data-svelte-h":!0}),y(i)!=="svelte-datyhh"&&(i.innerHTML=d),p=t(M),o(U.$$.fragment,M),k=t(M),f=j(M,"P",{"data-svelte-h":!0}),y(f)!=="svelte-1b3jfne"&&(f.innerHTML=A),$=t(M),o(h.$$.fragment,M),g=t(M),o(b.$$.fragment,M)},m(M,x){e(M,i,x),e(M,p,x),m(U,M,x),e(M,k,x),e(M,f,x),e(M,$,x),m(h,M,x),e(M,g,x),m(b,M,x),C=!0},i(M){C||(r(U.$$.fragment,M),r(h.$$.fragment,M),r(b.$$.fragment,M),C=!0)},o(M){c(U.$$.fragment,M),c(h.$$.fragment,M),c(b.$$.fragment,M),C=!1},d(M){M&&(n(i),n(p),n(k),n(f),n($),n(g)),u(U,M),u(h,M),u(b,M)}}}function za(I){let i,d;return i=new w({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(i.$$.fragment)},l(p){o(i.$$.fragment,p)},m(p,U){m(i,p,U),d=!0},i(p){d||(r(i.$$.fragment,p),d=!0)},o(p){c(i.$$.fragment,p),d=!1},d(p){u(i,p)}}}function Sa(I){let i,d;return i=new w({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(i.$$.fragment)},l(p){o(i.$$.fragment,p)},m(p,U){m(i,p,U),d=!0},i(p){d||(r(i.$$.fragment,p),d=!0)},o(p){c(i.$$.fragment,p),d=!1},d(p){u(i,p)}}}function _a(I){let i,d,p,U,k,f,A,$,h,g,b,C,M=`ในบทนี้ เราจะเรียนเกี่ยวกับความสามารถของ tokenizer ต่างๆ ใน 🤗 Transformers library กัน | |
| ในบทก่อนๆ คุณได้ลองใช้ tokenizer เพื่อแยกข้อความให้เป็นคำๆ และเพื่อแปลง ID ของคำให้กลับไปเป็นข้อความแล้ว | |
| จริงๆแล้ว tokenizer นั้นยังมีความสามารถอีกหลายอย่าง โดยเฉพาะ tokenizer จาก 🤗 Tokenizers library`,x,W,me='เพื่อให้คุณเห็นภาพได้อย่างชัดเจน เราจะมาลองคำนวณผลลัพธ์ (reproduce) ของ <code>token-classification</code> (ซึ่งเราจะเรียกสั้นๆว่า <code>ner</code>) และสร้าง pipeline สำหรับ <code>question-answering</code> อย่างที่คุณได้เรียนมาแล้ว<a href="/course/chapter1">บทที่ 1</a>กัน',kl,H,Cl,V,ue=`เราจะแยก tokenizer เป็นแบบช้า (slow) และแบบเร็ว (fast) ซึ่งแบบช้าหมายถึง tokenizer ที่เขียนด้วย Python และมาจาก 🤗 Transformers library ส่วนแบบเร็วหมายถึง tokenizer ที่เขียนด้วย Rust และมาจาก 🤗 Tokenizers library | |
| ถ้าคุณยังจำตารางจาก<a href="/course/chapter5/3">บทที่ 5</a>ได้ ซึ่งเป็นตารางเปรียบเทียบเวลา ที่ tokenizer แบบเร็วและช้า ใช้ในการตัดคำชุดข้อมูล Drug Review คุณก็จะเห็นว่า ทำไมเราจึงเรียกพวกมันว่า แบบช้าและเร็ว`,$l,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>',Al,S,we="<p>⚠️ ถ้าคุณเปรียบเทียบ tokenizer ทั้งสองแบบ โดยดูจากความเร็วในการตัดคำของประโยคเดียว คุณอาจจะไม่เห็นความแตกต่างมาก และบางที fast tokenizer อาจจะช้ากว่า slow tokenizer ด้วยซ้ำ คุณจะเห็นความแตกต่างที่แท้จริง ก็เมื่อลองรันกับ input ที่มีขนาดใหญ่ระดับหนึ่ง เพราะการทำแบบนี้ จะทำให้การประมวลผลแบบ parallel ถูกเรียกใช้งาน</p>",Ql,G,Bl,D,Zl,Y,Ue="output ที่ได้จากการตัดคำนั้นไม่ใช่ dictionary แต่เป็น Python object ที่เรียกว่า <code>BatchEncoding</code> ซึ่งเป็น subclass ของ dictionary อีกที ทำให้เราสามารถ index ตัว output ได้ <code>BatchEncoding</code> ต่างจาก dictionary ทั่วไปตรงที่ มันมี method เพิ่มเติม ที่ส่วนมากจะถูกใช้โดย fast tokenizer",Nl,L,he="นอกจาก fast tokenizer จะสามารถประมวลผลแบบ parallel ได้แล้ว ความสามารถหลักของของมันก็คือ มันจะบันทึก span (ตำแหน่งเริ่มและจบ) ของแต่ละ token ไว้ด้วย ข้อมูลเกี่ยวกับ span นี้เราเรียกว่า <em>offset mapping</em>",El,F,xe="<em>offset mapping</em> สามารถช่วยให้เราโยง “คำ” ไปหา token ของมันได้ (ในที่นี้ “คำ” หมายถึง กลุ่มของตัวอักษรที่ถูกแบ่งด้วย space ซึ่งหนึ่งคำอาจจะถูกแบ่งออกเป็นหลาย token ได้) และนอกจากนั้น ก็ยังช่วยให้เราสามารถโยงตัวอักษร ไปหา token ได้ด้วยเช่นกัน",zl,q,be="มาดูตัวอย่างกัน:",Sl,P,_l,O,ge="จะเห็นได้ว่า ผลลัพธ์ที่ได้จากตัดคำ คือ <code>BatchEncoding</code> อย่างที่เราได้กล่าวไว้ข้างต้น:",Rl,K,vl,ss,fe=`เนื่องจาก class <code>AutoTokenizer</code> จะเรียกใช้ตัว fast tokenizer เป็นค่าเริ่มต้น (by default) ซึ่งแปลว่า output ที่ได้คือ <code>BatchEncoding</code> และเราก็จะสามารถใช้ method พิเศษของมันได้ | |
| การจะเช็คว่า ตัวตัดคำเป็นแบบเร็วหรือช้า ทำได้สองวิธี วิธีแรกคือเช็คโดยการใช้ attribute <code>is_fast</code> ของ <code>tokenizer</code> :`,Wl,ls,Hl,ns,Vl,es,Ie="อีกวิธีคือเช็ค attribute <code>is_fast</code> ของ <code>encoding</code>:",Xl,as,Gl,ts,Dl,ps,ke="มาดูกันว่า fast tokenizer ทำอะไรได้บ้าง อย่างแรกคือ เราสามารถเรียกดู token ได้ โดยไม่ต้องแปลงแต่ละ ID กลับไปเป็น token",Yl,is,Ll,Ms,Fl,cs,Ce="ในตัวอย่างนี้ token ในตำแหน่งที่ 5 คือ <code>##yl</code> ซึ่งเป็นส่วนหนึ่งของคำว่า “Sylvain”",ql,rs,$e="นอกจากนั้น คุณยังสามารถใช้ method <code>word_ids()</code> เพื่อเรียกดูตำแหน่งของคำได้ด้วย",Pl,Js,Ol,js,Kl,ys,Ae=`คุณจะเห็นว่า token พิเศษอย่าง <code>[CLS]</code> และ <code>[SEP]</code> จะถูกจับคู่กับค่า <code>None</code> ส่วน token อื่นๆก็จะถูกจับคู่กับคำต้นตอของมัน | |
| ข้อมูลนี้ มีประโยชน์ในการเอาไว้เช็คว่า token ที่เราสนใจนั้น อยู่ในตำแหน่งที่เป็นจุดเริ่มต้นของคำหรือไม่ และเอาไว้เช็คว่า token สองตัว มาจากคำเดียวกันหรือไม่ | |
| คุณสามารถเช็คข้อมูลพวกนี้ได้จากการดูที่สัญลักษณ์ <code>##</code> ที่อยู่ข้างหน้า token (ซึ่งแปลว่า token ตัวนี้ ไม่ได้อยู่ตรงจุดเริ่มต้นคำ) แต่วิธีนี้ ใช้ได้แค่กับตัวตัดคำที่มีโครงสร้างแบบโมเดล BERT เท่านั้น อย่างไรก็ตาม วิธีนี้ใช้ได้กับตัวตัดคำทุกประเภทที่เป็นแบบเร็ว`,sn,Ts,Qe=`ในบทหน้า เราจะมาดูกันว่า เราจะใช้ feature นี้เพื่อจับคู่ label กับ token ใน task เช่น entity recognition (NER) and part-of-speech (POS) tagging ได้อย่างไร | |
| นอกจากนั้น คุณยังสามารถใช้ feature นี้ เพื่อทำการปกปิด(mask) token ทุกตัวที่มาจากคำเดียวกัน เวลาใช้ masked language modeling ได้อีกด้วย (การทำแบบนี้เราเรียกว่า <em>whole word masking</em>)`,ln,_,Be=`<p>นิยามของ “คำ” นั้นค่อนข้างยากที่จะกำหนด ตัวอย่างเช่น “I’ll” (เป็นการเขียนแบบสั้นของ “I will” ) ควรนับเป็นหนึ่งหรือสองคำ ? | |
| คำตอบของคำถามนี้นั้น ขึ้นกับว่า คุณใช้ตัวตัดคำแบบไหน และมีการปรับแต่งข้อความ input ก่อนที่จะทำการตัดคำหรือไม่ | |
| ตัวตัดคำบางตัว อาจจะแยกคำด้วย space บางตัวอาจจะแยกคำด้วยเครื่องหมายวรรคตอน (punctuation) ก่อนแล้วจึงแบ่งด้วย space ในกรณีหลังนี้ “I’ll” ก็จะถูกแบ่งเป็นสองคำ</p> <p>✏️ <strong>ลองทำดู!</strong> ให้คุณลองสร้างตัวตัดคำจาก checkpoint ของ <code>bert-base-cased</code> and <code>roberta-base</code> แล้วให้ลองตัดคำว่า ”81s” คุณสังเกตเห็นอะไรบ้าง และ ID ของคำที่ได้คืออะไร</p>`,nn,os,Ze="นอกจากนั้นยังมี method คล้ายๆกัน ที่ชื่อ <code>sentence_ids()</code> ที่เอาไว้ใช้เพื่อโยง token ไปหาประโยคต้นตอ ในตัวอย่างของเรา คุณสามารถใช้ <code>token_type_ids</code> ซึ่งเป็นผลลัพธ์จากการรัน tokenizer แทน <code>sentence_ids()</code> ได้ เพราะทั้งสองให้ข้อมูลเดียวกัน",en,ms,Ne="ความสามารถสุดท้าย คือโยง token ไปหาแต่ละตัวอักษร หรือกลับกัน โดยการใช้ method <code>word_to_chars()</code> หรือ <code>token_to_chars()</code> และ <code>char_to_word()</code> หรือ <code>char_to_token()</code>",an,us,Ee="ตัวอย่างเช่น method <code>word_ids()</code> สามารถบอกให้คุณรู้ว่า <code>##yl</code> เป็นส่วนหนึ่งของคำในตำแหน่งที่ 3 แต่ถ้าคุณอยากรู้ว่า เป็นคำไหนในประโยค คุณสามารถเช็คได้ดังนี้ :",tn,ds,pn,ws,Mn,Us,ze=`อย่างที่เราได้บอกข้างต้นแล้ว fast tokenizer สามารถทำแบบนี้ได้ เพราะมันเก็บข้อมูลเกี่ยวกับ span ของแต่ละ token เอาไว้ และบันทึกไว้ใน list ของ <em>offsets</em> | |
| เพื่อที่จะอธิบายการใช้งานของ feature นี้ เรามาลองคำนวณผลลัพธ์ของ pipeline <code>token-classification</code> กัน`,cn,R,Se="<p>✏️ <strong>ลองทำดู!</strong> ให้คุณลองคิดข้อความตัวอย่างขึ้นมา แล้วถามตัวเองว่า token ตัวไหนคู่กับ ID ของคำไหน และ คุณจะหา span ของแต่ละคำได้อย่างไร นอกจากนั้น ให้คุณลองสร้างสองประโยคเพื่อเป็น input ให้กับตัวตัดคำของคุณ แล้วดูว่า ID ของประโยคนั้นเหมาะสมหรือไม่</p>",rn,hs,Jn,xs,_e=`ใน<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,yn,gs,Re=`อันดับแรก เราจะใช้ 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:`,Tn,fs,on,Is,mn,ks,ve=`คุณจะเห็นว่า โมเดลนี้สามารถบอกได้ว่า token ที่มาจาก คำว่า “Sylvain” นั้นเป็นชื่อคน และ token ที่มาจากคำว่า “Hugging Face” นั้นเป็นชื่อองค์กร และ “Brooklyn” เป็นชื่อสถานที่ | |
| เราสามารถใช้ pipeline นี้เพื่อรวมรวม token ที่มี entity ประเภทเดียวกันได้ด้วย`,un,Cs,dn,$s,wn,As,We=`<code>aggregation_strategy</code> ที่เราเลือก จะเปลี่ยนคะแนนของแต่ละกลุ่ม entity ด้วย | |
| ถ้าเราตั้งค่าให้เป็นแบบ <code>"simple"</code> มันจะคำนวณคะแนน โดยการเฉลี่ยคะแนนของแต่ละ token ที่นับเป็น entity เดียวกัน ตัวอย่างเช่น คะแนนของคำว่า “Sylvain” คือค่าเฉลี่ยของคะแนนจาก token ย่อยซึ่งก็คือ <code>S</code>, <code>##yl</code>, <code>##va</code>, and <code>##in</code>`,Un,Qs,He="วิธีคำนวณคะแนนรวมแบบอื่น :",hn,Bs,Ve="<li><code>"first"</code> จะใช้คะแนนของ token แรกเท่านั้น เป็นคะแนนรวม (เช่น คะแนนรวมของคำว่า “Sylvain” ก็จะเป็น 0.993828 ซึ่งมาจากคะแนนของ <code>S</code>)</li> <li><code>"max"</code> จะใช้คะแนนของ token ที่มีคะแนนมากที่สุด (เช่น คะแนนรวมของคำว่า “Hugging Face” ก็จะเป็น 0.98879766 ซึ่งมาจากคะแนนของ “Face”)</li> <li><code>"average"</code> จะใช้ค่าเฉลี่ยของแต่ละ token ที่เป็นส่วนของ entity นั้น เป็นคะแนนรวมของ entity (สำหรับคำว่า “Sylvain” คะแนนรวมแบบเฉลี่ยจะไม่ต่างจากคะแนนรวมแบบ <code>"simple"</code> แต่คำว่า “Hugging Face” จำได้คะแนน 0.9819 ซึ่งเป็นค่าเฉลี่ย ของ “Hugging” 0.975 และ “Face” 0.98879)</li>",xn,Zs,Xe="มาดูกันว่า คุณจะสร้างผลลัพธ์แบบนี้ได้อย่างไร โดยไม่ใช้ฟังก์ชัน <code>pipeline()</code>!",bn,Ns,gn,Z,N,xl,Es,Ge=`แต่ละ 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,In,Ss,De="attribute <code>model.config.id2label</code> คือตัวที่เก็บข้อมูลเกี่ยวกับ mapping ของ index ไปหา label ที่เราเอาไว้ใช้เพื่อดูว่า ผลลัพธ์นั้นถูกต้องหรือไม่",kn,_s,Cn,Rs,$n,vs,Ye="จาก output ข้างบน คุณจะเห็นว่า เรามีคำทำนายทั้งหมด 9 หมวด (label) โดยที่ label <code>O</code> หมายถึง token ที่ไม่ได้เป็น named entity (<code>O</code> มาจากคำว่า “outside”) และ แต่ละประเภทของ entity จะมีอย่างละสอง label (เรามีทั้งหมด 4 entity: miscellaneous, person, organization, and location)",An,Ws,Le=`ถ้า 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 ประเภทชื่อคน)`,Qn,Hs,Fe=`คุณอาจจะคิดว่า โมเดลของเราทำนายผิดในตัวอย่างนี้ เพราะว่ามันทำนายทั้งสี่ token ให้เป็น <code>I-PER</code> แต่จริงๆแล้ว ทำนายแบบนี้ก็ไม่ได้ผิดไปซะทั้งหมด | |
| เพราะว่า การทำนายโดยใช้ label <code>B-</code> และ <code>I-</code> ในงาน NER มีสองแบบ คือ <em>IOB1</em> and <em>IOB2</em>`,Bn,Vs,qe=`IOB1 (สีส้ม) เป็นแบบที่เราใช้ในตัวอย่างข้างบน ส่วน IOB2 (สีม่วง) แตกต่างตรงที่ <code>B-</code> เอาไว้ใช้แบ่ง entity สองตัวที่เป็นประเภทเดียว ให้ออกจากกัน | |
| โมเดลที่เราใช้นั้นถูก fine-tune จากชุดข้อมูลที่มี label แบบ IOB2 ทำให้มันทำนาย <code>S</code> เป็น <code>I-PER</code>`,Zn,v,Pe='<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"/>',Nn,Xs,Oe="ตอนนี้เราก็พร้อมที่จะคำนวณผลลัพธ์ ให้ได้แบบเดียวกับ pipeline แรกแล้ว โดยที่เราจะใช้คะแนนและ label ของแต่ละ token ที่ไม่ใช่ <code>O</code>เท่านั้น",En,Gs,zn,Ds,Sn,Ys,Ke=`จะเห็นว่าตอนนี้ เราได้ผลลัพธ์ที่คล้ายกับผลลัพธ์จาก pipeline ก่อนหน้านี้แล้ว ข้อแตกต่างเดียวก็คือ ผลลัพธ์จาก pipeline จะให้ข้อมูลเกี่ยวกับ ตำแหน่งเริ่มและจบในข้อความของแต่ละ entity ด้วย | |
| ขั้นตอนต่อไป เราจะได้เรียกใช้ค่า offset mapping เพื่อตั้งค่าให้โมเดลคำนวณค่า offset เราจะเช็ต <code>return_offsets_mapping=True</code> ในตอนที่เราใช้รันตัวตัดคำ`,_n,Ls,Rn,Fs,vn,qs,sa=`แต่ละ tuple ในนี้ จะบันทึกค่า span ของแต่ละ token ไว้ โดยที่พวก token พิเศษ ก็จะมีค่า span เป็น <code>(0, 0)</code> | |
| ก่อนหน้านี้ เราได้เห็นว่า token ในตำแหน่งที่ 5 คือ <code>##yl</code> มีค่า offset เป็น <code>(12, 14)</code> | |
| ถ้าคุณลอง slice ข้อความ input ด้วย index สองค่านี้`,Wn,Ps,Hn,Os,la="คุณจะได้ส่วนของข้อความที่เป็น <code>yl</code> โดยที่ <code>##</code> จะถูกละออกจากผลลัพธ์:",Vn,Ks,Xn,sl,na="เราจะใช้วิธีนี้ เพื่อคำนวณผลลัพธ์ให้ได้ผลลัพธ์เหมือนใน pipeline:",Gn,ll,Dn,nl,Yn,el,ea="ตอนนี้ เราก็ได้ผลลัพธ์แบบเดียวกับผลลัพธ์จาก pipeline แล้ว!",Ln,al,Fn,tl,aa=`ข้อมูลเกี่ยวกับ ตำแหน่งเริ่มและตำแหน่งจบของแต่ละ entity ที่เราได้จาก offset อาจจะไม่เป็นประโยชน์มากนัก | |
| แต่ถ้าคุณต้องการจะรวม token ที่อยู่ในกลุ่ม entity เดียวกันเข้าด้วยกัน ข้อมูลจาก offset พวกนี้ จะมีโยชน์มาก และทำให้คุณไม่ต้องเขียนโค้ดเพิ่มเติมด้วย`,qn,pl,ta=`ตัวอย่างเช่น ถ้าคุณต้องการจะรวม <code>Hu</code>, <code>##gging</code>, และ <code>Face</code> เข้าด้วยกัน คุณอาจจะเขียนกฎขึ้นมาว่า ให้รวม token แรกกับ token ที่สองเข้าด้วยกัน โดยลบ <code>##</code> ออก | |
| แล้วให้รวม token ที่สามโดยใช้ช่องว่างในการเชื่อม เพราะ <code>Face</code> ไม่ได้เริ่มต้นด้วย <code>##</code> อย่างไรก็ตามวิธีนี้ ใช้ได้แค่กับตัวตัดคำบางประเภทเท่านั้น | |
| สำหรับตัวตัดคำอื่นๆเช่น แบบ SentencePiece หรือ Byte-Pair-Encoding เราก็จะต้องสร้างกฎขึ้นมาใหม่`,Pn,il,pa=`การที่เราใช้ค่า 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 นี้`,On,Ml,Kn,cl,se,rl,ia="ขั้นตอนต่อไป เราจะมาเขียนโค้ดเพื่อปรับแต่งผลลัพธ์จากโมเดลกัน (post-processing) โดยจะทำไปพร้อมๆกับการรวมกลุ่ม entity ด้วยวิธีต่อไปนี้",le,Jl,Ma="เริ่มจาก 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 ตัวใหม่)",ne,jl,ee,yl,ca="ตอนนี้ เราก็ได้ผลลัพธ์แบบเดียวกันกับ pipeline แล้ว!",ae,Tl,te,ol,ra=`อีกตัวอย่างหนึ่งของงานที่ค่า offset เป็นโยชน์มาก ก็คือ question answering | |
| ในบทถัดไป คุณจะได้เรียนเกี่ยวกับ pipeline แบบเจาะลึกมากขึ้น ซึ่งคุณจะได้รู้จักกับ feature สุดท้ายของ tokenizers ใน 🤗 Transformers library ซึ่งก็คือ การจัดการกับ tokens ที่ถูกตัดออกจากข้อความ input`,pe,ml,ie,Il,Me;k=new Ca({props:{fw:I[0]}}),A=new fl({props:{title:"ความสามารถพิเศษของตัวตัดคำแบบเร็ว (fast tokenizers)",local:"ความสามารถพเศษของตวตดคำแบบเรว-fast-tokenizers",headingTag:"h1"}});const Ja=[Qa,Aa],ul=[];function ja(s,l){return s[0]==="pt"?0:1}h=ja(I),g=ul[h]=Ja[h](I),H=new Je({props:{id:"g8quOxoqhHQ"}}),G=new fl({props:{title:"Batch encoding",local:"batch-encoding",headingTag:"h2"}}),D=new Je({props:{id:"3umI3tm27Vw"}}),P=new w({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">"bert-base-cased"</span>) | |
| example = <span class="hljs-string">"My name is Sylvain and I work at Hugging Face in Brooklyn."</span> | |
| encoding = tokenizer(example) | |
| <span class="hljs-built_in">print</span>(<span class="hljs-built_in">type</span>(encoding))`,wrap:!1}}),K=new w({props:{code:"JTNDY2xhc3MlMjAndHJhbnNmb3JtZXJzLnRva2VuaXphdGlvbl91dGlsc19iYXNlLkJhdGNoRW5jb2RpbmcnJTNF",highlighted:'<<span class="hljs-keyword">class</span> <span class="hljs-string">'transformers.tokenization_utils_base.BatchEncoding'</span>>',wrap:!1}}),ls=new w({props:{code:"dG9rZW5pemVyLmlzX2Zhc3Q=",highlighted:"tokenizer.is_fast",wrap:!1}}),ns=new w({props:{code:"VHJ1ZQ==",highlighted:'<span class="hljs-literal">True</span>',wrap:!1}}),as=new w({props:{code:"ZW5jb2RpbmcuaXNfZmFzdA==",highlighted:"encoding.is_fast",wrap:!1}}),ts=new w({props:{code:"VHJ1ZQ==",highlighted:'<span class="hljs-literal">True</span>',wrap:!1}}),is=new w({props:{code:"ZW5jb2RpbmcudG9rZW5zKCk=",highlighted:"encoding.tokens()",wrap:!1}}),Ms=new w({props:{code:"JTVCJyU1QkNMUyU1RCclMkMlMjAnTXknJTJDJTIwJ25hbWUnJTJDJTIwJ2lzJyUyQyUyMCdTJyUyQyUyMCclMjMlMjN5bCclMkMlMjAnJTIzJTIzdmEnJTJDJTIwJyUyMyUyM2luJyUyQyUyMCdhbmQnJTJDJTIwJ0knJTJDJTIwJ3dvcmsnJTJDJTIwJ2F0JyUyQyUyMCdIdSclMkMlMjAnJTIzJTIzZ2dpbmcnJTJDJTIwJ0ZhY2UnJTJDJTIwJ2luJyUyQyUwQSUyMCdCcm9va2x5biclMkMlMjAnLiclMkMlMjAnJTVCU0VQJTVEJyU1RA==",highlighted:`[<span class="hljs-string">'[CLS]'</span>, <span class="hljs-string">'My'</span>, <span class="hljs-string">'name'</span>, <span class="hljs-string">'is'</span>, <span class="hljs-string">'S'</span>, <span class="hljs-string">'##yl'</span>, <span class="hljs-string">'##va'</span>, <span class="hljs-string">'##in'</span>, <span class="hljs-string">'and'</span>, <span class="hljs-string">'I'</span>, <span class="hljs-string">'work'</span>, <span class="hljs-string">'at'</span>, <span class="hljs-string">'Hu'</span>, <span class="hljs-string">'##gging'</span>, <span class="hljs-string">'Face'</span>, <span class="hljs-string">'in'</span>, | |
| <span class="hljs-string">'Brooklyn'</span>, <span class="hljs-string">'.'</span>, <span class="hljs-string">'[SEP]'</span>]`,wrap:!1}}),Js=new w({props:{code:"ZW5jb2Rpbmcud29yZF9pZHMoKQ==",highlighted:"encoding.word_ids()",wrap:!1}}),js=new w({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}}),ds=new w({props:{code:"c3RhcnQlMkMlMjBlbmQlMjAlM0QlMjBlbmNvZGluZy53b3JkX3RvX2NoYXJzKDMpJTBBZXhhbXBsZSU1QnN0YXJ0JTNBZW5kJTVE",highlighted:`start, end = encoding.word_to_chars(<span class="hljs-number">3</span>) | |
| example[start:end]`,wrap:!1}}),ws=new w({props:{code:"U3lsdmFpbg==",highlighted:"Sylvain",wrap:!1}}),hs=new fl({props:{title:"โครงสร้างภายในของ pipeline token-classification",local:"โครงสรางภายในของ-pipeline-token-classification",headingTag:"h2"}});const ya=[Za,Ba],dl=[];function Ta(s,l){return s[0]==="pt"?0:1}Q=Ta(I),B=dl[Q]=ya[Q](I),bs=new fl({props:{title:"การคำนวณผลลัพธ์เบื้องต้นด้วยการใช้ pipeline",local:"การคำนวณผลลพธเบองตนดวยการใช-pipeline",headingTag:"h3"}}),fs=new w({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">"token-classification"</span>) | |
| token_classifier(<span class="hljs-string">"My name is Sylvain and I work at Hugging Face in Brooklyn."</span>)`,wrap:!1}}),Is=new w({props:{code:"JTVCJTdCJ2VudGl0eSclM0ElMjAnSS1QRVInJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTk5MzgyOCUyQyUyMCdpbmRleCclM0ElMjA0JTJDJTIwJ3dvcmQnJTNBJTIwJ1MnJTJDJTIwJ3N0YXJ0JyUzQSUyMDExJTJDJTIwJ2VuZCclM0ElMjAxMiU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5ODE1NDc2JTJDJTIwJ2luZGV4JyUzQSUyMDUlMkMlMjAnd29yZCclM0ElMjAnJTIzJTIzeWwnJTJDJTIwJ3N0YXJ0JyUzQSUyMDEyJTJDJTIwJ2VuZCclM0ElMjAxNCU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5NTkwNzI1JTJDJTIwJ2luZGV4JyUzQSUyMDYlMkMlMjAnd29yZCclM0ElMjAnJTIzJTIzdmEnJTJDJTIwJ3N0YXJ0JyUzQSUyMDE0JTJDJTIwJ2VuZCclM0ElMjAxNiU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5OTIzMjclMkMlMjAnaW5kZXgnJTNBJTIwNyUyQyUyMCd3b3JkJyUzQSUyMCclMjMlMjNpbiclMkMlMjAnc3RhcnQnJTNBJTIwMTYlMkMlMjAnZW5kJyUzQSUyMDE4JTdEJTJDJTBBJTIwJTdCJ2VudGl0eSclM0ElMjAnSS1PUkcnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTczODkzMzQlMkMlMjAnaW5kZXgnJTNBJTIwMTIlMkMlMjAnd29yZCclM0ElMjAnSHUnJTJDJTIwJ3N0YXJ0JyUzQSUyMDMzJTJDJTIwJ2VuZCclM0ElMjAzNSU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktT1JHJyUyQyUyMCdzY29yZSclM0ElMjAwLjk3NjExNSUyQyUyMCdpbmRleCclM0ElMjAxMyUyQyUyMCd3b3JkJyUzQSUyMCclMjMlMjNnZ2luZyclMkMlMjAnc3RhcnQnJTNBJTIwMzUlMkMlMjAnZW5kJyUzQSUyMDQwJTdEJTJDJTBBJTIwJTdCJ2VudGl0eSclM0ElMjAnSS1PUkcnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTg4Nzk3NjYlMkMlMjAnaW5kZXgnJTNBJTIwMTQlMkMlMjAnd29yZCclM0ElMjAnRmFjZSclMkMlMjAnc3RhcnQnJTNBJTIwNDElMkMlMjAnZW5kJyUzQSUyMDQ1JTdEJTJDJTBBJTIwJTdCJ2VudGl0eSclM0ElMjAnSS1MT0MnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTkzMjEwNTUlMkMlMjAnaW5kZXgnJTNBJTIwMTYlMkMlMjAnd29yZCclM0ElMjAnQnJvb2tseW4nJTJDJTIwJ3N0YXJ0JyUzQSUyMDQ5JTJDJTIwJ2VuZCclM0ElMjA1NyU3RCU1RA==",highlighted:`[{<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-PER'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.9993828</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">4</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'S'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">11</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">12</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-PER'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.99815476</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">5</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'##yl'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">12</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">14</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-PER'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.99590725</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">6</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'##va'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">14</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">16</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-PER'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.9992327</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">7</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'##in'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">16</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">18</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-ORG'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.97389334</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">12</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'Hu'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">33</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">35</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-ORG'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.976115</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">13</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'##gging'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">35</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">40</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-ORG'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.98879766</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">14</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'Face'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">41</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">45</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-LOC'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.99321055</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">16</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'Brooklyn'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">49</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">57</span>}]`,wrap:!1}}),Cs=new w({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">"token-classification"</span>, aggregation_strategy=<span class="hljs-string">"simple"</span>) | |
| token_classifier(<span class="hljs-string">"My name is Sylvain and I work at Hugging Face in Brooklyn."</span>)`,wrap:!1}}),$s=new w({props:{code:"JTVCJTdCJ2VudGl0eV9ncm91cCclM0ElMjAnUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5ODE2OTQlMkMlMjAnd29yZCclM0ElMjAnU3lsdmFpbiclMkMlMjAnc3RhcnQnJTNBJTIwMTElMkMlMjAnZW5kJyUzQSUyMDE4JTdEJTJDJTBBJTIwJTdCJ2VudGl0eV9ncm91cCclM0ElMjAnT1JHJyUyQyUyMCdzY29yZSclM0ElMjAwLjk3OTYwMjA0JTJDJTIwJ3dvcmQnJTNBJTIwJ0h1Z2dpbmclMjBGYWNlJyUyQyUyMCdzdGFydCclM0ElMjAzMyUyQyUyMCdlbmQnJTNBJTIwNDUlN0QlMkMlMEElMjAlN0InZW50aXR5X2dyb3VwJyUzQSUyMCdMT0MnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTkzMjEwNTUlMkMlMjAnd29yZCclM0ElMjAnQnJvb2tseW4nJTJDJTIwJ3N0YXJ0JyUzQSUyMDQ5JTJDJTIwJ2VuZCclM0ElMjA1NyU3RCU1RA==",highlighted:`[{<span class="hljs-string">'entity_group'</span>: <span class="hljs-string">'PER'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.9981694</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'Sylvain'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">11</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">18</span>}, | |
| {<span class="hljs-string">'entity_group'</span>: <span class="hljs-string">'ORG'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.97960204</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'Hugging Face'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">33</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">45</span>}, | |
| {<span class="hljs-string">'entity_group'</span>: <span class="hljs-string">'LOC'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.99321055</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'Brooklyn'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">49</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">57</span>}]`,wrap:!1}}),Ns=new fl({props:{title:"จาก input สู่ ผลลัพธ์",local:"จาก-input-ส-ผลลพธ",headingTag:"h3"}});const oa=[Ea,Na],wl=[];function ma(s,l){return s[0]==="pt"?0:1}Z=ma(I),N=wl[Z]=oa[Z](I);const ua=[Sa,za],Ul=[];function da(s,l){return s[0]==="pt"?0:1}return E=da(I),z=Ul[E]=ua[E](I),zs=new w({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 w({props:{code:"bW9kZWwuY29uZmlnLmlkMmxhYmVs",highlighted:"model.config.id2label",wrap:!1}}),Rs=new w({props:{code:"JTdCMCUzQSUyMCdPJyUyQyUwQSUyMDElM0ElMjAnQi1NSVNDJyUyQyUwQSUyMDIlM0ElMjAnSS1NSVNDJyUyQyUwQSUyMDMlM0ElMjAnQi1QRVInJTJDJTBBJTIwNCUzQSUyMCdJLVBFUiclMkMlMEElMjA1JTNBJTIwJ0ItT1JHJyUyQyUwQSUyMDYlM0ElMjAnSS1PUkcnJTJDJTBBJTIwNyUzQSUyMCdCLUxPQyclMkMlMEElMjA4JTNBJTIwJ0ktTE9DJyU3RA==",highlighted:`{<span class="hljs-number">0</span>: <span class="hljs-string">'O'</span>, | |
| <span class="hljs-number">1</span>: <span class="hljs-string">'B-MISC'</span>, | |
| <span class="hljs-number">2</span>: <span class="hljs-string">'I-MISC'</span>, | |
| <span class="hljs-number">3</span>: <span class="hljs-string">'B-PER'</span>, | |
| <span class="hljs-number">4</span>: <span class="hljs-string">'I-PER'</span>, | |
| <span class="hljs-number">5</span>: <span class="hljs-string">'B-ORG'</span>, | |
| <span class="hljs-number">6</span>: <span class="hljs-string">'I-ORG'</span>, | |
| <span class="hljs-number">7</span>: <span class="hljs-string">'B-LOC'</span>, | |
| <span class="hljs-number">8</span>: <span class="hljs-string">'I-LOC'</span>}`,wrap:!1}}),Gs=new w({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">"O"</span>: | |
| results.append( | |
| {<span class="hljs-string">"entity"</span>: label, <span class="hljs-string">"score"</span>: probabilities[idx][pred], <span class="hljs-string">"word"</span>: tokens[idx]} | |
| ) | |
| <span class="hljs-built_in">print</span>(results)`,wrap:!1}}),Ds=new w({props:{code:"JTVCJTdCJ2VudGl0eSclM0ElMjAnSS1QRVInJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTk5MzgyOCUyQyUyMCdpbmRleCclM0ElMjA0JTJDJTIwJ3dvcmQnJTNBJTIwJ1MnJTdEJTJDJTBBJTIwJTdCJ2VudGl0eSclM0ElMjAnSS1QRVInJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTk4MTU0NzYlMkMlMjAnaW5kZXgnJTNBJTIwNSUyQyUyMCd3b3JkJyUzQSUyMCclMjMlMjN5bCclN0QlMkMlMEElMjAlN0InZW50aXR5JyUzQSUyMCdJLVBFUiclMkMlMjAnc2NvcmUnJTNBJTIwMC45OTU5MDcyNSUyQyUyMCdpbmRleCclM0ElMjA2JTJDJTIwJ3dvcmQnJTNBJTIwJyUyMyUyM3ZhJyU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5OTIzMjclMkMlMjAnaW5kZXgnJTNBJTIwNyUyQyUyMCd3b3JkJyUzQSUyMCclMjMlMjNpbiclN0QlMkMlMEElMjAlN0InZW50aXR5JyUzQSUyMCdJLU9SRyclMkMlMjAnc2NvcmUnJTNBJTIwMC45NzM4OTMzNCUyQyUyMCdpbmRleCclM0ElMjAxMiUyQyUyMCd3b3JkJyUzQSUyMCdIdSclN0QlMkMlMEElMjAlN0InZW50aXR5JyUzQSUyMCdJLU9SRyclMkMlMjAnc2NvcmUnJTNBJTIwMC45NzYxMTUlMkMlMjAnaW5kZXgnJTNBJTIwMTMlMkMlMjAnd29yZCclM0ElMjAnJTIzJTIzZ2dpbmcnJTdEJTJDJTBBJTIwJTdCJ2VudGl0eSclM0ElMjAnSS1PUkcnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTg4Nzk3NjYlMkMlMjAnaW5kZXgnJTNBJTIwMTQlMkMlMjAnd29yZCclM0ElMjAnRmFjZSclN0QlMkMlMEElMjAlN0InZW50aXR5JyUzQSUyMCdJLUxPQyclMkMlMjAnc2NvcmUnJTNBJTIwMC45OTMyMTA1NSUyQyUyMCdpbmRleCclM0ElMjAxNiUyQyUyMCd3b3JkJyUzQSUyMCdCcm9va2x5biclN0QlNUQ=",highlighted:`[{<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-PER'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.9993828</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">4</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'S'</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-PER'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.99815476</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">5</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'##yl'</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-PER'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.99590725</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">6</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'##va'</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-PER'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.9992327</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">7</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'##in'</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-ORG'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.97389334</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">12</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'Hu'</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-ORG'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.976115</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">13</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'##gging'</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-ORG'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.98879766</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">14</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'Face'</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-LOC'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.99321055</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">16</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'Brooklyn'</span>}]`,wrap:!1}}),Ls=new w({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">"offset_mapping"</span>]`,wrap:!1}}),Fs=new w({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 w({props:{code:"ZXhhbXBsZSU1QjEyJTNBMTQlNUQ=",highlighted:'example[<span class="hljs-number">12</span>:<span class="hljs-number">14</span>]',wrap:!1}}),Ks=new w({props:{code:"eWw=",highlighted:"yl",wrap:!1}}),ll=new w({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">"offset_mapping"</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">"O"</span>: | |
| start, end = offsets[idx] | |
| results.append( | |
| { | |
| <span class="hljs-string">"entity"</span>: label, | |
| <span class="hljs-string">"score"</span>: probabilities[idx][pred], | |
| <span class="hljs-string">"word"</span>: tokens[idx], | |
| <span class="hljs-string">"start"</span>: start, | |
| <span class="hljs-string">"end"</span>: end, | |
| } | |
| ) | |
| <span class="hljs-built_in">print</span>(results)`,wrap:!1}}),nl=new w({props:{code:"JTVCJTdCJ2VudGl0eSclM0ElMjAnSS1QRVInJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTk5MzgyOCUyQyUyMCdpbmRleCclM0ElMjA0JTJDJTIwJ3dvcmQnJTNBJTIwJ1MnJTJDJTIwJ3N0YXJ0JyUzQSUyMDExJTJDJTIwJ2VuZCclM0ElMjAxMiU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5ODE1NDc2JTJDJTIwJ2luZGV4JyUzQSUyMDUlMkMlMjAnd29yZCclM0ElMjAnJTIzJTIzeWwnJTJDJTIwJ3N0YXJ0JyUzQSUyMDEyJTJDJTIwJ2VuZCclM0ElMjAxNCU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5NTkwNzI1JTJDJTIwJ2luZGV4JyUzQSUyMDYlMkMlMjAnd29yZCclM0ElMjAnJTIzJTIzdmEnJTJDJTIwJ3N0YXJ0JyUzQSUyMDE0JTJDJTIwJ2VuZCclM0ElMjAxNiU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5OTIzMjclMkMlMjAnaW5kZXgnJTNBJTIwNyUyQyUyMCd3b3JkJyUzQSUyMCclMjMlMjNpbiclMkMlMjAnc3RhcnQnJTNBJTIwMTYlMkMlMjAnZW5kJyUzQSUyMDE4JTdEJTJDJTBBJTIwJTdCJ2VudGl0eSclM0ElMjAnSS1PUkcnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTczODkzMzQlMkMlMjAnaW5kZXgnJTNBJTIwMTIlMkMlMjAnd29yZCclM0ElMjAnSHUnJTJDJTIwJ3N0YXJ0JyUzQSUyMDMzJTJDJTIwJ2VuZCclM0ElMjAzNSU3RCUyQyUwQSUyMCU3QidlbnRpdHknJTNBJTIwJ0ktT1JHJyUyQyUyMCdzY29yZSclM0ElMjAwLjk3NjExNSUyQyUyMCdpbmRleCclM0ElMjAxMyUyQyUyMCd3b3JkJyUzQSUyMCclMjMlMjNnZ2luZyclMkMlMjAnc3RhcnQnJTNBJTIwMzUlMkMlMjAnZW5kJyUzQSUyMDQwJTdEJTJDJTBBJTIwJTdCJ2VudGl0eSclM0ElMjAnSS1PUkcnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTg4Nzk3NjYlMkMlMjAnaW5kZXgnJTNBJTIwMTQlMkMlMjAnd29yZCclM0ElMjAnRmFjZSclMkMlMjAnc3RhcnQnJTNBJTIwNDElMkMlMjAnZW5kJyUzQSUyMDQ1JTdEJTJDJTBBJTIwJTdCJ2VudGl0eSclM0ElMjAnSS1MT0MnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTkzMjEwNTUlMkMlMjAnaW5kZXgnJTNBJTIwMTYlMkMlMjAnd29yZCclM0ElMjAnQnJvb2tseW4nJTJDJTIwJ3N0YXJ0JyUzQSUyMDQ5JTJDJTIwJ2VuZCclM0ElMjA1NyU3RCU1RA==",highlighted:`[{<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-PER'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.9993828</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">4</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'S'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">11</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">12</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-PER'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.99815476</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">5</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'##yl'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">12</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">14</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-PER'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.99590725</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">6</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'##va'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">14</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">16</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-PER'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.9992327</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">7</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'##in'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">16</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">18</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-ORG'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.97389334</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">12</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'Hu'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">33</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">35</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-ORG'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.976115</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">13</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'##gging'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">35</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">40</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-ORG'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.98879766</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">14</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'Face'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">41</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">45</span>}, | |
| {<span class="hljs-string">'entity'</span>: <span class="hljs-string">'I-LOC'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.99321055</span>, <span class="hljs-string">'index'</span>: <span class="hljs-number">16</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'Brooklyn'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">49</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">57</span>}]`,wrap:!1}}),al=new fl({props:{title:"การรวม entities",local:"การรวม-entities",headingTag:"h3"}}),Ml=new w({props:{code:"ZXhhbXBsZSU1QjMzJTNBNDUlNUQ=",highlighted:'example[<span class="hljs-number">33</span>:<span class="hljs-number">45</span>]',wrap:!1}}),cl=new w({props:{code:"SHVnZ2luZyUyMEZhY2U=",highlighted:"Hugging Face",wrap:!1}}),jl=new w({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">"offset_mapping"</span>] | |
| idx = <span class="hljs-number">0</span> | |
| <span class="hljs-keyword">while</span> idx < <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">"O"</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 < <span class="hljs-built_in">len</span>(predictions) | |
| <span class="hljs-keyword">and</span> model.config.id2label[predictions[idx]] == <span class="hljs-string">f"I-<span class="hljs-subst">{label}</span>"</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">"entity_group"</span>: label, | |
| <span class="hljs-string">"score"</span>: score, | |
| <span class="hljs-string">"word"</span>: word, | |
| <span class="hljs-string">"start"</span>: start, | |
| <span class="hljs-string">"end"</span>: end, | |
| } | |
| ) | |
| idx += <span class="hljs-number">1</span> | |
| <span class="hljs-built_in">print</span>(results)`,wrap:!1}}),Tl=new w({props:{code:"JTVCJTdCJ2VudGl0eV9ncm91cCclM0ElMjAnUEVSJyUyQyUyMCdzY29yZSclM0ElMjAwLjk5ODE2OTQlMkMlMjAnd29yZCclM0ElMjAnU3lsdmFpbiclMkMlMjAnc3RhcnQnJTNBJTIwMTElMkMlMjAnZW5kJyUzQSUyMDE4JTdEJTJDJTBBJTIwJTdCJ2VudGl0eV9ncm91cCclM0ElMjAnT1JHJyUyQyUyMCdzY29yZSclM0ElMjAwLjk3OTYwMjA0JTJDJTIwJ3dvcmQnJTNBJTIwJ0h1Z2dpbmclMjBGYWNlJyUyQyUyMCdzdGFydCclM0ElMjAzMyUyQyUyMCdlbmQnJTNBJTIwNDUlN0QlMkMlMEElMjAlN0InZW50aXR5X2dyb3VwJyUzQSUyMCdMT0MnJTJDJTIwJ3Njb3JlJyUzQSUyMDAuOTkzMjEwNTUlMkMlMjAnd29yZCclM0ElMjAnQnJvb2tseW4nJTJDJTIwJ3N0YXJ0JyUzQSUyMDQ5JTJDJTIwJ2VuZCclM0ElMjA1NyU3RCU1RA==",highlighted:`[{<span class="hljs-string">'entity_group'</span>: <span class="hljs-string">'PER'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.9981694</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'Sylvain'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">11</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">18</span>}, | |
| {<span class="hljs-string">'entity_group'</span>: <span class="hljs-string">'ORG'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.97960204</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'Hugging Face'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">33</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">45</span>}, | |
| {<span class="hljs-string">'entity_group'</span>: <span class="hljs-string">'LOC'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.99321055</span>, <span class="hljs-string">'word'</span>: <span class="hljs-string">'Brooklyn'</span>, <span class="hljs-string">'start'</span>: <span class="hljs-number">49</span>, <span class="hljs-string">'end'</span>: <span class="hljs-number">57</span>}]`,wrap:!1}}),ml=new $a({props:{source:"https://github.com/huggingface/course/blob/main/chapters/th/chapter6/3.mdx"}}),{c(){i=J("meta"),d=a(),p=J("p"),U=a(),T(k.$$.fragment),f=a(),T(A.$$.fragment),$=a(),g.c(),b=a(),C=J("p"),C.textContent=M,x=a(),W=J("p"),W.innerHTML=me,kl=a(),T(H.$$.fragment),Cl=a(),V=J("p"),V.innerHTML=ue,$l=a(),X=J("table"),X.innerHTML=de,Al=a(),S=J("blockquote"),S.innerHTML=we,Ql=a(),T(G.$$.fragment),Bl=a(),T(D.$$.fragment),Zl=a(),Y=J("p"),Y.innerHTML=Ue,Nl=a(),L=J("p"),L.innerHTML=he,El=a(),F=J("p"),F.innerHTML=xe,zl=a(),q=J("p"),q.textContent=be,Sl=a(),T(P.$$.fragment),_l=a(),O=J("p"),O.innerHTML=ge,Rl=a(),T(K.$$.fragment),vl=a(),ss=J("p"),ss.innerHTML=fe,Wl=a(),T(ls.$$.fragment),Hl=a(),T(ns.$$.fragment),Vl=a(),es=J("p"),es.innerHTML=Ie,Xl=a(),T(as.$$.fragment),Gl=a(),T(ts.$$.fragment),Dl=a(),ps=J("p"),ps.textContent=ke,Yl=a(),T(is.$$.fragment),Ll=a(),T(Ms.$$.fragment),Fl=a(),cs=J("p"),cs.innerHTML=Ce,ql=a(),rs=J("p"),rs.innerHTML=$e,Pl=a(),T(Js.$$.fragment),Ol=a(),T(js.$$.fragment),Kl=a(),ys=J("p"),ys.innerHTML=Ae,sn=a(),Ts=J("p"),Ts.innerHTML=Qe,ln=a(),_=J("blockquote"),_.innerHTML=Be,nn=a(),os=J("p"),os.innerHTML=Ze,en=a(),ms=J("p"),ms.innerHTML=Ne,an=a(),us=J("p"),us.innerHTML=Ee,tn=a(),T(ds.$$.fragment),pn=a(),T(ws.$$.fragment),Mn=a(),Us=J("p"),Us.innerHTML=ze,cn=a(),R=J("blockquote"),R.innerHTML=Se,rn=a(),T(hs.$$.fragment),Jn=a(),xs=J("p"),xs.innerHTML=_e,jn=a(),B.c(),hl=a(),T(bs.$$.fragment),yn=a(),gs=J("p"),gs.innerHTML=Re,Tn=a(),T(fs.$$.fragment),on=a(),T(Is.$$.fragment),mn=a(),ks=J("p"),ks.textContent=ve,un=a(),T(Cs.$$.fragment),dn=a(),T($s.$$.fragment),wn=a(),As=J("p"),As.innerHTML=We,Un=a(),Qs=J("p"),Qs.textContent=He,hn=a(),Bs=J("ul"),Bs.innerHTML=Ve,xn=a(),Zs=J("p"),Zs.innerHTML=Xe,bn=a(),T(Ns.$$.fragment),gn=a(),N.c(),xl=a(),Es=J("p"),Es.textContent=Ge,fn=a(),z.c(),bl=a(),T(zs.$$.fragment),In=a(),Ss=J("p"),Ss.innerHTML=De,kn=a(),T(_s.$$.fragment),Cn=a(),T(Rs.$$.fragment),$n=a(),vs=J("p"),vs.innerHTML=Ye,An=a(),Ws=J("p"),Ws.innerHTML=Le,Qn=a(),Hs=J("p"),Hs.innerHTML=Fe,Bn=a(),Vs=J("p"),Vs.innerHTML=qe,Zn=a(),v=J("div"),v.innerHTML=Pe,Nn=a(),Xs=J("p"),Xs.innerHTML=Oe,En=a(),T(Gs.$$.fragment),zn=a(),T(Ds.$$.fragment),Sn=a(),Ys=J("p"),Ys.innerHTML=Ke,_n=a(),T(Ls.$$.fragment),Rn=a(),T(Fs.$$.fragment),vn=a(),qs=J("p"),qs.innerHTML=sa,Wn=a(),T(Ps.$$.fragment),Hn=a(),Os=J("p"),Os.innerHTML=la,Vn=a(),T(Ks.$$.fragment),Xn=a(),sl=J("p"),sl.textContent=na,Gn=a(),T(ll.$$.fragment),Dn=a(),T(nl.$$.fragment),Yn=a(),el=J("p"),el.textContent=ea,Ln=a(),T(al.$$.fragment),Fn=a(),tl=J("p"),tl.textContent=aa,qn=a(),pl=J("p"),pl.innerHTML=ta,Pn=a(),il=J("p"),il.innerHTML=pa,On=a(),T(Ml.$$.fragment),Kn=a(),T(cl.$$.fragment),se=a(),rl=J("p"),rl.textContent=ia,le=a(),Jl=J("p"),Jl.innerHTML=Ma,ne=a(),T(jl.$$.fragment),ee=a(),yl=J("p"),yl.textContent=ca,ae=a(),T(Tl.$$.fragment),te=a(),ol=J("p"),ol.textContent=ra,pe=a(),T(ml.$$.fragment),ie=a(),Il=J("p"),this.h()},l(s){const l=Ia("svelte-u9bgzb",document.head);i=j(l,"META",{name:!0,content:!0}),l.forEach(n),d=t(s),p=j(s,"P",{}),Ua(p).forEach(n),U=t(s),o(k.$$.fragment,s),f=t(s),o(A.$$.fragment,s),$=t(s),g.l(s),b=t(s),C=j(s,"P",{"data-svelte-h":!0}),y(C)!=="svelte-h9gmx3"&&(C.textContent=M),x=t(s),W=j(s,"P",{"data-svelte-h":!0}),y(W)!=="svelte-1c8cedk"&&(W.innerHTML=me),kl=t(s),o(H.$$.fragment,s),Cl=t(s),V=j(s,"P",{"data-svelte-h":!0}),y(V)!=="svelte-150ttb5"&&(V.innerHTML=ue),$l=t(s),X=j(s,"TABLE",{"data-svelte-h":!0}),y(X)!=="svelte-1hjgutj"&&(X.innerHTML=de),Al=t(s),S=j(s,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),y(S)!=="svelte-1y5z53b"&&(S.innerHTML=we),Ql=t(s),o(G.$$.fragment,s),Bl=t(s),o(D.$$.fragment,s),Zl=t(s),Y=j(s,"P",{"data-svelte-h":!0}),y(Y)!=="svelte-n0kj1"&&(Y.innerHTML=Ue),Nl=t(s),L=j(s,"P",{"data-svelte-h":!0}),y(L)!=="svelte-1o66ql"&&(L.innerHTML=he),El=t(s),F=j(s,"P",{"data-svelte-h":!0}),y(F)!=="svelte-a295y4"&&(F.innerHTML=xe),zl=t(s),q=j(s,"P",{"data-svelte-h":!0}),y(q)!=="svelte-10zibem"&&(q.textContent=be),Sl=t(s),o(P.$$.fragment,s),_l=t(s),O=j(s,"P",{"data-svelte-h":!0}),y(O)!=="svelte-1t5x2j9"&&(O.innerHTML=ge),Rl=t(s),o(K.$$.fragment,s),vl=t(s),ss=j(s,"P",{"data-svelte-h":!0}),y(ss)!=="svelte-1jvz5q8"&&(ss.innerHTML=fe),Wl=t(s),o(ls.$$.fragment,s),Hl=t(s),o(ns.$$.fragment,s),Vl=t(s),es=j(s,"P",{"data-svelte-h":!0}),y(es)!=="svelte-zrjmw6"&&(es.innerHTML=Ie),Xl=t(s),o(as.$$.fragment,s),Gl=t(s),o(ts.$$.fragment,s),Dl=t(s),ps=j(s,"P",{"data-svelte-h":!0}),y(ps)!=="svelte-1plxvsv"&&(ps.textContent=ke),Yl=t(s),o(is.$$.fragment,s),Ll=t(s),o(Ms.$$.fragment,s),Fl=t(s),cs=j(s,"P",{"data-svelte-h":!0}),y(cs)!=="svelte-kf1bqt"&&(cs.innerHTML=Ce),ql=t(s),rs=j(s,"P",{"data-svelte-h":!0}),y(rs)!=="svelte-17mmjv3"&&(rs.innerHTML=$e),Pl=t(s),o(Js.$$.fragment,s),Ol=t(s),o(js.$$.fragment,s),Kl=t(s),ys=j(s,"P",{"data-svelte-h":!0}),y(ys)!=="svelte-k1ae1f"&&(ys.innerHTML=Ae),sn=t(s),Ts=j(s,"P",{"data-svelte-h":!0}),y(Ts)!=="svelte-ltnlgf"&&(Ts.innerHTML=Qe),ln=t(s),_=j(s,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),y(_)!=="svelte-4ofrzr"&&(_.innerHTML=Be),nn=t(s),os=j(s,"P",{"data-svelte-h":!0}),y(os)!=="svelte-9jzqw"&&(os.innerHTML=Ze),en=t(s),ms=j(s,"P",{"data-svelte-h":!0}),y(ms)!=="svelte-dek4wm"&&(ms.innerHTML=Ne),an=t(s),us=j(s,"P",{"data-svelte-h":!0}),y(us)!=="svelte-1g3ppzk"&&(us.innerHTML=Ee),tn=t(s),o(ds.$$.fragment,s),pn=t(s),o(ws.$$.fragment,s),Mn=t(s),Us=j(s,"P",{"data-svelte-h":!0}),y(Us)!=="svelte-j0fahj"&&(Us.innerHTML=ze),cn=t(s),R=j(s,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),y(R)!=="svelte-1vu42e4"&&(R.innerHTML=Se),rn=t(s),o(hs.$$.fragment,s),Jn=t(s),xs=j(s,"P",{"data-svelte-h":!0}),y(xs)!=="svelte-z4oh30"&&(xs.innerHTML=_e),jn=t(s),B.l(s),hl=t(s),o(bs.$$.fragment,s),yn=t(s),gs=j(s,"P",{"data-svelte-h":!0}),y(gs)!=="svelte-kma7bw"&&(gs.innerHTML=Re),Tn=t(s),o(fs.$$.fragment,s),on=t(s),o(Is.$$.fragment,s),mn=t(s),ks=j(s,"P",{"data-svelte-h":!0}),y(ks)!=="svelte-ur6zob"&&(ks.textContent=ve),un=t(s),o(Cs.$$.fragment,s),dn=t(s),o($s.$$.fragment,s),wn=t(s),As=j(s,"P",{"data-svelte-h":!0}),y(As)!=="svelte-1mal0m7"&&(As.innerHTML=We),Un=t(s),Qs=j(s,"P",{"data-svelte-h":!0}),y(Qs)!=="svelte-dlvgti"&&(Qs.textContent=He),hn=t(s),Bs=j(s,"UL",{"data-svelte-h":!0}),y(Bs)!=="svelte-1khumke"&&(Bs.innerHTML=Ve),xn=t(s),Zs=j(s,"P",{"data-svelte-h":!0}),y(Zs)!=="svelte-be19nb"&&(Zs.innerHTML=Xe),bn=t(s),o(Ns.$$.fragment,s),gn=t(s),N.l(s),xl=t(s),Es=j(s,"P",{"data-svelte-h":!0}),y(Es)!=="svelte-1u8790f"&&(Es.textContent=Ge),fn=t(s),z.l(s),bl=t(s),o(zs.$$.fragment,s),In=t(s),Ss=j(s,"P",{"data-svelte-h":!0}),y(Ss)!=="svelte-1e33soq"&&(Ss.innerHTML=De),kn=t(s),o(_s.$$.fragment,s),Cn=t(s),o(Rs.$$.fragment,s),$n=t(s),vs=j(s,"P",{"data-svelte-h":!0}),y(vs)!=="svelte-lngqu3"&&(vs.innerHTML=Ye),An=t(s),Ws=j(s,"P",{"data-svelte-h":!0}),y(Ws)!=="svelte-1os7m2b"&&(Ws.innerHTML=Le),Qn=t(s),Hs=j(s,"P",{"data-svelte-h":!0}),y(Hs)!=="svelte-10ka1xu"&&(Hs.innerHTML=Fe),Bn=t(s),Vs=j(s,"P",{"data-svelte-h":!0}),y(Vs)!=="svelte-10r2xqd"&&(Vs.innerHTML=qe),Zn=t(s),v=j(s,"DIV",{class:!0,"data-svelte-h":!0}),y(v)!=="svelte-qf2tof"&&(v.innerHTML=Pe),Nn=t(s),Xs=j(s,"P",{"data-svelte-h":!0}),y(Xs)!=="svelte-1thg1mp"&&(Xs.innerHTML=Oe),En=t(s),o(Gs.$$.fragment,s),zn=t(s),o(Ds.$$.fragment,s),Sn=t(s),Ys=j(s,"P",{"data-svelte-h":!0}),y(Ys)!=="svelte-7dmzyn"&&(Ys.innerHTML=Ke),_n=t(s),o(Ls.$$.fragment,s),Rn=t(s),o(Fs.$$.fragment,s),vn=t(s),qs=j(s,"P",{"data-svelte-h":!0}),y(qs)!=="svelte-wy2mk2"&&(qs.innerHTML=sa),Wn=t(s),o(Ps.$$.fragment,s),Hn=t(s),Os=j(s,"P",{"data-svelte-h":!0}),y(Os)!=="svelte-1kqqje8"&&(Os.innerHTML=la),Vn=t(s),o(Ks.$$.fragment,s),Xn=t(s),sl=j(s,"P",{"data-svelte-h":!0}),y(sl)!=="svelte-174b3vx"&&(sl.textContent=na),Gn=t(s),o(ll.$$.fragment,s),Dn=t(s),o(nl.$$.fragment,s),Yn=t(s),el=j(s,"P",{"data-svelte-h":!0}),y(el)!=="svelte-ttwot1"&&(el.textContent=ea),Ln=t(s),o(al.$$.fragment,s),Fn=t(s),tl=j(s,"P",{"data-svelte-h":!0}),y(tl)!=="svelte-166o6gk"&&(tl.textContent=aa),qn=t(s),pl=j(s,"P",{"data-svelte-h":!0}),y(pl)!=="svelte-nvmqhm"&&(pl.innerHTML=ta),Pn=t(s),il=j(s,"P",{"data-svelte-h":!0}),y(il)!=="svelte-g86u14"&&(il.innerHTML=pa),On=t(s),o(Ml.$$.fragment,s),Kn=t(s),o(cl.$$.fragment,s),se=t(s),rl=j(s,"P",{"data-svelte-h":!0}),y(rl)!=="svelte-1v7asck"&&(rl.textContent=ia),le=t(s),Jl=j(s,"P",{"data-svelte-h":!0}),y(Jl)!=="svelte-8upx01"&&(Jl.innerHTML=Ma),ne=t(s),o(jl.$$.fragment,s),ee=t(s),yl=j(s,"P",{"data-svelte-h":!0}),y(yl)!=="svelte-1irzrok"&&(yl.textContent=ca),ae=t(s),o(Tl.$$.fragment,s),te=t(s),ol=j(s,"P",{"data-svelte-h":!0}),y(ol)!=="svelte-royqcg"&&(ol.textContent=ra),pe=t(s),o(ml.$$.fragment,s),ie=t(s),Il=j(s,"P",{}),Ua(Il).forEach(n),this.h()},h(){gl(i,"name","hf:doc:metadata"),gl(i,"content",Ra),gl(S,"class","warning"),gl(_,"class","tip"),gl(R,"class","tip"),gl(v,"class","flex justify-center")},m(s,l){ka(document.head,i),e(s,d,l),e(s,p,l),e(s,U,l),m(k,s,l),e(s,f,l),m(A,s,l),e(s,$,l),ul[h].m(s,l),e(s,b,l),e(s,C,l),e(s,x,l),e(s,W,l),e(s,kl,l),m(H,s,l),e(s,Cl,l),e(s,V,l),e(s,$l,l),e(s,X,l),e(s,Al,l),e(s,S,l),e(s,Ql,l),m(G,s,l),e(s,Bl,l),m(D,s,l),e(s,Zl,l),e(s,Y,l),e(s,Nl,l),e(s,L,l),e(s,El,l),e(s,F,l),e(s,zl,l),e(s,q,l),e(s,Sl,l),m(P,s,l),e(s,_l,l),e(s,O,l),e(s,Rl,l),m(K,s,l),e(s,vl,l),e(s,ss,l),e(s,Wl,l),m(ls,s,l),e(s,Hl,l),m(ns,s,l),e(s,Vl,l),e(s,es,l),e(s,Xl,l),m(as,s,l),e(s,Gl,l),m(ts,s,l),e(s,Dl,l),e(s,ps,l),e(s,Yl,l),m(is,s,l),e(s,Ll,l),m(Ms,s,l),e(s,Fl,l),e(s,cs,l),e(s,ql,l),e(s,rs,l),e(s,Pl,l),m(Js,s,l),e(s,Ol,l),m(js,s,l),e(s,Kl,l),e(s,ys,l),e(s,sn,l),e(s,Ts,l),e(s,ln,l),e(s,_,l),e(s,nn,l),e(s,os,l),e(s,en,l),e(s,ms,l),e(s,an,l),e(s,us,l),e(s,tn,l),m(ds,s,l),e(s,pn,l),m(ws,s,l),e(s,Mn,l),e(s,Us,l),e(s,cn,l),e(s,R,l),e(s,rn,l),m(hs,s,l),e(s,Jn,l),e(s,xs,l),e(s,jn,l),dl[Q].m(s,l),e(s,hl,l),m(bs,s,l),e(s,yn,l),e(s,gs,l),e(s,Tn,l),m(fs,s,l),e(s,on,l),m(Is,s,l),e(s,mn,l),e(s,ks,l),e(s,un,l),m(Cs,s,l),e(s,dn,l),m($s,s,l),e(s,wn,l),e(s,As,l),e(s,Un,l),e(s,Qs,l),e(s,hn,l),e(s,Bs,l),e(s,xn,l),e(s,Zs,l),e(s,bn,l),m(Ns,s,l),e(s,gn,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),m(zs,s,l),e(s,In,l),e(s,Ss,l),e(s,kn,l),m(_s,s,l),e(s,Cn,l),m(Rs,s,l),e(s,$n,l),e(s,vs,l),e(s,An,l),e(s,Ws,l),e(s,Qn,l),e(s,Hs,l),e(s,Bn,l),e(s,Vs,l),e(s,Zn,l),e(s,v,l),e(s,Nn,l),e(s,Xs,l),e(s,En,l),m(Gs,s,l),e(s,zn,l),m(Ds,s,l),e(s,Sn,l),e(s,Ys,l),e(s,_n,l),m(Ls,s,l),e(s,Rn,l),m(Fs,s,l),e(s,vn,l),e(s,qs,l),e(s,Wn,l),m(Ps,s,l),e(s,Hn,l),e(s,Os,l),e(s,Vn,l),m(Ks,s,l),e(s,Xn,l),e(s,sl,l),e(s,Gn,l),m(ll,s,l),e(s,Dn,l),m(nl,s,l),e(s,Yn,l),e(s,el,l),e(s,Ln,l),m(al,s,l),e(s,Fn,l),e(s,tl,l),e(s,qn,l),e(s,pl,l),e(s,Pn,l),e(s,il,l),e(s,On,l),m(Ml,s,l),e(s,Kn,l),m(cl,s,l),e(s,se,l),e(s,rl,l),e(s,le,l),e(s,Jl,l),e(s,ne,l),m(jl,s,l),e(s,ee,l),e(s,yl,l),e(s,ae,l),m(Tl,s,l),e(s,te,l),e(s,ol,l),e(s,pe,l),m(ml,s,l),e(s,ie,l),e(s,Il,l),Me=!0},p(s,[l]){const wa={};l&1&&(wa.fw=s[0]),k.$set(wa);let je=h;h=ja(s),h!==je&&(re(),c(ul[je],1,1,()=>{ul[je]=null}),ce(),g=ul[h],g||(g=ul[h]=Ja[h](s),g.c()),r(g,1),g.m(b.parentNode,b));let ye=Q;Q=Ta(s),Q!==ye&&(re(),c(dl[ye],1,1,()=>{dl[ye]=null}),ce(),B=dl[Q],B||(B=dl[Q]=ya[Q](s),B.c()),r(B,1),B.m(hl.parentNode,hl));let Te=Z;Z=ma(s),Z!==Te&&(re(),c(wl[Te],1,1,()=>{wl[Te]=null}),ce(),N=wl[Z],N||(N=wl[Z]=oa[Z](s),N.c()),r(N,1),N.m(xl.parentNode,xl));let oe=E;E=da(s),E!==oe&&(re(),c(Ul[oe],1,1,()=>{Ul[oe]=null}),ce(),z=Ul[E],z||(z=Ul[E]=ua[E](s),z.c()),r(z,1),z.m(bl.parentNode,bl))},i(s){Me||(r(k.$$.fragment,s),r(A.$$.fragment,s),r(g),r(H.$$.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(as.$$.fragment,s),r(ts.$$.fragment,s),r(is.$$.fragment,s),r(Ms.$$.fragment,s),r(Js.$$.fragment,s),r(js.$$.fragment,s),r(ds.$$.fragment,s),r(ws.$$.fragment,s),r(hs.$$.fragment,s),r(B),r(bs.$$.fragment,s),r(fs.$$.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(al.$$.fragment,s),r(Ml.$$.fragment,s),r(cl.$$.fragment,s),r(jl.$$.fragment,s),r(Tl.$$.fragment,s),r(ml.$$.fragment,s),Me=!0)},o(s){c(k.$$.fragment,s),c(A.$$.fragment,s),c(g),c(H.$$.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(as.$$.fragment,s),c(ts.$$.fragment,s),c(is.$$.fragment,s),c(Ms.$$.fragment,s),c(Js.$$.fragment,s),c(js.$$.fragment,s),c(ds.$$.fragment,s),c(ws.$$.fragment,s),c(hs.$$.fragment,s),c(B),c(bs.$$.fragment,s),c(fs.$$.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(al.$$.fragment,s),c(Ml.$$.fragment,s),c(cl.$$.fragment,s),c(jl.$$.fragment,s),c(Tl.$$.fragment,s),c(ml.$$.fragment,s),Me=!1},d(s){s&&(n(d),n(p),n(U),n(f),n($),n(b),n(C),n(x),n(W),n(kl),n(Cl),n(V),n($l),n(X),n(Al),n(S),n(Ql),n(Bl),n(Zl),n(Y),n(Nl),n(L),n(El),n(F),n(zl),n(q),n(Sl),n(_l),n(O),n(Rl),n(vl),n(ss),n(Wl),n(Hl),n(Vl),n(es),n(Xl),n(Gl),n(Dl),n(ps),n(Yl),n(Ll),n(Fl),n(cs),n(ql),n(rs),n(Pl),n(Ol),n(Kl),n(ys),n(sn),n(Ts),n(ln),n(_),n(nn),n(os),n(en),n(ms),n(an),n(us),n(tn),n(pn),n(Mn),n(Us),n(cn),n(R),n(rn),n(Jn),n(xs),n(jn),n(hl),n(yn),n(gs),n(Tn),n(on),n(mn),n(ks),n(un),n(dn),n(wn),n(As),n(Un),n(Qs),n(hn),n(Bs),n(xn),n(Zs),n(bn),n(gn),n(xl),n(Es),n(fn),n(bl),n(In),n(Ss),n(kn),n(Cn),n($n),n(vs),n(An),n(Ws),n(Qn),n(Hs),n(Bn),n(Vs),n(Zn),n(v),n(Nn),n(Xs),n(En),n(zn),n(Sn),n(Ys),n(_n),n(Rn),n(vn),n(qs),n(Wn),n(Hn),n(Os),n(Vn),n(Xn),n(sl),n(Gn),n(Dn),n(Yn),n(el),n(Ln),n(Fn),n(tl),n(qn),n(pl),n(Pn),n(il),n(On),n(Kn),n(se),n(rl),n(le),n(Jl),n(ne),n(ee),n(yl),n(ae),n(te),n(ol),n(pe),n(ie),n(Il)),n(i),u(k,s),u(A,s),ul[h].d(s),u(H,s),u(G,s),u(D,s),u(P,s),u(K,s),u(ls,s),u(ns,s),u(as,s),u(ts,s),u(is,s),u(Ms,s),u(Js,s),u(js,s),u(ds,s),u(ws,s),u(hs,s),dl[Q].d(s),u(bs,s),u(fs,s),u(Is,s),u(Cs,s),u($s,s),u(Ns,s),wl[Z].d(s),Ul[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(al,s),u(Ml,s),u(cl,s),u(jl,s),u(Tl,s),u(ml,s)}}}const Ra='{"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 va(I,i,d){let p="pt";return ba(()=>{const U=new URLSearchParams(window.location.search);d(0,p=U.get("fw")||"pt")}),[p]}class La extends ga{constructor(i){super(),fa(this,i,va,_a,xa,{})}}export{La as component}; | |
Xet Storage Details
- Size:
- 98.6 kB
- Xet hash:
- ebc9744988af19ed5fb2b72959c632bca61288ca7f5015118749f1ddb18de1bf
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.