fastText come biblioteca per un efficace apprendimento delle rappresentazioni delle parole e della caratterizzazione delle frasi. È scritto in C+++ e supporta il multiprocessing durante la preparazione. FastText consente di preparare rappresentazioni di parole e frasi amministrate e non amministrate. Queste rappresentazioni (embeddings) possono essere utilizzate per varie applicazioni, dalla pressione delle informazioni, come evidenziatori in modelli extra, per la determinazione dei concorrenti, o come inizializzatori per l’apprendimento delle mosse.

Rappresentazione

FastText è in grado di realizzare un’ottima esecuzione per la rappresentazione di parole e il raggruppamento di frasi, grazie all’utilizzo di dati a livello di carattere.

Ogni parola è parlata come un sacco di caratteri n-grammi nonostante la parola stessa, così per esempio, per la parola materia, con n = 3, le rappresentazioni fastText per il carattere n-grammi è <ma, groviglio, att, tte, tte, ter, er>. < e > sono aggiunte come immagini limite per riconoscere l’ngram di una parola da una parola stessa, così per esempio, se la parola groviglio è un pezzo del gergo, è parlata come <mat>. Questo aiuta a salvare il significato delle parole più brevi che possono apparire come ngrammi di parole diverse. Inalienabilmente, questo permette anche di cogliere l’importanza per i postfix/prefix.

La lunghezza di n grammi utilizzati può essere limitata dai banner – minn e – maxn per il numero minimo e massimo di caratteri da utilizzare singolarmente. Questi controllano la portata delle qualità per cui ottenere n-grammi. Il modello è visto come un modello a pacchetto di parole poiché, a parte la finestra scorrevole di determinazione di n-grammi, non c’è una struttura interna di una parola che sia considerata per la featurizzazione, cioè finché i caratteri cadono sotto la finestra, la richiesta del carattere n-grammi non fa differenza. Si possono anche disattivare completamente le incastonature di n-grammi anche impostando entrambi a 0. Questo può essere utile quando le “parole” nel vostro modello non sono parole per una lingua specifica, e il livello di carattere n-grammi non sarebbe di buon auspicio. Il caso d’uso più noto è il punto in cui si mette in ids come parole. Durante l’aggiornamento del modello, fastText impara i carichi per ognuno degli n-grammi proprio come l’intera parola per capire le informazioni

Mentre la preparazione per il fastText è multi-strung, l’analisi delle informazioni viene effettuata attraverso una stringa solitaria. L’analisi e la tokenizzazione vengono effettuate quando le informazioni vengono analizzate. Dovremmo percepire come questo viene fatto in dettaglio:

FastText prende un handle di record per mezzo della – contesa di input per le informazioni di input. La navigazione nelle informazioni da stdin non viene mantenuta. FastText installa alcuni vettori per monitorare i dati delle informazioni, all’interno chiamati word2int_ e words_. word2int_ è elencato sull’hash della stringa di parole, e memorizza un file int consecutivo al word_ cluster (std:: vettoriale) per quanto possa valere. Il word_ cluster è inserito costantemente nella richiesta che le parole interessanti compaiono quando si esaminano le informazioni, e memorizza come valore la sezione struct che caratterizza tutti i dati sul token della parola. passage contiene i dati di accompagnamento:

Un paio di cose da notare qui, la parola è la rappresentazione della stringa della parola, il conteggio è l’inclusione assoluta della singola parola nella riga informativa, entry_type è uno dei {word, label} con un marchio appena utilizzato per il caso amministrato. Tutti i token di informazione, facendo poca attenzione a entry_type sono inseriti in un riferimento alla parola simile, il che rende molto più semplice l’allungamento più veloce per contenere diversi tipi di sostanze (parlerò sempre più spesso di come fare questo in un ultimo post). Infine, le sotto-parole sono un vettore di tutte le parole n-grammi di una parola specifica. Queste sono fatte anche quando le informazioni sono state analizzate e sono passate alla fase di preparazione.

Il vettore word2int_ è di dimensione MAX_VOCAB_SIZE = 30000000; Questo numero è codificato in modo fisso. Questa dimensione può essere restrittiva quando si prepara su un corpus enorme, e può essere espansa con successo mentre si occupa dell’esecuzione. La lista per il word2int_ cluster è la stima di una stringa ad int hash ed è un numero notevole tra 0 e MAX_VOCAB_SIZE. Nel caso in cui ci sia un crash dell’hash, e un passaggio sia stato appena aggiunto all’hash, il valore viene aumentato fino a quando non si individua un id unico per assegnare una parola.

