Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.