Buckets:

rtrm's picture
|
download
raw
11.1 kB
# End-of-chapter quiz[[end-of-chapter-quiz]]
<CourseFloatingBanner
chapter={6}
classNames="absolute z-10 right-0 top-0"
/>
Let's test what you learned in this chapter!
### 1. When should you train a new tokenizer?
<Question
choices={[
{
text: "When your dataset is similar to that used by an existing pretrained model, and you want to pretrain a new model",
explain: "In this case, to save time and compute resources, a better choice would be to use the same tokenizer as the pretrained model and fine-tune that model instead."
},
{
text: "When your dataset is similar to that used by an existing pretrained model, and you want to fine-tune a new model using this pretrained model",
explain: "To fine-tune a model from a pretrained model, you should always use the same tokenizer."
},
{
text: "When your dataset is different from the one used by an existing pretrained model, and you want to pretrain a new model",
explain: "Correct! In this case there's no advantage to using the same tokenizer.",
correct: true
},
{
text: "When your dataset is different from the one used by an existing pretrained model, but you want to fine-tune a new model using this pretrained model",
explain: "To fine-tune a model from a pretrained model, you should always use the same tokenizer."
}
]}
/>
### 2. What is the advantage of using a generator of lists of texts compared to a list of lists of texts when using `train_new_from_iterator()`?
<Question
choices={[
{
text: "That's the only type the method <code>train_new_from_iterator()</code> accepts.",
explain: "A list of lists of texts is a particular kind of generator of lists of texts, so the method will accept this too. Try again!"
},
{
text: "You will avoid loading the whole dataset into memory at once.",
explain: "Right! Each batch of texts will be released from memory when you iterate, and the gain will be especially visible if you use 🤗 Datasets to store your texts.",
correct: true
},
{
text: "This will allow the 🤗 Tokenizers library to use multiprocessing.",
explain: "No, it will use multiprocessing either way."
},
{
text: "The tokenizer you train will generate better texts.",
explain: "The tokenizer does not generate text -- are you confusing it with a language model?"
}
]}
/>
### 3. What are the advantages of using a "fast" tokenizer?
<Question
choices={[
{
text: "It can process inputs faster than a slow tokenizer when you batch lots of inputs together.",
explain: "Correct! Thanks to parallelism implemented in Rust, it will be faster on batches of inputs. What other benefit can you think of?",
correct: true
},
{
text: "Fast tokenizers always tokenize faster than their slow counterparts.",
explain: "A fast tokenizer can actually be slower when you only give it one or very few texts, since it can't use parallelism."
},
{
text: "It can apply padding and truncation.",
explain: "True, but slow tokenizers also do that."
},
{
text: "It has some additional features allowing you to map tokens to the span of text that created them.",
explain: "Indeed -- those are called offset mappings. That's not the only advantage, though.",
correct: true
}
]}
/>
### 4. How does the `token-classification` pipeline handle entities that span over several tokens?
<Question
choices={[
{
text: "The entities with the same label are merged into one entity.",
explain: "That's oversimplifying things a little. Try again!"
},
{
text: "There is a label for the beginning of an entity and a label for the continuation of an entity.",
explain: "Correct!",
correct: true
},
{
text: "In a given word, as long as the first token has the label of the entity, the whole word is considered labeled with that entity.",
explain: "That's one strategy to handle entities. What other answers here apply?",
correct: true
},
{
text: "When a token has the label of a given entity, any other following token with the same label is considered part of the same entity, unless it's labeled as the start of a new entity.",
explain: "That's the most common way to group entities together -- it's not the only right answer, though.",
correct: true
}
]}
/>
### 5. How does the `question-answering` pipeline handle long contexts?
<Question
choices={[
{
text: "It doesn't really, as it truncates the long context at the maximum length accepted by the model.",
explain: "There is a trick you can use to handle long contexts. Do you remember what it is?"
},
{
text: "It splits the context into several parts and averages the results obtained.",
explain: "No, it wouldn't make sense to average the results, as some parts of the context won't include the answer."
},
{
text: "It splits the context into several parts (with overlap) and finds the maximum score for an answer in each part.",
explain: "That's the correct answer!",
correct: true
},
{
text: "It splits the context into several parts (without overlap, for efficiency) and finds the maximum score for an answer in each part.",
explain: "No, it includes some overlap between the parts to avoid a situation where the answer would be split across two parts."
}
]}
/>
### 6. What is normalization?
<Question
choices={[
{
text: "It's any cleanup the tokenizer performs on the texts in the initial stages.",
explain: "That's correct -- for instance, it might involve removing accents or whitespace, or lowercasing the inputs.",
correct: true
},
{
text: "It's a data augmentation technique that involves making the text more normal by removing rare words.",
explain: "That's incorrect! Try again."
},
{
text: "It's the final post-processing step where the tokenizer adds the special tokens.",
explain: "That stage is simply called post-processing."
},
{
text: "It's when the embeddings are made with mean 0 and standard deviation 1, by subtracting the mean and dividing by the std.",
explain: "That process is commonly called normalization when applied to pixel values in computer vision, but it's not what normalization means in NLP."
}
]}
/>
### 7. What is pre-tokenization for a subword tokenizer?
<Question
choices={[
{
text: "It's the step before the tokenization, where data augmentation (like random masking) is applied.",
explain: "No, that step is part of the preprocessing."
},
{
text: "It's the step before the tokenization, where the desired cleanup operations are applied to the text.",
explain: "No, that's the normalization step."
},
{
text: "It's the step before the tokenizer model is applied, to split the input into words.",
explain: "That's the correct answer!",
correct: true
},
{
text: "It's the step before the tokenizer model is applied, to split the input into tokens.",
explain: "No, splitting into tokens is the job of the tokenizer model."
}
]}
/>
### 8. Select the sentences that apply to the BPE model of tokenization.
<Question
choices={[
{
text: "BPE is a subword tokenization algorithm that starts with a small vocabulary and learns merge rules.",
explain: "That's the case indeed!",
correct: true
},
{
text: "BPE is a subword tokenization algorithm that starts with a big vocabulary and progressively removes tokens from it.",
explain: "No, that's the approach taken by a different tokenization algorithm."
},
{
text: "BPE tokenizers learn merge rules by merging the pair of tokens that is the most frequent.",
explain: "That's correct!",
correct: true
},
{
text: "A BPE tokenizer learns a merge rule by merging the pair of tokens that maximizes a score that privileges frequent pairs with less frequent individual parts.",
explain: "No, that's the strategy applied by another tokenization algorithm."
},
{
text: "BPE tokenizes words into subwords by splitting them into characters and then applying the merge rules.",
explain: "That's correct!",
correct: true
},
{
text: "BPE tokenizes words into subwords by finding the longest subword starting from the beginning that is in the vocabulary, then repeating the process for the rest of the text.",
explain: "No, that's another tokenization algorithm's way of doing things."
},
]}
/>
### 9. Select the sentences that apply to the WordPiece model of tokenization.
<Question
choices={[
{
text: "WordPiece is a subword tokenization algorithm that starts with a small vocabulary and learns merge rules.",
explain: "That's the case indeed!",
correct: true
},
{
text: "WordPiece is a subword tokenization algorithm that starts with a big vocabulary and progressively removes tokens from it.",
explain: "No, that's the approach taken by a different tokenization algorithm."
},
{
text: "WordPiece tokenizers learn merge rules by merging the pair of tokens that is the most frequent.",
explain: "No, that's the strategy applied by another tokenization algorithm."
},
{
text: "A WordPiece tokenizer learns a merge rule by merging the pair of tokens that maximizes a score that privileges frequent pairs with less frequent individual parts.",
explain: "That's correct!",
correct: true
},
{
text: "WordPiece tokenizes words into subwords by finding the most likely segmentation into tokens, according to the model.",
explain: "No, that's how another tokenization algorithm works."
},
{
text: "WordPiece tokenizes words into subwords by finding the longest subword starting from the beginning that is in the vocabulary, then repeating the process for the rest of the text.",
explain: "Yes, this is how WordPiece proceeds for the encoding.",
correct: true
},
]}
/>
### 10. Select the sentences that apply to the Unigram model of tokenization.
<Question
choices={[
{
text: "Unigram is a subword tokenization algorithm that starts with a small vocabulary and learns merge rules.",
explain: "No, that's the approach taken by a different tokenization algorithm."
},
{
text: "Unigram is a subword tokenization algorithm that starts with a big vocabulary and progressively removes tokens from it.",
explain: "That's correct!",
correct: true
},
{
text: "Unigram adapts its vocabulary by minimizing a loss computed over the whole corpus.",
explain: "That's correct!",
correct: true
},
{
text: "Unigram adapts its vocabulary by keeping the most frequent subwords.",
explain: "No, this incorrect."
},
{
text: "Unigram tokenizes words into subwords by finding the most likely segmentation into tokens, according to the model.",
explain: "That's correct!",
correct: true
},
{
text: "Unigram tokenizes words into subwords by splitting them into characters, then applying the merge rules.",
explain: "No, that's how another tokenization algorithm works."
},
]}
/>
<EditOnGithub source="https://github.com/huggingface/course/blob/main/chapters/en/chapter6/10.mdx" />

Xet Storage Details

Size:
11.1 kB
·
Xet hash:
5902a10e43dcef91ab3150e3ff7d82128930dee93c6b2c463533648a4a8c7a32

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.