Skip to content

Translation chapter 5 #936

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 33 commits into from
Jun 4, 2025
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
6b5a6f9
Changed romanian folder name from rum to ro
Angroys Dec 28, 2024
d13ac2d
added chapter 3 first 3 sections
Angroys Jan 1, 2025
ade28a8
Finished translating chapter 3
Angroys Jan 2, 2025
2a10e3b
Finished chapter 4
Angroys Jan 2, 2025
1c9d20a
Finished chapter 5 for the ro language
Angroys Jan 4, 2025
abd846c
Add chapter 3
Jan 8, 2025
1bd8547
fix: add toctree content
eduard-balamatiuc May 26, 2025
9026c66
fix: update toctree to only include the current chapter
eduard-balamatiuc May 27, 2025
8d7fd41
Merge branch 'main' into translation-chapter-3
eduard-balamatiuc May 27, 2025
444d4f4
Merge branch 'main' into translation-chapter-4
eduard-balamatiuc May 27, 2025
ea4af07
Merge branch 'main' into translation-chapter-5
eduard-balamatiuc May 27, 2025
e61e11e
fix: remove unnecessary files
eduard-balamatiuc May 27, 2025
2550453
fix: remove unecessary files from wrong folder
eduard-balamatiuc May 27, 2025
0904819
feat: add chapter 4 content
eduard-balamatiuc May 27, 2025
6f98827
fix: solve formatting
eduard-balamatiuc May 27, 2025
e5722ca
fix: revert deletion of chapter 0
eduard-balamatiuc May 27, 2025
1b93f33
fix: solve gitignore diff
eduard-balamatiuc May 27, 2025
0cea075
fix: solve bad folder structure
eduard-balamatiuc May 27, 2025
7e95b1f
feat: add content for chapter 5
eduard-balamatiuc May 27, 2025
16a2692
fix: revert missing line
eduard-balamatiuc May 27, 2025
9ebc1a0
fix: add missing link
eduard-balamatiuc May 27, 2025
c312f44
fix: solve typos in files 3 4 6
eduard-balamatiuc May 27, 2025
219c04d
fix: internal server error request to file 3 chapter4
eduard-balamatiuc May 27, 2025
092e1cc
fix: solve make style issue
eduard-balamatiuc May 27, 2025
d44c2fd
fix: solve all PR threads recommendations
eduard-balamatiuc Jun 3, 2025
6da5dde
fix: solve chapter3 romanian translation file 6 formatting issues
eduard-balamatiuc Jun 3, 2025
dc3c3d2
fix: resolve all thread suggestions from chapter 4 romanian translation
eduard-balamatiuc Jun 3, 2025
4be802f
fix: solve typo in romanian spelling chapter 4 file 4
eduard-balamatiuc Jun 3, 2025
6f50a71
feat: add Angroys as one of the contributors to this chapters transla…
eduard-balamatiuc Jun 3, 2025
39e6d0a
fix: resolve all threads and solve all mistakes found in romanian tra…
eduard-balamatiuc Jun 3, 2025
0829b0d
Merge branch 'main' into translation-chapter-3
eduard-balamatiuc Jun 3, 2025
baa99ea
Merge branch 'translation-chapter-3' into translation-chapter-4
eduard-balamatiuc Jun 3, 2025
e82e833
Merge branch 'translation-chapter-4' into translation-chapter-5
eduard-balamatiuc Jun 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions chapters/rum/_toctree.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,23 @@
- local: chapter1/10
title: Quiz de final de capitol
quiz: 1

- title: 5. Biblioteca 🤗 Datasets
sections:
- local: chapter5/1
title: Introducere
- local: chapter5/2
title: Ce fac dacă dataset-ul meu nu este pe Hub?
- local: chapter5/3
title: E timpul să tăiem și să analizăm datele
- local: chapter5/4
title: Big data? 🤗 Datasets vine în ajutor!
- local: chapter5/5
title: Creează propriul tău dataset
- local: chapter5/6
title: Căutare semantică cu FAISS
- local: chapter5/7
title: 🤗 Datasets, verificare!
- local: chapter5/8
title: Quiz de final de capitol
quiz: 5
22 changes: 22 additions & 0 deletions chapters/rum/chapter5/1.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Introducere[[introduction]]

