Apprendimento senza supervisione delle funzionalità per NER


11

Ho implementato il sistema NER con l'uso dell'algoritmo CRF con le mie caratteristiche artigianali che hanno dato risultati abbastanza buoni. Il fatto è che ho usato molte funzionalità diverse tra cui tag POS e lemmi.

Ora voglio creare lo stesso NER per una lingua diversa. Il problema qui è che non posso usare tag POS e lemmi. Ho iniziato a leggere articoli sull'apprendimento approfondito e l'apprendimento delle funzioni senza supervisione.

La mia domanda è:

È possibile utilizzare metodi per l'apprendimento delle funzioni senza supervisione con l'algoritmo CRF? Qualcuno ha provato questo e ha ottenuto qualche buon risultato? C'è qualche articolo o tutorial su questo argomento?

Non capisco ancora completamente questo modo di creare funzionalità, quindi non voglio spendere troppo tempo per qualcosa che non funzionerà. Quindi qualsiasi informazione sarebbe davvero utile. Creare un intero sistema NER basato sull'apprendimento profondo è un po 'troppo per ora.

Risposte:


5

Sì, è del tutto possibile combinare l'apprendimento senza supervisione con il modello CRF. In particolare, ti consiglio di esplorare la possibilità di utilizzare le funzionalità di word2vec come input per il tuo CRF.

Word2vec addestra a per distinguere tra parole appropriate per un determinato contesto e parole selezionate casualmente. I pesi selezionati del modello possono quindi essere interpretati come una rappresentazione vettoriale densa di una determinata parola.

Questi vettori densi hanno la proprietà attraente che le parole che sono simili semanticamente o sintatticamente hanno rappresentazioni vettoriali simili. L'aritmetica vettoriale di base rivela persino alcune interessanti relazioni apprese tra le parole.
Ad esempio, vettore ("Parigi") - vettore ("Francia") + vettore ("Italia") produce un vettore che è abbastanza simile al vettore ("Roma").

A un livello elevato, è possibile pensare alle rappresentazioni di word2vec come simili alle rappresentazioni LDA o LSA, nel senso che è possibile convertire un vettore di input sparse in un vettore di output denso che contiene informazioni di somiglianza delle parole.

Del resto, LDA e LSA sono anche valide opzioni per l'apprendimento delle funzioni senza supervisione - entrambi tentano di rappresentare le parole come combinazioni di "argomenti" e producono rappresentazioni di parole dense.

Per il testo inglese, Google distribuisce modelli word2vec preinstallati su un enorme set di dati di Google News da 100 miliardi di parole, ma per altre lingue dovrai addestrare il tuo modello.


Ehi, pugno, voglio ringraziarti per la tua risposta. Ho un'altra domanda. I vettore di parole che vengono restituiti dall'algoritmo word2vec hanno valori float, quindi parole come grandi e grandi avranno vettori vicini nello spazio vettoriale, ma i valori dei vettori potrebbero essere completamente diversi. Ad esempio grande = [0.1, 0.2, 0,3] e maggiore = [0.11, 0.21, 0.31]. Non è un problema per l'algoritmo CRF, perché questo algoritmo li tratterebbe come non simili? C'è qualche elaborazione aggiuntiva che dovrebbe essere fatta prima di usare questa parola vettori in CRF? Spero che la mia domanda sia abbastanza chiara.
MaticDiba,

4

In questo articolo del 2014 ( GitHub ), gli autori hanno confrontato diverse strategie di incorporazione di incorporamenti di parole in un sistema NER basato su CRF, tra cui incorporamento denso, incorporamento binerizzato, incorporamento di cluster e un nuovo metodo prototipo . L'uso dei vettori densi direttamente come suggerito da Vlad è il modo più semplice ma anche il meno efficace in più valutazioni.

Ho implementato l'idea prototipo nel mio progetto NER specifico per il dominio e funziona abbastanza bene per me.


3

Sono in ritardo di soli 5 mesi ma con CRFSuite puoi effettivamente utilizzare quelle funzioni float come numeri, non come stringhe. Per questo, devi solo inventare un'etichetta univoca per ogni dimensione, quindi aggiungere un ":" seguito dal valore.

Ad esempio, una parola "giungla" è rappresentata in 5 dimensioni: 0,1 0,4 0,8 0,2 0,9

Quindi CRFSuite prenderebbe quella parola + funzionalità come:

ETICHETTA f1: 0.1 f2: 0.4 f3: 0.8 f4: 0.2 f5: 0.9

dove ovviamente sostituisci `` LABEL '' con una stringa effettiva e separi tutti gli spazi con le schede (questo è il formato per CRFSuite).

Non sono sicuro però per altri pacchetti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.