Attualmente sto cercando di classificare i tweet utilizzando il classificatore Naive Bayes in NLTK. Sto classificando tweet relativi a particolari simboli azionari, usando il prefisso '$' (es: $ AAPL). Sto basando il mio script Python su questo post del blog: Twitter Sentiment Analysis using Python and NLTK. Finora, ho ottenuto risultati ragionevolmente buoni. Tuttavia, sento che c'è molto, molto spazio per migliorare.Tweet Classifier Feature-Selection NLTK
Nel mio metodo di selezione delle funzioni di parole, ho deciso di implementare l'algoritmo tf-idf per selezionare le parole più informative. Dopo averlo fatto, ho sentito che i risultati non erano così impressionanti.
Ho quindi implementato la tecnica sul seguente blog: Text Classification Sentiment Analysis Eliminate Low Information Features. I risultati erano molto simili a quelli ottenuti con l'algoritmo tf-idf, che mi ha portato a esaminare più approfonditamente l'elenco delle caratteristiche più informative del mio classificatore. In quel momento ho capito che avevo un problema più grande:
I tweet e il linguaggio reale non usano la stessa grammatica e formulazione. In un testo normale, molti articoli e verbi possono essere individuati usando tf-idf o stopwords. Tuttavia, in un tweet corpus, alcune parole estremamente disinformative, come "il", "e", "è", ecc., Si verificano tanto quanto le parole che sono cruciali per classificare correttamente il testo. Non riesco a rimuovere tutte le parole che hanno meno di 3 lettere, perché alcune caratteristiche non informative sono più grandi di quelle e alcune informative sono più piccole.
Se potessi, mi piacerebbe non dover usare stopword, a causa della necessità di aggiornare frequentemente l'elenco. Tuttavia, se questa è la mia unica opzione, suppongo che dovrò andare con esso.
Quindi, per riassumere la mia domanda, qualcuno sa come veramente ottenere le parole più informative nella fonte specifica che è un Tweet?
EDIT: Sto cercando di classificare in tre gruppi: positivo, negativo e neutro. Inoltre, mi stavo chiedendo, per TF-IDF, dovrei solo tagliare le parole con i punteggi bassi, o anche alcuni con i punteggi più alti? In ogni caso, quale percentuale del vocabolario dell'origine del testo verrebbe esclusa dal processo di selezione delle caratteristiche?
Quanto è grande il tuo gruppo di tweet? Che tipo di punteggi stai ottenendo in questo momento? Inoltre, hai preso in considerazione l'utilizzo di un classificatore diverso da Naive Bayes e/o l'utilizzo di altre funzionalità oltre alle parole (ad esempio, autore)? –
Non ho considerato l'utilizzo di altre funzionalità: gli autori sarebbero troppo diversi. Il mio corpus, per il momento, è solo dell'ordine di un paio di centinaia di tweet. Per quanto riguarda i punteggi, a seconda delle dimensioni del mio corpus test (sempre più grande), vanno da 0 a 0,3, direi. – elliottbolzan
per punteggio, intendevo precisione/F1/qualunque cosa tu stia misurando. E potresti ottenere risultati migliori se hai un corpus più grande: ad es. idf potrebbe diventare molto più accurato. –