<CourseFloatingBanner
chapter={5}
classNames="absolute z-10 right-0 top-0"
/>

În [Capitolul 3](/course/chapter3) ați încercat a biblioteca 🤗Datasets și ați văzut că existau trei pași principali atunci când vine vorba de fine-tuningul unui model:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
În [Capitolul 3](/course/chapter3) ați încercat a biblioteca 🤗Datasets și ați văzut că existau trei pași principali atunci când vine vorba de fine-tuningul unui model:
În [Capitolul 3](/course/chapter3) ați încercat biblioteca 🤗Datasets și ați văzut că existau trei pași principali atunci când vine vorba de fine-tuningul unui model:


1. Încărcați un dataset din Hugging Face Hub.
2. Preprocesați datele cu `Dataset.map()`.
3. Încărcați și calculați metricele.

Dar acesta este doar o mică parte a ceea ce poate face 🤗 Datasets! În acest capitol, vom trece mai in deep în această bibliotecă. Pe parcurs, vom găsi răspunsuri la următoarele întrebări:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Dar acesta este doar o mică parte a ceea ce poate face 🤗 Datasets! În acest capitol, vom trece mai in deep în această bibliotecă. Pe parcurs, vom găsi răspunsuri la următoarele întrebări:
Dar aceasta este doar o mică parte a ceea ce poate face 🤗 Datasets! În acest capitol, ne vom aprofunda în această bibliotecă. Pe parcurs, vom găsi răspunsuri la următoarele întrebări:


* Ce faceți atunci când datasetul tău nu este pe Hub?
* Cum puteți tăia și împărți un dataset? (Și ce dacă tu _really_ trebuie să folosești Pandas?)
* Ce faceți atunci când datasetul este uriaș și va topi RAM-ul laptopului dumneavoastră?
* Ce este "memory mapping" și Apache Arrow?
* Cum puteți crea propriul dataset și să-l trimiteți pe Hub?

Tehnicile pe care le veți învăța aici vă vor pregăti pentru sarcinile avansate de tokenizare și fine-tuning din [Capitolul 6](/course/chapter6) și [Capitolul 7](/course/chapter7) -- deci luați o cafea sau două și să începem!
169 changes: 169 additions & 0 deletions chapters/rum/chapter5/2.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
# Ce fac dacă dataset-ul meu nu este pe Hub?[[what-if-my-dataset-isnt-on-the-hub]]

<CourseFloatingBanner chapter={5}
classNames="absolute z-10 right-0 top-0"
notebooks={[
{label: "Google Colab", value: "https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter5/section2.ipynb"},
{label: "Aws Studio", value: "https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter5/section2.ipynb"},
]} />

