La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

TEORIE E TECNICHE DEL RICONOSCIMENTO

Presentazioni simili


Presentazione sul tema: "TEORIE E TECNICHE DEL RICONOSCIMENTO"— Transcript della presentazione:

1 TEORIE E TECNICHE DEL RICONOSCIMENTO
Apprendimento automatico Sentiment analysis in SciKit-Learn

2 REMINDER 1: SENTIMENT ANALYSIS
(o opinion mining) Identifica il ‘sentimento’ che un testo esprime Sentiment Analysis Positive Negative Neutral

3 SENTIMENT ANALYSIS COME CLASSIFICAZIONE DI TESTI
Treat sentiment analysis as a type of classification Use corpora annotated for subjectivity and/or sentiment Train machine learning algorithms: Naïve bayes Decision trees SVM Learn to automatically annotate new text

4 SENTIMENT ANALYSIS DI TWEETS

5 EASIER AND HARDER PROBLEMS
Tweets from Twitter are probably the easiest short and thus usually straight to the point Reviews are next entities are given (almost) and there is little noise Discussions, comments, and blogs are hard. Multiple entities, comparisons, noisy, sarcasm, etc

6 REMINDER 2: NAÏVE BAYES Metodi Bayesiani: decisione su classificazione basata su un modello PROBABILISTICO che coniuga uso di informazioni A PRIORI ed A POSTERIORI come nella regola di Bayes Metodi NAÏVE BAYES: si fanno assunzioni che semplificano molto il calcolo delle probabilità

7 CLASSIFICAZIONE DI TESTI USANDO NAÏVE BAYES
Attributes are text positions, values are words.

8 DATASET Diversi dataset di tweets annotati con sentiments
P.e. SEMEVAL-2014 In questo studio: il dataset di Nick Sanders Totale 5000 Tweets Annotati con classi positive / negative / neutral / irrelevant Script per scaricarsi I tweets a partire dalle ID

9 Naïve Bayes per sentiment analysis: un esempio
Supponiamo che il nostro training set consista di 6 tweets, che contengono solo le parole ‘awesome’ e ‘crazy’, e che sono stati classificati come segue:

10 Esempio, con’t I priors saranno quindi come segue:
Ora calcoliamo le likelihoods per `awesome’

11 Ancora l’esempio Le altre likelihoods: Evidence (= il denominatore)

12 Classificazione dei tweets che ne risulta

13 Due problemi Probabilita’ 0 Underflow

14 Cosa fare con gli zeri Anche un corpus di grandi dimensioni rimane sempre un campione molto limitato dell’uso del linguaggio, in cui molte parole anche di uso comune non occorrono Soluzione: SMOOTHING – distribuire la probabilita’ in modo da coprire tutti gli eventi In particolare, ADD ONE o LAPLACE smoothing

15 Underflow Le vere probabilita’ hanno valori molto bassi
E quando si hanno molte features il prodotto delle loro probabilita’ diventa ancora piu’ basso Presto anche i limiti di NumPy vengono raggiunti

16 Esempio di underflow Supponiamo di avere 65 features, per ognuna delle quali P(F|C) e’ <

17 Soluzione Rimpiazzare il prodotto delle probabilita’ con la SOMMA dei loro LOGARITMI

18 Un sentiment analyzer Naïve Bayes in SciKit-Learn
La libreria sklearn.naive_bayes contiene implementazioni di tre classificatori Naïve Bayes: GaussianNB (quando le features hanno distribuzione Gaussiana, per esempio altezze, etc) MultinomialNB (quando le features sono delle frequenze di occorrenza di parole) BernoulliNB (quando le features sono boolean) Per sentiment analysis: MultinomialNB

19 Creazione del modello Le parole dei tweets sono usate come feature. Vengono estratte e pesate usando la funzione create_ngram_model create_ngram_model usa la funzione TfidfVectorizer del pacchetto feature_extraction di scikit learn per estrarre i termini dai tweets create_ngram_model usa MultinomialNB per creare un classificatore La funzione Pipeline di scikit-learn viene usata per combinare l’estrattore di features e il classificatore in un unico oggetto (un estimator) che puo’ essere usato per estrarre features dai dati, creare (‘fit’) un modello, e usare il modello per classificare

20 Estrazione di termini dai tweets & classificazione
Estrae features & le pesa Classificatore Naïve Bayes Pipeline

21 Addestramento e valutazione
La funzione train_model Usa uno dei metodi nella libreria cross_validation di scikit-learn, ShuffleSplit, per calcolare i folds da usare nella cross validation Ad ogni iterazione della cross validation addestra un modello usando il metodo fit, poi valuta I risultati usando score

22 Creazione di un modello
Determina gli indici nella in ogni fold Addestra il modello

23 Esecuzione e risultati

24 Ottimizzazione Il programma sopra usa I valori di default dei parametri di TfidfVectorizer e MultinomialNB Possibili varianti per Tfidf Vectorizer: Usare unigrammi, bigrammi, trigrammi (parametro Ngrams) Rimuovere stopwords (stop_words) Usare versione binomiale dei counts Possibili varianti per MultinomialNB: Che tipo di smoothing usare

25 Esplorazione dei parametri
La ricerca dei valori migliori per I parametri e’ una delle operazioni standard in apprendimento automatico Scikit-learn, come anche Weka ed altri pacchetti simili, fornisce una funzione (GridSearchCV) che permette di esplorare i risultati ottenuti con valori diversi dei parametri

26 Ottimizzazione con GridSearchCV
Notate la sintassi per specificare I valori dei parametri Funzione di smoothing Usa F measure come metro di valutazione

27 Ripulire i tweets: emoticons

28 Ripulire I tweets: abbreviazioni

29 Usare il preprocessing con TfidfVectorizer

30 Altri possibili miglioramenti
Usare il POS tagger di nltk Usare un sentiment lexicon, per esempio SentiWordNet

31 Risultati complessivi

32 LETTURE

33 QUESTA LEZIONE Echert & Coelho, capitolo 6


Scaricare ppt "TEORIE E TECNICHE DEL RICONOSCIMENTO"

Presentazioni simili


Annunci Google