Buckets:
| import{s as qe,n as be,o as ve}from"../chunks/scheduler.37c15a92.js";import{S as Ee,i as he,g as $e,s as o,r as i,A as we,h as fe,f as n,c as r,j as ze,u as s,x as je,k as ke,y as ye,a as t,v as l,d as p,t as u,w as d}from"../chunks/index.2bf4358c.js";import{C as Pe}from"../chunks/CourseFloatingBanner.6add7356.js";import{Q as m}from"../chunks/Question.668688bc.js";import{H as c}from"../chunks/Heading.8ada512a.js";import{E as Ce}from"../chunks/getInferenceSnippets.b37612c0.js";function _e(ge){let $,F,H,I,f,D,g,G,x,xe="Probemos lo que aprendimos en este capítulo!",M,z,R,k,O,q,V,b,J,v,K,E,X,h,Y,w,Z,j,ee,y,ae,P,ne,C,te,_,oe,N,re,T,ie,S,se,U,le,B,pe,Q,ue,W,de,L,ce,A,me;return f=new c({props:{title:"Quiz de Final de Capítulo",local:"end-of-chapter-quiz",headingTag:"h1"}}),g=new Pe({props:{chapter:6,classNames:"absolute z-10 right-0 top-0"}}),z=new c({props:{title:"1. Cuando debería entrenar un nuevo tokenizador?",local:"1-cuando-debería-entrenar-un-nuevo-tokenizador",headingTag:"h3"}}),k=new m({props:{choices:[{text:"Cuando tu conjunto de datos es similar al usado por un modelo pre-entrenado existente, y tú quieres pre-entrenar un nuevo modelo.",explain:"En este caso, para ahorrar tiempo y recursos computacionales, una mejor opción sería usar el mismo tokenizador que el modelo pre-entrenado y hacerle fine-tuning."},{text:"Cuando tu conjunto de datos es similar al usado por un modelo pre-entrenado existente, y quieres hacerle fine-tuning a un nuevo modelo usando este modelo pre-entrenado.",explain:"Para hacer fine-tuning a un modelo a partir de un modelo pre-entrenado, deberías siempre usar el mismo tokenizador."},{text:"Cuando tu dataset es diferente del que se utilizó en el modelo pre-entrenado existente, y quieres pre-entrenar un nuevo modelo.",explain:"Correcto! En este caso no hay ningúna ventaje en usar el mismo tokenizador.",correct:!0},{text:"Cuando tu dataset es diferente del que se utilizó en el modelo pre-entrenado existente, pero quieres hacer fine-tuning a un nuevo modelo usando el modelo pre-entrenado.",explain:"Para hacer fine-tuning a un modelo a partir de un modelo pre-entrenado, siempre deberías usar el mismo tokenizador."}]}}),q=new c({props:{title:"2. Cuál es la ventaja de usar un generador de listas de textos comparado con una lista de listas de textos al usar train_new_from_iterator() ?",local:"2-cuál-es-la-ventaja-de-usar-un-generador-de-listas-de-textos-comparado-con-una-lista-de-listas-de-textos-al-usar-trainnewfromiterator-",headingTag:"h3"}}),b=new m({props:{choices:[{text:"Ese es el único tipo que el método <code>train_new_from_iterator()</code> acepta.",explain:"Una lista de listas de textos es un tipo particular de generador de listas de textos, por lo que el método aceptará esto también. Intenta de nuevo!"},{text:"Evitarás cargar todo el conjunto de datos en memoria de una sóla vez.",explain:"Correcto! Cada lote de textos será liberado de la memoria al ir iterando, y la ganancia será especialmente visible si usas la librería 🤗 Datasets para almacenar tus textos.",correct:!0},{text:"Esto permite que la librería 🤗 Tokenizers library use multiprocesamiento.",explain:"No, usará multiprocesamiento en ambos casos."},{text:"El tokenizador que entrenarás generará mejores textos.",explain:"El tokenizador no genera texto -- estás confundiéndolo con un modelo de lenguaje?"}]}}),v=new c({props:{title:"3. Cuáles son las ventajas de utilizar un tokenizador “rápido”?",local:"3-cuáles-son-las-ventajas-de-utilizar-un-tokenizador-rápido",headingTag:"h3"}}),E=new m({props:{choices:[{text:"Puede procesar las entradas/inputs más rápido que un tokenizador lento cuando empaquetas muchas entradas/inputs en lotes.",explain:"Correcto! Gracias al paralelismo implementado en Rust, será más rápido en lotes de entradas/inputs. En qué otro beneficio puedes pensar?",correct:!0},{text:"Los tokenizadores rápidos siempre tokenizan más rápidos que sus contrapartes lentas.",explain:"Un tokenizador rápido puede ser en realidad más lento cuando sólo le dás uno o pocos textos, dado que no puede usar paralelismo."},{text:"Puede aplicar relleno (padding) y truncamiento.",explain:"Verdadero, pero los tokenizadores lentos también hacen eso."},{text:"Tiene algunas características adicionales que permiten mapear tokens a la porción de texto que los creó.",explain:"De hecho -- esos son los offset mappings. Aunque esa no es la única ventaja.",correct:!0}]}}),h=new c({props:{title:"4. Como hace el pipeline token-classification para manejar entidades que se extienden a varios tokens?",local:"4-como-hace-el-pipeline-token-classification-para-manejar-entidades-que-se-extienden-a-varios-tokens",headingTag:"h3"}}),w=new m({props:{choices:[{text:"Las entidades con las mismas etiquetas son fusionadas en una sólo entidad.",explain:"Eso es sobresimplificar las cosas un poco. Intenta de nuevo!"},{text:"Hay una etiqueta para el inicio de una entidad y una etiqueta para la continuación de una entidad.",explain:"Correcto!",correct:!0},{text:"En una palabra dada, mientas el primer token tenga una etiquera de entidad, la palabra completa es considerada etiquetada con dicha entidad.",explain:"Esa es una estrategia para manipular entidades. Qué otras respuestan aplican acá?",correct:!0},{text:"Cuando un token tiene la etiqueta de una entidad dada, cualquier otro token consecutivo con la misma etiqueta será considerada parte de la misma entidad, a menos que sea etiquetada como el inicio de una nueva entidad.",explain:"Esa es la manera más común de agrupar entidades -- aunque, no es la única respuesta correcta.",correct:!0}]}}),j=new c({props:{title:"5. Cómo hace el pipeline de question-answering para manejar contextos largos?",local:"5-cómo-hace-el-pipeline-de-question-answering-para-manejar-contextos-largos",headingTag:"h3"}}),y=new m({props:{choices:[{text:"En realidad no lo hace, ya que trunca los contextos largos al largo máximo aceptado por el modelo.",explain:"Hay un truco que puedes usar para manejar contextos largos. Te acuerdas cuál es?"},{text:"Separa el contexto en varias partes y promedia los resultados obtenidos.",explain:"No, no haría sentido promedias los resultados, ya que algunas partes del contexto no incluirán la respuesta."},{text:"Separa el contexto en varias partes (con traslape) y encuentra el puntaje máximo para una respuesta en cada parte.",explain:"Esa es la respuesta correcta!",correct:!0},{text:"Separa el contexto en varias partes (sin traslape, por eficiencia) y encuentra el puntaje máximo para una respuesta en cada parte.",explain:"No, incluye algo de traslape entre las partes para evitar la situación donde la respuesta estaría separada entre las partes."}]}}),P=new c({props:{title:"6. Qué es la normalización?",local:"6-qué-es-la-normalización",headingTag:"h3"}}),C=new m({props:{choices:[{text:"Es cualquier limpieza que el tokenizador realiza en los extos en las etapas iniciales.",explain:"Eso es correcto -- por ejemplo, podría incolucrar la remoción de acentos o espacios en blancos, o transformar a minúsculas las entradas/inputs.",correct:!0},{text:"Es una técnica de aumento de datos que involucra hacer el texto más normal removiendo palabras raras.",explain:"Eso es incorrecto! Intenta de nuevo."},{text:"Es el paso final de post-procesamiento donde el tokenizador agrega los tokens especiales.",explain:"Esa etapa se llama simplemente post-procesamiento."},{text:"Es cuando los embeddings se llevan a media 0 y desviación estándar 1, restando la media y dividiendo la desviación estándar.",explain:"Ese proceso es comúnmente llamado normalización cuando se aplica a valores de píxel en visión computacional, pero no es lo que significa normalizacion en el contexto de NLP."}]}}),_=new c({props:{title:"7. Qué es la pre-tokenización para un tokenizador de subpalabra?",local:"7-qué-es-la-pre-tokenización-para-un-tokenizador-de-subpalabra",headingTag:"h3"}}),N=new m({props:{choices:[{text:"Es un paso antes de la tokenización, donde se aplica aumento de datos (como enmascaramiento aleatorio (random masking)).",explain:"No, ese paso es parte del pre-procesamiento."},{text:"Es el paso antes de la tokenización, donde las operaciones de limpieza deseada son aplicados al texto.",explain:"No, ese es el paso de normalización."},{text:"Es el paso antes que el modelo de tokenización sea aplicado para separar la entrada/input en palabras.",explain:"Esa es la respuesta correcta!",correct:!0},{text:"Es el paso antes de que el tokenizador se aplique para separar el input en tokens.",explain:"No, separar en tokens es parte del trabajo del modelo de tokenización."}]}}),T=new c({props:{title:"8. Selecciona las afirmaciones que aplican para el modelo de tokenización BPE.",local:"8-selecciona-las-afirmaciones-que-aplican-para-el-modelo-de-tokenización-bpe",headingTag:"h3"}}),S=new m({props:{choices:[{text:"BPE es un algoritmo de tokenización por subpalabras que comienza con un vocabulario pequeño y aprende reglas de fusión.",explain:"Ese es de hecho el caso!",correct:!0},{text:"BPE es un algoritmo de tokenización que comienza con un vocabulario grande y de manera progresiva remueve tokens de él.",explain:"No, ese es el método que siguien un algoritmo de tokenización diferente."},{text:"El tokenizador BPE aprende reglas de fusión fusionando el parte de tokens que es el más frecuente.",explain:"Eso es correcto!",correct:!0},{text:"Un tokenizador BPE aprende una regla de fusión fusionando el par de tokens que maximiza un puntaje que privilegia pares frecuentes con partes individuales menos frecuentes.",explain:"No, esa es la estrategia aplicada por otro algoritmo de tokenización."},{text:"BPE tokeniza palabras en subpalabras separándolas en caracteres y luego aplicando reglas de fusión.",explain:"Eso es correcto!",correct:!0},{text:"BPE tokeniza palabras en subpalabras encontrando la subpalabra más larga partiendo desde el inicio que está en el vocabulario, luego repite el proceso para el resto del texto.",explain:"No, esa es la manera en que otro algoritmo de tokenización hace las cosas."}]}}),U=new c({props:{title:"9. Selecciona las afirmaciones que aplican para el modelo de tokenizacion WordPiece.",local:"9-selecciona-las-afirmaciones-que-aplican-para-el-modelo-de-tokenizacion-wordpiece",headingTag:"h3"}}),B=new m({props:{choices:[{text:"WordPiece es un algoritmo de tokenización de subpalabras que comienza con un vocabulario pequeño y aprende reglas de fusión.",explain:"Este es el caso de hecho!",correct:!0},{text:"WordPiece un algoritmo de tokenización de subpalabras que comienza con un vocabulario grande y de manera progresiva remueve tokens de él.",explain:"No, ese el método tomado por un algoritmo de tokenización diferente."},{text:"Los tokenizadores WordPiece aprenden reglas de fusión fusionando el par de tokens más frecuentes.",explain:"No, esa es la estrategia aplicada por otro algoritmo de tokenización."},{text:"Un tokenizador WordPiece aprende una regla de fusión fusionando el par de tokens que maximiza un puntaje que privilegia pares frecuentes con partes individuales menos frecuentes.",explain:"Eso es correcto!",correct:!0},{text:"WordPiece tokeniza palabras en subpalabras encontrando la segmentación en tokens más probable, de acuerdo al modelo.",explain:"No, así es como otro algoritmo de tokenización funciona."},{text:"WordPiece tokeniza palabras en subpalabras encontrando la subpalabra máas larga partiendo desde el inicio que está en el vocabularoi, luego repite el proceso para el resto del texto.",explain:"Sí, así es como WordPiece procede para la codificación.",correct:!0}]}}),Q=new c({props:{title:"10. Selecciona las afirmaciones que aplican para el modelo de tokenización Unigram.",local:"10-selecciona-las-afirmaciones-que-aplican-para-el-modelo-de-tokenización-unigram",headingTag:"h3"}}),W=new m({props:{choices:[{text:"Unigram es un algoritmo de tokenización que comienza con un vocabulario pequeño y aprende reglas de fusión.",explain:"No, ese el método tomado por otro algoritmo de tokenización."},{text:"Unigram es un algoritmo de tokenización que comienza con un vocabulario grande y progresivamente remueve tokens de él.",explain:"Eso es correcto!",correct:!0},{text:"Unigram adapta su vocabulario minimizando una pérdia calculada sobre el corpus completo.",explain:"Eso está correcto!",correct:!0},{text:"Unigram adapta su vocabularo manteneiendo las subpalabras más frecuentes.",explain:"No, esto es incorrecto."},{text:"Unigram tokeniza palabras en subpalabras encontrando la segmentación en tokens más probable, de acuerdo al modelo.",explain:"Eso es correcto!",correct:!0},{text:"Unigram tokeniza palabras en subpalabras separandolas en caracteres, luego aplicando caracteres, luego aplicando reglas de fusión.",explain:"No, así es como funciona otro algoritmo de tokenización."}]}}),L=new Ce({props:{source:"https://github.com/huggingface/course/blob/main/chapters/es/chapter6/10.mdx"}}),{c(){$=$e("meta"),F=o(),H=$e("p"),I=o(),i(f.$$.fragment),D=o(),i(g.$$.fragment),G=o(),x=$e("p"),x.textContent=xe,M=o(),i(z.$$.fragment),R=o(),i(k.$$.fragment),O=o(),i(q.$$.fragment),V=o(),i(b.$$.fragment),J=o(),i(v.$$.fragment),K=o(),i(E.$$.fragment),X=o(),i(h.$$.fragment),Y=o(),i(w.$$.fragment),Z=o(),i(j.$$.fragment),ee=o(),i(y.$$.fragment),ae=o(),i(P.$$.fragment),ne=o(),i(C.$$.fragment),te=o(),i(_.$$.fragment),oe=o(),i(N.$$.fragment),re=o(),i(T.$$.fragment),ie=o(),i(S.$$.fragment),se=o(),i(U.$$.fragment),le=o(),i(B.$$.fragment),pe=o(),i(Q.$$.fragment),ue=o(),i(W.$$.fragment),de=o(),i(L.$$.fragment),ce=o(),A=$e("p"),this.h()},l(e){const a=we("svelte-u9bgzb",document.head);$=fe(a,"META",{name:!0,content:!0}),a.forEach(n),F=r(e),H=fe(e,"P",{}),ze(H).forEach(n),I=r(e),s(f.$$.fragment,e),D=r(e),s(g.$$.fragment,e),G=r(e),x=fe(e,"P",{"data-svelte-h":!0}),je(x)!=="svelte-1npyvhl"&&(x.textContent=xe),M=r(e),s(z.$$.fragment,e),R=r(e),s(k.$$.fragment,e),O=r(e),s(q.$$.fragment,e),V=r(e),s(b.$$.fragment,e),J=r(e),s(v.$$.fragment,e),K=r(e),s(E.$$.fragment,e),X=r(e),s(h.$$.fragment,e),Y=r(e),s(w.$$.fragment,e),Z=r(e),s(j.$$.fragment,e),ee=r(e),s(y.$$.fragment,e),ae=r(e),s(P.$$.fragment,e),ne=r(e),s(C.$$.fragment,e),te=r(e),s(_.$$.fragment,e),oe=r(e),s(N.$$.fragment,e),re=r(e),s(T.$$.fragment,e),ie=r(e),s(S.$$.fragment,e),se=r(e),s(U.$$.fragment,e),le=r(e),s(B.$$.fragment,e),pe=r(e),s(Q.$$.fragment,e),ue=r(e),s(W.$$.fragment,e),de=r(e),s(L.$$.fragment,e),ce=r(e),A=fe(e,"P",{}),ze(A).forEach(n),this.h()},h(){ke($,"name","hf:doc:metadata"),ke($,"content",Ne)},m(e,a){ye(document.head,$),t(e,F,a),t(e,H,a),t(e,I,a),l(f,e,a),t(e,D,a),l(g,e,a),t(e,G,a),t(e,x,a),t(e,M,a),l(z,e,a),t(e,R,a),l(k,e,a),t(e,O,a),l(q,e,a),t(e,V,a),l(b,e,a),t(e,J,a),l(v,e,a),t(e,K,a),l(E,e,a),t(e,X,a),l(h,e,a),t(e,Y,a),l(w,e,a),t(e,Z,a),l(j,e,a),t(e,ee,a),l(y,e,a),t(e,ae,a),l(P,e,a),t(e,ne,a),l(C,e,a),t(e,te,a),l(_,e,a),t(e,oe,a),l(N,e,a),t(e,re,a),l(T,e,a),t(e,ie,a),l(S,e,a),t(e,se,a),l(U,e,a),t(e,le,a),l(B,e,a),t(e,pe,a),l(Q,e,a),t(e,ue,a),l(W,e,a),t(e,de,a),l(L,e,a),t(e,ce,a),t(e,A,a),me=!0},p:be,i(e){me||(p(f.$$.fragment,e),p(g.$$.fragment,e),p(z.$$.fragment,e),p(k.$$.fragment,e),p(q.$$.fragment,e),p(b.$$.fragment,e),p(v.$$.fragment,e),p(E.$$.fragment,e),p(h.$$.fragment,e),p(w.$$.fragment,e),p(j.$$.fragment,e),p(y.$$.fragment,e),p(P.$$.fragment,e),p(C.$$.fragment,e),p(_.$$.fragment,e),p(N.$$.fragment,e),p(T.$$.fragment,e),p(S.$$.fragment,e),p(U.$$.fragment,e),p(B.$$.fragment,e),p(Q.$$.fragment,e),p(W.$$.fragment,e),p(L.$$.fragment,e),me=!0)},o(e){u(f.$$.fragment,e),u(g.$$.fragment,e),u(z.$$.fragment,e),u(k.$$.fragment,e),u(q.$$.fragment,e),u(b.$$.fragment,e),u(v.$$.fragment,e),u(E.$$.fragment,e),u(h.$$.fragment,e),u(w.$$.fragment,e),u(j.$$.fragment,e),u(y.$$.fragment,e),u(P.$$.fragment,e),u(C.$$.fragment,e),u(_.$$.fragment,e),u(N.$$.fragment,e),u(T.$$.fragment,e),u(S.$$.fragment,e),u(U.$$.fragment,e),u(B.$$.fragment,e),u(Q.$$.fragment,e),u(W.$$.fragment,e),u(L.$$.fragment,e),me=!1},d(e){e&&(n(F),n(H),n(I),n(D),n(G),n(x),n(M),n(R),n(O),n(V),n(J),n(K),n(X),n(Y),n(Z),n(ee),n(ae),n(ne),n(te),n(oe),n(re),n(ie),n(se),n(le),n(pe),n(ue),n(de),n(ce),n(A)),n($),d(f,e),d(g,e),d(z,e),d(k,e),d(q,e),d(b,e),d(v,e),d(E,e),d(h,e),d(w,e),d(j,e),d(y,e),d(P,e),d(C,e),d(_,e),d(N,e),d(T,e),d(S,e),d(U,e),d(B,e),d(Q,e),d(W,e),d(L,e)}}}const Ne='{"title":"Quiz de Final de Capítulo","local":"end-of-chapter-quiz","sections":[{"title":"1. Cuando debería entrenar un nuevo tokenizador?","local":"1-cuando-debería-entrenar-un-nuevo-tokenizador","sections":[],"depth":3},{"title":"2. Cuál es la ventaja de usar un generador de listas de textos comparado con una lista de listas de textos al usar train_new_from_iterator() ?","local":"2-cuál-es-la-ventaja-de-usar-un-generador-de-listas-de-textos-comparado-con-una-lista-de-listas-de-textos-al-usar-trainnewfromiterator-","sections":[],"depth":3},{"title":"3. Cuáles son las ventajas de utilizar un tokenizador “rápido”?","local":"3-cuáles-son-las-ventajas-de-utilizar-un-tokenizador-rápido","sections":[],"depth":3},{"title":"4. Como hace el pipeline token-classification para manejar entidades que se extienden a varios tokens?","local":"4-como-hace-el-pipeline-token-classification-para-manejar-entidades-que-se-extienden-a-varios-tokens","sections":[],"depth":3},{"title":"5. Cómo hace el pipeline de question-answering para manejar contextos largos?","local":"5-cómo-hace-el-pipeline-de-question-answering-para-manejar-contextos-largos","sections":[],"depth":3},{"title":"6. Qué es la normalización?","local":"6-qué-es-la-normalización","sections":[],"depth":3},{"title":"7. Qué es la pre-tokenización para un tokenizador de subpalabra?","local":"7-qué-es-la-pre-tokenización-para-un-tokenizador-de-subpalabra","sections":[],"depth":3},{"title":"8. Selecciona las afirmaciones que aplican para el modelo de tokenización BPE.","local":"8-selecciona-las-afirmaciones-que-aplican-para-el-modelo-de-tokenización-bpe","sections":[],"depth":3},{"title":"9. Selecciona las afirmaciones que aplican para el modelo de tokenizacion WordPiece.","local":"9-selecciona-las-afirmaciones-que-aplican-para-el-modelo-de-tokenizacion-wordpiece","sections":[],"depth":3},{"title":"10. Selecciona las afirmaciones que aplican para el modelo de tokenización Unigram.","local":"10-selecciona-las-afirmaciones-que-aplican-para-el-modelo-de-tokenización-unigram","sections":[],"depth":3}],"depth":1}';function Te(ge){return ve(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class He extends Ee{constructor($){super(),he(this,$,Te,_e,qe,{})}}export{He as component}; | |
Xet Storage Details
- Size:
- 18.7 kB
- Xet hash:
- 8bd658e2a3bb23d26b5819f1338efb08c211623498d6d490a2e76aa1104809aa
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.