Tecnica di apprendimento automatico per l'apprendimento di stringhe


11

Ho un elenco di parole, appartenenti a diverse categorie autodefinite. Ogni categoria ha il suo modello (ad esempio uno ha una lunghezza fissa con caratteri speciali, un'altra esiste di caratteri che si verificano solo in questa categoria di "parola", ...).

Per esempio:

"ABC" -> type1
"ACC" -> type1
"a8 219" -> type2
"c 827" -> type2
"ASDF 123" -> type2
"123123" -> type3
...

Sto cercando una tecnica di apprendimento automatico per apprendere questi schemi da solo, sulla base dei dati di allenamento. Ho già provato a definire alcune variabili predittive (ad esempio lunghezza delle parole, numero di caratteri speciali, ...) da solo e quindi ho usato una rete neurale per apprendere e prevedere la categoria. Ma non è quello che voglio. Voglio una tecnica per imparare il modello per ogni categoria da solo - anche per imparare modelli a cui non ho mai pensato.

Quindi fornisco i dati di apprendimento dell'algoritmo (costituiti dagli esempi di categorie di parole) e voglio che apprenda schemi per ciascuna categoria per prevedere in seguito la categoria da parole simili o uguali.

Esiste un modo all'avanguardia per farlo?

Grazie per l'aiuto


Dal mio punto di vista, puoi fare smth come questo cistrome.org/cr/images/Figure4.png , ma invece di ACGT puoi usare modelli come "numero, maiuscolo, minuscolo, spazio", ecc.
German Demidov

@GermanDemidov grazie per il tuo commento. ho già pensato a qualcosa del genere. Ma in realtà voglio che l'algoritmo di apprendimento lo faccia da solo e rilevi gli schemi. (Non so se è possibile per ML).
chresse,

in realtà questi schemi sono apprendimento automatico. Ovviamente puoi farlo con l'apprendimento automatico, ma una persona deve fare un'estrazione delle caratteristiche prima di darle come input all'algoritmo ML. Quali caratteristiche vorresti estrarre da questi esempi? Posso pensare alle funzioni di hash, ma funzionerà piuttosto male per stringhe di lunghezza diversa. Quindi, poiché troverai un modo per estrarre le funzionalità, sarai in grado di utilizzare i metodi ML. Puoi anche fare la distanza Levenshtein tra simboli di classi diverse, raggrupparli e usare la distanza minima dai centroidi per la classificazione.
Demidov tedesco,

@Chresse potresti voler aggiungere il tag di apprendimento senza supervisione alla tua domanda. Per fare questo con le reti neurali, questo documento LeCun potrebbe essere di interesse. Dato che non ho molta esperienza con il text mining o le reti neurali, non posso dire quanto possa essere valido questo approccio.
GeoMatt22

1
Quindi trasforma i tuoi vettori usando le funzionalità che usi naturalmente (u - maiuscole, l - minuscole, n - numero, s - spazio), quindi i tuoi vettori saranno "ABC" - "uuu", "a8 219" - "lnsnnn" e così su. Quindi è necessario introdurre una misura della distanza, ad esempio, usando questo algoritmo: en.wikipedia.org/wiki/Smith –Waterman_algorithm. Successivamente, sarai in grado di eseguire una classificazione / clusterizzazione / visualizzazione dei tuoi dati.
Demidov tedesco,

Risposte:


6

Il tuo problema potrebbe essere riaffermato come voler scoprire le espressioni regolari che corrisponderanno alle stringhe di ogni categoria? Questo è un problema di "generazione regex", un sottoinsieme del problema di induzione grammaticale (vedi anche il sito Web di Alexander Clark ).

Il problema dell'espressione regolare è più semplice. Posso indicarti il codice frak e RegexGenerator . Il RegexGenerator ++ online ha riferimenti ai loro documenti accademici sul problema.


5

Potresti provare reti neurali ricorrenti, in cui il tuo input è una sequenza di lettere nella parola e il tuo output è una categoria. Questo si adatta alle tue esigenze in modo da non codificare manualmente alcuna funzionalità.

Tuttavia, affinché questo metodo funzioni davvero, sarà necessario un set di dati di addestramento abbastanza ampio.

È possibile fare riferimento all'etichettatura delle sequenze supervisionate con reti neurali ricorrenti di Alex Graves capitolo 2 per maggiori dettagli.

Questo è un link alla prestampa


1
Potresti aggiungere una citazione completa per il tuo riferimento finale, nel caso in cui il link "preprint.pdf" si interrompa in futuro? (Credo che questo sia il capitolo rilevante?)
GeoMatt22
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.