Realizando Análise de sentimento no Twitter

Parece que todo mundo está usando o Twitter para fazer suas sentimentos conhecidos hoje. Claro, o problema é que ninguém realmente sabe a semelhança desses sentimentos - isto é, se alguém poderia derivar qualquer tipo de tendência de todos os tweets lá fora.

O exemplo a seguir mostra como classificar os tweets como sentimentos positivos ou negativos automaticamente. O exemplo usa sentimentos específicos que podem ser alteradas para ver resultados diferentes.

de NaiveBayesClassifierfrom importação nltk.classify LogisticRegressionpositive_tweets sklearn.feature_extraction.text importação TfidfVectorizerfrom sklearn.linear_model importação = [( 'Flores cheiro bom "," positivo "), (" Birds são bonitas', 'positiva'), ( 'Isso vai ser um grande dia "," positivo "), (" Eu amo meu bFF ',' positiva '), (' Este restaurante tem comida excelente "," positivo ")] negative_tweets = [( 'cebolas cheiro ruim', 'negativo '), (' lixo é feio "," negativo "), ( 'Nada deu certo hoje", "negativo"), ( "Eu odeio meu chefe", "negativo"), ( "Este restaurante tem comida terrível" , "negativo")] test_tweets = [( 'Cantar me faz feliz "," positivo "), (" céus azuis são agradáveis ​​"," positivo "), (" Eu amo a mola', 'positiva'), ( 'Coughing faz-me triste ',' negativo '), (' céu nublado são deprimentes "," negativo "), ( 'Eu odeio o inverno", "negativo")] X_train, y_train = zip (* positive_tweets + negative_tweets) X_test, y_test = ZIP (* test_tweets) tfidfvec = TfidfVectorizer (em minúsculas = True) vetorizado = tfidfvec.fit_transform (X_train) sentiment_classifier = regressão logística () sentiment_classifier.fit (vetorizado, y_train) vectorized_test = tfidfvec.transform (X_test) predição = lista (sentiment_classifier.predict ( vectorized_test)) probabilidades = list (sentiment_classifier.predict_probavectorized_test) [:, 1]) de impressão de rótulos corretos:% s% s% s% s% s% s '% y_testprint' previsão:% s% s% s% s% s % s '% tupla (previsão) print' proba positiva:% 0.6f% 0.6f% 0.6f% 0.6f% 0.6f% 0.6f '% tupla (probabilidades)

O exemplo começa com a criação de dados de treinamento que consiste de tweets positivos e negativos. Mais tarde, no exemplo, o código cria X_train e y_train a partir desses tweets. A fim de testar o algoritmo resultante, você também precisa de dados de teste, que vem sob a forma de test_tweets. O exemplo mais tarde cria X_test e y_test a partir desses tweets. Estes elementos constituem os dados utilizados para simular os tweets para o exemplo.

Antes de o código pode fazer qualquer coisa com os tweets, os tweets devem ser vetorizado e em seguida classificados. O problema da classificação divide as palavras para baixo em pedaços menores que o algoritmo pode usar para identificar os elementos comuns entre os dados de treinamento e os dados de teste.

Neste ponto, o algoritmo treinado é testado para assegurar que a formação funcionou conforme o esperado. A saída a seguir mostra os resultados do processo de formação e testes:

rótulos corretos: negativeprediction negativenegative positivo positivo positivo: negativeproba positiva negativepositive positivo negativo positivo: 0.497926 0.555813 0.561923 0.4979260.555813 0,434459

menu