Lungo queste linee, l’esecuzione può esacerbare significativamente una volta che la dimensione del gergo arriva a MAX_VOCAB_SIZE. Per prevenire questo, fastText pota il gergo ogni volta che la dimensione dell’hashish supera il 75% di MAX_VOCAB_SIZE. Questo è finito aumentando prima il limite del conteggio di base per una parola che si adatta al conto per essere un pezzo del gergo, e potando il lessico per tutte le parole che hanno un conteggio non tanto quanto questo. Il controllo del limite del 75% avviene quando ogni nuova parola è inclusa, quindi questa potatura programmata può avvenire in qualsiasi fase della procedura di comprensione del documento.

Oltre alla potatura programmata, la base significa che le parole che sono un pezzo del gergo è vincolata utilizzando i banner – minCount e – minCountLabel per parole e marchi (utilizzati per la preparazione regolata) individualmente. La potatura dipendente da questi banner avviene dopo che l’intero documento di preparazione è stato gestito. Il vostro lessico potrebbe essere impostato su un valore minimo più alto rispetto a quello fisicamente indicato se il numero totale di parole notevoli presenti nel vostro banner fa scattare la potatura programmata determinata in precedenza. La trebbiatura al minCount predefinito avverrà comunque in modo coerente, garantendo con successo che le parole con un controllo inferiore non lo rendano un aspetto importante delle vostre informazioni.

Per il controllo negativo della sfortuna, viene poi costruita una tabella di parole negative di dimensioni NEGATIVE_TABLE_SIZE = 10000000. Si noti che questo è ⅓ della dimensione del MAX_VOCAB_SIZE. La tabella è costruita attingendo da una circolazione unigram della base quadrata della ricorrenza di ogni parola, cioè.ken.

Questo garantisce che le occasioni in cui ogni parola appare nella tabella dei negativi siano direttamente relative alla base quadrata della sua ricorrenza. Questa tabella viene poi riordinata per garantire la randomizzazione.

Successivamente, viene sviluppata una tabella di prova per smaltire le parole successive come grafico nel segmento 2.3 della prima carta di espansione word2vec. Il pensiero alla base di questo è che le parole che vengono rimescolate danno meno dati rispetto alle parole che non sono comuni, e che la loro rappresentazione non cambierà di molto dopo aver visto in precedenza l’osservazione di numerose occasioni di una parola simile.

La carta traccia la tecnica di accompagnamento per lo smaltimento: la parola preparazione viene smaltita con una probabilità di

Il bordo di default può essere fisicamente modificato con il – t arg. La stima del bordo, non ha la stessa importanza in fastText come nella prima carta word2vec, e dovrebbe essere sintonizzata per la vostra applicazione.

Una parola viene eliminata solo se, durante la fase di preparazione, un prelievo arbitrario da un’appropriazione uniforme da qualche parte nell’intervallo 0 e 1 è più importante della probabilità di eliminarla. Di seguito è riportato un grafico della circolazione per i valori che vanno da 0-1 per il bordo di default. Come appare nel grafico, la probabilità che un pareggio sia più degno di nota degli incrementi P come incrementi di ricorrenza, e lungo queste linee, è anche la probabilità di essere smaltito con incrementi come la ricorrenza. Questo vale solo per i modelli non assistiti. Le parole non vengono eliminate per un modello gestito.

Nella remota possibilità che si installi la preparazione con – banner vettoriali pre-formati, le qualità del record di informazioni vengono utilizzate per introdurre i vettori del livello di informazione. Nel caso in cui sia vago, viene fatto un reticolo di misura MxN dove M = MAX_VOCAB_SIZE + bucket_size, N = diminuiscono. bucket_size si confronta con la dimensione assoluta dell’esposizione assegnata per tutti i token ngram. Gli ngrammi sono introdotti per mezzo di un hash numerico (l’equivalente capacità di hash) del contenuto di ngram e l’inserimento del modulo di questo numero di hash sulla griglia installata in una posizione comparativa con MAX_VOCAB_SIZE + hash. Si noti che potrebbero esserci crash nello spazio degli ngrammi, mentre gli impatti sono irrealistici per le parole uniche. Questo potrebbe influenzare anche l’esecuzione del modello.

Diminish parla all’elemento dello strato nascosto nella preparazione, e in questo modo l’elemento delle incastonature, ed è impostato per mezzo del – diminuire banner. Questo è impostato a 100 come una cosa ovvia. La rete viene installata con una vera e propria appropriazione uniforme da qualche parte nell’intervallo 0 e 1/diminish ed è uniforme nel quadrato 3D dell’unità.