Știți cum să folosiți [Hugging Face Hub](https://huggingface.co/datasets) pentru a descărca dataseturi, dar vă veți găsi adesea lucrând cu date care sunt stocate fie pe laptopul dumneavoastră, fie pe un server remote. În această secțiune vă vom arăta cum poate fi utilizat 🤗 Datasets pentru a încărca dataseturi care nu sunt disponibile pe Hugging Face Hub.

<Youtube id="HyQgpJTkRdE"/>

## Lucrând cu dataseturi locale și remote[[working-with-local-and-remote-datasets]]

🤗 Datasets oferă scripturi de încărcare pentru a gestiona încărcarea dataseturilor locale și remote. Suportă mai multe formate de date comune, cum ar fi:

| Data format | Loading script | Example |
| :----------------: | :------------: | :-----------------------------------------------------: |
| CSV & TSV | `csv` | `load_dataset("csv", data_files="my_file.csv")` |
| Text files | `text` | `load_dataset("text", data_files="my_file.txt")` |
| JSON & JSON Lines | `json` | `load_dataset("json", data_files="my_file.jsonl")` |
| Pickled DataFrames | `pandas` | `load_dataset("pandas", data_files="my_dataframe.pkl")` |

Așa cum se arată în tabel, pentru fiecare format de date trebuie doar să specificăm tipul scriptului de încărcare în funcția `load_dataset()`, alături de un argument `data_files` care specifică calea către unul sau mai multe fișiere. Să începem prin încărcarea unui dataset din fișiere locale; mai târziu vom vedea cum să facem același lucru cu fișiere remote.

## Încărcarea unui dataset local[[loading-a-local-dataset]]

Pentru acest exemplu vom folosi [datasetul SQuAD-it](https://github.com/crux82/squad-it/), care este un dataset la scară largă pentru întrebări și răspunsuri în italiană.

Spliturile de antrenare și test sunt găzduite pe GitHub, deci le putem descărca cu o comandă simplă `wget`:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe use seturile de antrenare


```python
!wget https://github.com/crux82/squad-it/raw/master/SQuAD_it-train.json.gz
!wget https://github.com/crux82/squad-it/raw/master/SQuAD_it-test.json.gz
```

Aceasta va descărca două fișiere comprimate numite *SQuAD_it-train.json.gz* și *SQuAD_it-test.json.gz*, pe care le putem decomprima cu comanda Linux `gzip`:

```python
!gzip -dkv SQuAD_it-*.json.gz
```

```bash
SQuAD_it-test.json.gz: 87.4% -- replaced with SQuAD_it-test.json
SQuAD_it-train.json.gz: 82.2% -- replaced with SQuAD_it-train.json
```

Putem vedea că fișierele comprimate au fost înlocuite cu _SQuAD_it-train.json_ și _SQuAD_it-test.json_, și că datele sunt stocate în formatul JSON.

<Tip>

✎ Dacă vă întrebați de ce există un caracter `!` în comenzile shell de mai sus, aceasta este pentru că le rulăm într-un notebook Jupyter. Pur și simplu eliminați prefixul dacă doriți să descărcați și să dezarhivați datasetul într-un terminal.

</Tip>

Pentru a încărca un fișier JSON cu funcția `load_dataset()`, trebuie doar să știm dacă avem de-a face cu JSON obișnuit (similar cu un dicționar imbricat) sau JSON Lines (JSON separat pe linii). Ca multe dataseturi de întrebări și răspunsuri, SQuAD-it folosește formatul imbricat, cu tot textul stocat într-un câmp `data`. Aceasta înseamnă că putem încărca datasetul specificând argumentul `field` după cum urmează:

```py
from datasets import load_dataset

squad_it_dataset = load_dataset("json", data_files="SQuAD_it-train.json", field="data")
```

În mod implicit, încărcarea fișierelor locale creează un obiect `DatasetDict` cu un split `train`. Putem vedea acest lucru prin inspectarea obiectului `squad_it_dataset`:

```py
squad_it_dataset
```

```python out
DatasetDict({
train: Dataset({
features: ['title', 'paragraphs'],
num_rows: 442
})
})
```

Aceasta ne arată numărul de rânduri și numele coloanelor asociate cu setul de antrenare. Putem vizualiza unul dintre exemple prin indexarea în splitul `train` după cum urmează:

```py
squad_it_dataset["train"][0]
```

```python out
{
"title": "Terremoto del Sichuan del 2008",
"paragraphs": [
{
"context": "Il terremoto del Sichuan del 2008 o il terremoto...",
"qas": [
{
"answers": [{"answer_start": 29, "text": "2008"}],
"id": "56cdca7862d2951400fa6826",
"question": "In quale anno si è verificato il terremoto nel Sichuan?",
},
...
],
},
...
],
}
```

Excelent, am încărcat primul nostru dataset local! Dar în timp ce acest lucru a funcționat pentru setul de antrenare, ceea ce dorim cu adevărat este să includem atât spliturile `train` cât și `test` într-un singur obiect `DatasetDict` astfel încât să putem aplica funcțiile `Dataset.map()` pe ambele splituri deodată. Pentru a face acest lucru, putem furniza un dicționar argumentului `data_files` care mapează fiecare nume de split la un fișier asociat cu acel split:

```py
data_files = {"train": "SQuAD_it-train.json", "test": "SQuAD_it-test.json"}
squad_it_dataset = load_dataset("json", data_files=data_files, field="data")
squad_it_dataset
```

```python out
DatasetDict({
train: Dataset({
features: ['title', 'paragraphs'],
num_rows: 442
})
test: Dataset({
features: ['title', 'paragraphs'],
num_rows: 48
})
})
```

Acesta este exact ceea ce am dorit. Acum, putem aplica diverse tehnici de preprocesare pentru a curăța datele, tokeniza recenziile și așa mai departe.

<Tip>

Argumentul `data_files` al funcției `load_dataset()` este destul de flexibil și poate fi fie o singură cale de fișier, o listă de căi de fișiere, sau un dicționar care mapează numele spliturilor la căile fișierelor. De asemenea, puteți folosi glob pentru fișiere care se potrivesc unui model specificat conform regulilor folosite de shell-ul Unix (de exemplu, puteți face glob pentru toate fișierele JSON dintr-un director ca un singur split prin setarea `data_files="*.json"`). Consultați [documentația](https://huggingface.co/docs/datasets/loading#local-and-remote-files) 🤗 Datasets pentru mai multe detalii.

</Tip>

Scripturile de încărcare din 🤗 Datasets suportă de fapt decomprimarea automată a fișierelor de intrare, deci am fi putut să sărim peste folosirea `gzip` prin pointarea argumentului `data_files` direct către fișierele comprimate:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pointarea argumentului -> indicarea argumentului


```py
data_files = {"train": "SQuAD_it-train.json.gz", "test": "SQuAD_it-test.json.gz"}
squad_it_dataset = load_dataset("json", data_files=data_files, field="data")
```

Acest lucru poate fi util dacă nu doriți să decomprimați manual multe fișiere GZIP. Decomprimarea automată se aplică și altor formate comune precum ZIP și TAR, deci trebuie doar să pointați `data_files` către fișierele comprimate și sunteți gata!

Acum că știți cum să încărcați fișiere locale pe laptopul sau desktop-ul dumneavoastră, să aruncăm o privire la încărcarea fișierelor remote.

## Încărcarea unui dataset remote[[loading-a-remote-dataset]]

Dacă lucrați ca data scientist sau programator într-o companie, există o șansă bună ca dataseturile pe care doriți să le analizați să fie stocate pe un server remote. Din fericire, încărcarea fișierelor remote este la fel de simplă ca încărcarea celor locale! În loc să furnizați o cale către fișiere locale, pointați argumentul `data_files` al `load_dataset()` către unul sau mai multe URL-uri unde sunt stocate fișierele remote. De exemplu, pentru datasetul SQuAD-it găzduit pe GitHub, putem pur și simplu să pointăm `data_files` către URL-urile _SQuAD_it-*.json.gz_ după cum urmează:

```py
url = "https://github.com/crux82/squad-it/raw/master/"
data_files = {
"train": url + "SQuAD_it-train.json.gz",
"test": url + "SQuAD_it-test.json.gz",
}
squad_it_dataset = load_dataset("json", data_files=data_files, field="data")
```

Aceasta returnează același obiect `DatasetDict` obținut mai sus, dar ne economisește pasul de a descărca și decomprima manual fișierele _SQuAD_it-*.json.gz_. Aceasta încheie incursiunea noastră în diversele modalități de încărcare a dataseturilor care nu sunt găzduite pe Hugging Face Hub. Acum că avem un dataset cu care să ne jucăm, să ne murdărim mâinile cu diverse tehnici de manipulare a datelor!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

să ne murdărim mâinile is a english expression ("get hands dirty") and in romanian it might sound strange. Maybe use să explorăm?


<Tip>

✏️ **Încercați!** Alegeți un alt dataset găzduit pe GitHub sau [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/index.php) și încercați să îl încărcați atât local cât și remote folosind tehnicile introduse mai sus. Pentru puncte bonus, încercați să încărcați un dataset care este stocat în format CSV sau text (consultați [documentația](https://huggingface.co/docs/datasets/loading#local-and-remote-files) pentru mai multe informații despre aceste formate).

</Tip>




Loading