Huggy Lingo Utilizzare l’Apprendimento Automatico per Migliorare i Metadati del Linguaggio sul Hugging Face Hub
Huggy Lingo Utilizzo di ML per migliorare i metadati del linguaggio su Hugging Face Hub
Huggy Lingo: Utilizzo del Machine Learning per Migliorare i Metadati Linguistici su Hugging Face Hub
tl;dr: Stiamo utilizzando il machine learning per individuare la lingua dei dataset di Hub senza metadati linguistici e utilizziamo librarian-bot per creare richieste di pull per aggiungere questi metadati.
Hugging Face Hub è diventato il repository in cui la comunità condivide modelli di machine learning, dataset e applicazioni. Con l’aumento del numero di dataset, i metadati diventano sempre più importanti come strumento per trovare la risorsa giusta per il proprio caso d’uso.
In questo post del blog, sono entusiasta di condividere alcuni esperimenti preliminari che cercano di utilizzare il machine learning per migliorare i metadati dei dataset ospitati su Hugging Face Hub.
Metadati Linguistici per i Dataset su Hub
Attualmente ci sono ~50.000 dataset pubblici su Hugging Face Hub. I metadati sulla lingua utilizzata in un dataset possono essere specificati utilizzando un campo YAML all’inizio della scheda del dataset.
- Utilizzo dei valori SHAP per l’interpretabilità dei modelli nel Machine Learning
- 50 suggerimenti di ChatGPT per far crescere la tua azienda
- Ricercatori del MIT introducono PhotoGuard un nuovo strumento di intelligenza artificiale che impedisce la manipolazione non autorizzata delle immagini.
Tutti i dataset pubblici specificano 1.716 lingue uniche tramite un tag linguistico nei loro metadati. Si noti che alcuni di essi potrebbero essere il risultato della specificazione delle lingue in modi diversi, ad esempio en
vs eng
vs english
vs English
.
Ad esempio, il dataset IMDB specifica en
nei metadati YAML (indicando l’inglese):
Sezione dei metadati YAML per il dataset IMDB
Non sorprende che l’inglese sia di gran lunga la lingua più comune per i dataset su Hub, con circa il 19% dei dataset su Hub che elencano la loro lingua come en
(senza includere eventuali variazioni di en
, quindi la percentuale effettiva è probabilmente molto più alta).
La frequenza e la percentuale di frequenza dei dataset su Hugging Face Hub
Come appare la distribuzione delle lingue se escludiamo l’inglese? Possiamo vedere che c’è un raggruppamento di alcune lingue dominanti e successivamente c’è una diminuzione abbastanza uniforme delle frequenze con cui le lingue appaiono.
Distribuzione dei tag linguistici per i dataset su Hub escludendo l’inglese.
Tuttavia, c’è una grande eccezione a questo. La maggior parte dei dataset (circa l’87%) non specifica la lingua utilizzata; solo circa il 13% dei dataset include informazioni sulla lingua nei loro metadati.
La percentuale di dataset che hanno metadati linguistici. True indica che i metadati linguistici sono specificati, False significa che non sono presenti dati sulla lingua. Nessun dato sulla scheda significa che non ci sono metadati o non è stato possibile caricarli dalla libreria Python `huggingface_hub`.
Perché i Metadati Linguistici Sono Importanti?
I metadati linguistici possono essere uno strumento fondamentale per trovare dataset pertinenti. Hugging Face Hub consente di filtrare i dataset per lingua. Ad esempio, se vogliamo trovare dataset in lingua olandese, possiamo utilizzare un filtro su Hub per includere solo dataset con dati olandesi.
Attualmente questo filtro restituisce 184 dataset. Tuttavia, ci sono dataset su Hub che includono l’olandese ma non lo specificano nei metadati. Questi dataset diventano più difficili da trovare, soprattutto con l’aumento del numero di dataset su Hub.
Molte persone desiderano trovare dataset per una particolare lingua. Uno dei principali ostacoli per allenare dei buoni LLM open source per una determinata lingua è la mancanza di dati di addestramento di alta qualità.
Se passiamo al compito di trovare modelli di machine learning rilevanti, sapere quali lingue sono state incluse nei dati di addestramento di un modello può aiutarci a trovare modelli per la lingua di nostro interesse. Questo si basa sulla specifica di queste informazioni nel dataset.
Infine, sapere quali lingue sono rappresentate su Hub (e quali no) ci aiuta a comprendere i pregiudizi linguistici di Hub e a informare gli sforzi della comunità per colmare le lacune nelle lingue specifiche.
Prevedere le Lingue dei Dataset Utilizzando il Machine Learning
Abbiamo già visto che molti dei dataset presenti su Hugging Face Hub non includono metadati per la lingua utilizzata. Tuttavia, dal momento che questi dataset sono già condivisi in modo aperto, potremmo cercare di identificare la lingua utilizzando l’apprendimento automatico.
Ottenere i dati
Un modo per accedere ad alcuni esempi da un dataset è utilizzare la libreria datasets per scaricare i dataset, ad esempio:
from datasets import load_dataset
dataset = load_dataset("biglam/on_the_books")
Tuttavia, per alcuni dei dataset presenti su Hub, potremmo preferire di non scaricare l’intero dataset. Potremmo invece cercare di caricare un campione del dataset. Tuttavia, a seconda di come il dataset è stato creato, potremmo comunque finire per scaricare più dati di quelli necessari sulla macchina su cui stiamo lavorando.
Fortunatamente, molti dataset su Hub sono disponibili tramite il server dei dataset. Il server dei dataset è un’API che ci consente di accedere ai dataset ospitati su Hub senza scaricare il dataset localmente. Il server dei dataset alimenta l’anteprima del visualizzatore dei dataset che vedrete per molti dataset ospitati su Hub.
Per questo primo esperimento di previsione della lingua per i dataset, definiamo una lista di nomi di colonne e tipi di dati che probabilmente contengono contenuti testuali, ad esempio i nomi delle colonne “text” o “prompt” e le caratteristiche di tipo “string” sono probabilmente rilevanti, mentre “image” non lo è. Ciò significa che possiamo evitare di prevedere la lingua per i dataset in cui le informazioni sulla lingua sono meno rilevanti, ad esempio i dataset di classificazione delle immagini. Utilizziamo il server dei dataset per ottenere 20 righe di dati testuali da passare a un modello di apprendimento automatico (potremmo modificare questo per prendere più o meno esempi dal dataset).
Questo approccio significa che per la maggior parte dei dataset su Hub possiamo richiedere rapidamente il contenuto delle colonne di testo probabili per le prime 20 righe di un dataset.
Prevedere la lingua di un dataset
Una volta che abbiamo alcuni esempi di testo da un dataset, dobbiamo prevedere la lingua. Ci sono varie opzioni qui, ma per questo lavoro, abbiamo utilizzato il modello fastText per l’identificazione della lingua creato da Meta come parte del lavoro No Language Left Behind. Questo modello può rilevare 217 lingue che rappresenteranno probabilmente la maggior parte delle lingue per i dataset ospitati su Hub.
Passiamo 20 esempi al modello rappresentando righe da un dataset. Ciò porta a 20 previsioni di lingua individuali (una per riga) per ciascun dataset.
Una volta ottenute queste previsioni, facciamo ulteriori filtraggi per determinare se accetteremo le previsioni come suggerimenti per i metadati. Questo consiste approssimativamente in:
- Raggruppare le previsioni per ciascun dataset per lingua: alcuni dataset restituiscono previsioni per più lingue. Raggruppiamo queste previsioni in base alla lingua prevista, ad esempio se un dataset restituisce previsioni per l’inglese e il olandese, raggruppiamo insieme le previsioni per l’inglese e l’olandese.
- Per i dataset con più lingue previste, contiamo quante previsioni abbiamo per ciascuna lingua. Se una lingua viene prevista meno del 20% delle volte, scartiamo questa previsione, ad esempio se abbiamo 18 previsioni per l’inglese e solo 2 per l’olandese, scartiamo le previsioni per l’olandese.
- Calcoliamo il punteggio medio per tutte le previsioni per una lingua. Se il punteggio medio associato a una previsione di lingua è inferiore all’80%, scartiamo questa previsione.
Diagramma che mostra come vengono gestite le previsioni.
Dopo aver effettuato questo filtraggio, abbiamo un ulteriore passo per decidere come utilizzare queste previsioni. Il modello di previsione della lingua fastText restituisce le previsioni come un codice ISO 639-3 (uno standard internazionale per i codici di lingua) insieme a un tipo di scrittura. Ad esempio, “kor_Hang” è il codice di lingua ISO 693-3 per il coreano (kor) + lo script Hangul (Hang) che rappresenta lo script di una lingua secondo il codice ISO 15924.
Scartiamo le informazioni sullo script poiché attualmente non sono catturate in modo coerente come metadati su Hub e, quando possibile, convertiamo la previsione di lingua restituita dal modello da codici di lingua ISO 639-3 a codici di lingua ISO 639-1. Ciò è fatto principalmente perché questi codici di lingua hanno un supporto migliore nell’interfaccia utente di Hub per navigare tra i dataset.
Per alcuni codici ISO 639-3, non esiste un equivalente ISO 639-1. Per questi casi specificiamo manualmente una mappatura se riteniamo che abbia senso, ad esempio l’arabo standard (“arb”) viene mappato all’arabo (“ar”). Quando non è possibile effettuare una mappatura ovvia, attualmente non suggeriamo metadati per questo dataset. Nelle iterazioni future di questo lavoro potremmo adottare un approccio diverso. È importante riconoscere che questo approccio comporta dei lati negativi, poiché riduce la diversità delle lingue che potrebbero essere suggerite e si basa anche su giudizi soggettivi sulle lingue che possono essere mappate tra loro.
Ma il processo non si ferma qui. Dopotutto, a cosa serve prevedere la lingua dei dataset se non possiamo condividere queste informazioni con il resto della comunità?
Utilizzare Librarian-Bot per Aggiornare i Metadati
Per garantire che questi preziosi metadati linguistici siano incorporati nuovamente nell’Hub, ci rivolgiamo a Librarian-Bot! Librarian-Bot prende le previsioni linguistiche generate dal modello fastText di Meta per l’identificazione della lingua di Facebook e apre richieste di pull per aggiungere queste informazioni ai metadati di ciascun dataset corrispondente.
Questo sistema non solo aggiorna i dataset con le informazioni linguistiche, ma lo fa anche in modo rapido ed efficiente, senza richiedere lavoro manuale da parte degli esseri umani. Se il proprietario di un repository decide di approvare e unire la richiesta di pull, allora i metadati linguistici diventano disponibili per tutti gli utenti, migliorando significativamente l’usabilità dell’Hugging Face Hub. Puoi seguire ciò che il librarian-bot sta facendo qui!
Prossimi Passi
Con l’aumentare del numero di dataset nell’Hub, i metadati diventano sempre più importanti. In particolare, i metadati linguistici possono essere estremamente preziosi per identificare il dataset corretto per il tuo caso d’uso.
Grazie all’assistenza del Datasets Server e dei Librarian-Bot, possiamo aggiornare i metadati dei nostri dataset su una scala che non sarebbe possibile manualmente. Di conseguenza, stiamo arricchendo l’Hub e rendendolo uno strumento ancora più potente per scienziati dei dati, linguisti ed appassionati di intelligenza artificiale in tutto il mondo.
Come bibliotecario di machine learning presso Hugging Face, continuo a esplorare opportunità per l’arricchimento automatico dei metadati per gli artefatti di machine learning ospitati sull’Hub. Non esitare a contattarmi (daniel at questo sito dot co) se hai idee o vuoi collaborare in questo sforzo!