2010-04-03 16 views
12

Sono un principiante in NLP e NLTK. Sono molto interessato alla PNL e quindi lo si è iscritto a un corso di fine settimana su IA in qualche istituzione locale, che mi richiede per realizzare un progetto per il completamento del corso, e ho deciso di farlo in PNL. Il problema è che l'istruttore non è affatto buono per questo corso (secondo me lei è solo un ciarlatano) (o potrebbe non essere molto interessato a insegnare come questo è il suo ultimo gruppo qui dopo il quale l'istituto sta per inviare lei fuori). Quindi sono bloccato in una situazione in cui ho finito il progetto in un mese a un mese e mezzo, ma come persona ingenua nel campo mi sembra molto difficile comprendere le cose necessarie per decidere su progetto. (Inoltre, dato che sto lavorando a pieno ritmo , non trovo abbastanza tempo da dedicare a questo).Elaborazione del linguaggio naturale - Idee per progetti per principianti

Ho considerato l'utilizzo del toolkit NLTK in python per il progetto per i seguenti motivi. (1) Python è famoso per facilità d'uso, prototipazione rapida e comunità molto attiva (considerando un brevissimo arco di tempo che ho, e siccome sono un programmatore C di professione, ho bisogno di un linguaggio che possa imparare velocemente ed è semplice usare).

(2) NLTk ha una buona revisione e una vasta documentazione e una comunità molto attiva.

Quindi il problema è che progetto dovrei prendere, in modo che possa imparare qualcosa e sia in grado di completare il progetto in tempo. (so quasi nulla in PNL, non sanno nemmeno che cosa esattamente è corpora ... :()

Quindi, per favore mi suggeriscono alcuni argomenti che dovrebbero prendere in considerazione per il progetto.

Saluti,

microkernel :)

+0

avete visto http://www.nltk.org/projects? – miku

+0

Sì, ho visto, ma il problema è che come principiante non ho idea di quale sarebbe adatto per me (considerando che ho avuto modo di finire in 1 mese) Puoi suggerire cosa sarebbe adatto a principianti come me. – Microkernel

+3

"Quale progetto posso fare" tipo di domanda. – alvas

risposta

11

la maggior parte dei progetti "principiante" mirano a reimplementare algoritmi ben noti, in modo che il principiante può imparare verificando i loro risultati contro soluzioni note. Per questo, mi sento di raccomandare qualcosa di semplice, come un filtro antispam email. Si potrebbe iniziare con la creazione di un file di allenamento, cioè copiare il testo di diversi reali email in un file CSV e manualmente etichettarli spam o non spam, come:

text|is_spam 
hi bob! how are you?|0 
what time are you coming over|0 
how to buy viagra now!|1 

Avanti, devi creare un test file, nello stesso formato del file di allenamento, ma ovviamente con diversi esempi.

Quindi, devi creare il tuo filtro classificatore/spam. Esistono molti modi diversi per implementare un filtro antispam, ma il più fondamentale è semplicemente contando la frequenza con cui appare una parola con is_spam = 0 e is_spam = 1. Ad esempio, in base al file di allenamento sopra, la parola "viagra" è associata a 1 classificazione spam, ma 0 classificazioni non spam, quindi è probabile che anche le e-mail future contenenti la parola "viagra" saranno classificate come spam. Allo stesso modo, la parola "come" appare in 1 spam e 1 email non spam, quindi è meno probabile che indichi una classificazione definitiva.

Si dovrebbe quindi addestrare il classificatore sul file di allenamento e calcolare la precisione eseguendolo sul file di test.

Se il metodo di cui sopra è troppo semplice, è possibile aumentare la sua complessità contando n-grammi (gruppi di parole), o la struttura anche grammaticale dalla prima codifica il discorso parte-di-(ad esempio, un sacco di spam è di solito spazzatura casuale popolato da parole chiave, in cui il non spam di solito ha un senso).Potresti potenzialmente implementare diversi classificatori diversi e confrontarne l'accuratezza.

Certo, c'è un po 'più di quello, ma questi metodi sono ben documentati su Internet, ed è il tuo progetto quindi spetta a te di approfondire ulteriormente. In bocca al lupo.

+0

Grazie mille :) Questo è un progetto davvero interessante da prendere in considerazione. (Per conoscere il modello di spam nel tempo, negli ultimi mesi ho raccolto tutti gli spam che stavo ricevendo (metterli in una cartella separata) e ora ho raccolto oltre 2000+ spam, suppongo che sia sufficientemente grande dati :). Ora è venuto a qualche utilità. Wow!!! Grazie per l'aiuto compagno :) – Microkernel

7

Alcune idee:.

  • Un programma che indovina il linguaggio che un file di input è scritto in Avreste bisogno di alcuni campioni di diverse lingue; Wikipedia è una fonte eccellente.

  • Un programma che, basato su un corpo di testo, costruisce parole o frasi simili a quelle del corpo.

  • Trova qualcosa di interessante da fare con lo Voynich Manuscript. È possibile trovare le trascrizioni here.

(A proposito, "corpus" è solo una parola di fantasia per "mucchio di testo" Da Wikipedia:. "Una serie ampia e strutturata di testi (ora di solito archiviate elettronicamente e trasformati)" La parola di solito si riferisce ai testi che utilizzi per addestrare e testare il tuo algoritmo, al contrario dei testi sconosciuti che incontrerà sul campo.)

+0

Grazie mille :) Il primo sembra essere a mia portata (immagino che questo è quello che utilizza Google Toolbar per findout la lingua della pagina web e chiedere aiuto di traduzione). Anche l'ultimo sembra interessante, ma nella situazione attuale sono, non posso farlo immagino ... Grazie per i suggerimenti :) – Microkernel

0

È possibile utilizzare la PNL per registrare alcune parti di una chiamata di assistenza clienti su un VOIP Telefono. Le altre opzioni inserite dall'utente possono essere prese dalla tastiera. Con questo sistema in atto, è possibile eliminare la necessità di personale di supporto. Ad esempio, reimpostare la password su un ID e-mail in un'organizzazione con autorizzazione vocale.

Problemi correlati