Maggio 2018

Volume 33 Numero 5

Il presente articolo è stato tradotto automaticamente.

Artificially Intelligent - Analisi del sentiment del testo

Dal Frank La La

Frank La VigneUno dei si del mondo basati sui dati moderno è che la velocità e il volume dei dati continua ad aumentare. Vediamo più dati generati ogni giorno a mai nella cronologia delle risorse umane. Senza che sia disponibile una destinazione tale crescita rapida più evidente rispetto nel mondo di social media, in cui gli utenti generano contenuto su una scala inimmaginabile in precedenza. Twitter gli utenti, ad esempio, collettivamente mandare circa 6.000 TWEET ogni secondo, in base alle statistiche in tempo reale Internet del sito di rilevamento (internetlivestats.com/twitter-statistiche). Con tale tasso, esistono circa 350.000 TWEET inviati al minuto, 500 milioni TWEET al giorno e TWEET circa 200 miliardi all'anno. Mantenersi aggiornato il flusso di dati per valutare il contenuto è il valore viene anche per i team più grande, è semplicemente non è stato assumere sufficiente persone per analizzare Twitter per valutare la valutazione dei propri utenti in qualsiasi momento.

Per fortuna, il caso d'uso per l'analisi di ogni tweet sarebbe un caso estremo limite. Vi sono, tuttavia, motivazioni aziendali valido per la valutazione di rilevamento, sia esso un dispositivo da un argomento specifico, un termine di ricerca o sqlhelp. Mentre questo si riduce il numero di tweet per analizzare in modo significativo, il volume dei dati da analizzare comunque è praticamente impossibile analizzare i rispettivi del TWEET in modo significativo.

Fortunatamente, analisi di valutazione complessiva del testo è un processo che è possibile automatizzare facilmente tramite l'analisi di valutazione. Analisi del sentiment sono il processo di classificazione a livello di calcolo e di classificare le opinioni espresse nel testo per determinare se il concetto di espresso all'interno di seguito viene illustrato un tono positivo, negativo o neutro. In breve, il processo può essere automatizzato e distilled a un punteggio matematico che indica tono e soggettività.

Impostazione di un blocco di Azure

Nel mese di febbraio (msdn.com/magazine/mt829269), è possibile illustrate in dettaglio Jupyter notebook e gli ambienti in cui possono essere eseguiti. Mentre tutti gli ambienti Python 3 può essere eseguito il codice in questo articolo per ragioni di semplicità, userà Azure notebook. Selezionare tramite il sito Web servizio blocchi appunti di Azure all'indirizzo notebooks.azure.com e accedere con le credenziali ID Microsoft. Creare una nuova raccolta con il nome artificialmente intelligente. Sotto il campo ID di libreria immettere "ArtificiallyIntelligent" e fare clic su Crea. Nella pagina seguente, fare clic su Nuovo per creare un nuovo blocco appunti. Immettere un nome nella casella di testo Nome dell'elemento, scegliere Python 3.6 Notebook nell'elenco a discesa tipo di elemento e fare clic su Nuovo (figura 1).

Creazione di un nuovo blocco appunti con un Kernel Python 3.6
Figura 1, la creazione di un nuovo blocco appunti con un Kernel Python 3.6

Fare clic su notebook appena creato e attendere che il servizio per connettersi a un kernel.

Analisi del sentiment in Python

Una volta pronti i notebook, immettere il codice seguente nella cella vuota ed eseguire il codice nella cella.

from textblob import TextBlob
simple_text = TextBlob("Today is a good day for a picnic.")
print(simple_text.sentiment)

I risultati visualizzati saranno simile al seguente:

Sentiment(polarity=0.7, subjectivity=0.6000000000000001)

Polarità fa riferimento al modo in cui positivo o negativo tono dei tassi di testo di input compreso tra -1 e + 1, con -1 in corso più negativo e + 1 in corso più positivo. Soggettività fa riferimento a come soggettiva le frequenze di istruzione da 0 a 1 con 1 in corso elevata soggettiva. Con solo tre righe di codice, potrebbe analizzare sentiment non solo di un frammento di testo, ma anche il relativo soggettività. Come è simile a analisi del sentiment, una volta considerati complicato, diventato così apparentemente semplice?

Python gode di un ecosistema ricca, in particolare per quanto riguarda la machine learning e l'elaborazione in linguaggio naturale (NLP). Frammento di codice precedente si basa sulla libreria TextBlob (textblob.readthedocs.io/en/dev). TextBlob è una libreria open source per l'elaborazione dati testuali, fornendo un'API semplice per illustrare in comune linguaggio naturale (NLP) attività di elaborazione. Tali attività includono l'analisi del sentiment e molto altro ancora.

Nella cella vuota sotto i risultati, immettere il codice seguente ed eseguirlo:

simple_text = TextBlob("the sky is blue.")
print(simple_text.sentiment)

I risultati di stato che la frase "il sky is blu" ha un polarità pari a 0,0 e una soggettività di 0,1. Ciò significa che il testo è neutro nel tono e punteggi bassi in soggettività. Nella cella vuota immediatamente sotto i risultati, immettere il codice seguente ed eseguire la cella:

simple_text1 = TextBlob("I hate snowstorms.")
print(simple_text1.sentiment)
simple_text2 = TextBlob("Bacon is my favorite!")
print(simple_text2.sentiment)

Si noti che l'algoritmo identificato correttamente che il contenuto di simple_text1 aveva un sentiment negativo (-0.8) e che l'istruzione sia abbastanza soggettiva (0.9). Inoltre, l'algoritmo dedotti correttamente la valutazione positiva di simple_text2 (0.625) e la sua natura elevata soggettiva (1.0).

Tuttavia, l'algoritmo avere difficoltà significative durante l'analisi le sfumature più complessi di lingua. Parte il sarcasmo, ad esempio, non solo difficile da rilevare, ma potrebbe generare disattivare i risultati. Si consideri uno scenario in cui un ristorante estrae le revisioni da un sito di revisione in linea, ad esempio Yelp e pubblica automaticamente le revisioni con una valutazione positiva nel relativo sito Web e dei social media. Immettere il codice seguente in una cella vuota ed eseguirlo:

sample_customer_review1 =
  TextBlob("The burgers at this place will
  make you ill with joy.")
print(sample_customer_review1.sentiment)
sample_customer_review2 =
  TextBlob("Whenever I want to take a sick
  day, I eat here the night before and it is
  always a sure fire win!")
print(sample_customer_review2.sentiment)

La valutazione di queste due recensioni sono chiaramente negativo. Ma l'algoritmo sembra interazione utente in caso contrario, con entrambe le revisioni del punteggio con valutazione positiva punteggi, 0,15 e 0,26 rispettivamente. In questo caso, il ristorante probabilmente preferibile non uno di tali revisioni evidenziati in qualsiasi piattaforma. I sistemi NLP devono ancora afferrare una buona comprensione in parte il sarcasmo, anche se è presente molto ricerche fatta in quest'area (thesarcasmdetector.com/about).

La connessione a Twitter

Finora è stato eseguito solo piccole bit del testo tramite l'analizzatore TextBlob. Un utilizzo più pratico di questa tecnologia è feed viene generato dall'utente dei dati, idealmente in tempo quasi reale. Fortunatamente Twitter, con i relativi utenti di active circa 327 milioni (www.statista.com/statistics/282087/number-of-monthly-active-twitter-users), fornisce un flusso costante di testo da analizzare.

Per connettersi con l'API di Twitter, è necessario registrare un'applicazione con Twitter per generare le credenziali necessarie. In un browser, passare a apps.twitter.com e, se necessario, accedere con le credenziali di Twitter. Fare clic sul pulsante Crea nuova App per offrire backup crea un form dell'applicazione, come illustrato in figura 2. Immettere un nome, descrizione e un sito Web per l'app. Ai fini di questo articolo, l'indirizzo del sito Web non è rilevante, quindi immettere un URL valido. Fare clic sulla casella di controllo per accettare le condizioni del contratto per sviluppatori di Twitter e scegliere il pulsante di applicazione di Twitter.

Il Twitter creare Form dell'applicazione
Figura 2 di Twitter creare Form dell'applicazione

Nella schermata seguente, cercare Consumer tasto (API) nella sezione impostazioni dell'applicazione. Fare clic sul collegamento on la "gestione delle chiavi e i token di accesso". Nella pagina che segue, fare clic su Crea il pulsante di token di accesso, come illustrato figura 3, per creare un token di accesso. Prendere nota dei seguenti quattro valori indicati in questa pagina: Consumer tasto (API), segreto del cliente (chiave privata API), Token di accesso e segreto del Token di accesso.

Le chiavi dell'applicazione e schermata di token di accesso a Twitter
Figura 3 Twitter applicazione chiavi e schermata di token di accesso

Con Tweepy per leggere TWEET

Tweepy è una libreria di Python che semplifica l'interazione tra codice Python e l'API di Twitter. Ulteriori informazioni su Tweepy sono reperibile in docs.tweepy.org/en/v3.5.0. In questo momento, tornare al server Jupyter notebook e immettere il codice seguente per installare l'API Tweepy. Il punto esclamativo indica Jupyter per eseguire un comando nella shell di:

!pip install tweepy

Una volta il codice viene eseguito correttamente, verrà letto il testo della risposta nella cella: "Installazione completata tweepy-3.6.0," anche se potrebbe modificare il numero di versione specifico. Nella cella seguente, immettere il codice nel figura 4 nell'oggetto appena creato celle vuote ed eseguirlo.

Figura 4 Tweepy utilizzare per accedere all'API di Twitter

import tweepy
consumer_key = "[Insert Consumer Key value]"
consumer_secret = "[Insert Consumer Secret value]"
access_token = "[Insert Access Token value]"
access_token_secret = "[Insert Access Token Secret value]"
authentication_info = tweepy.OAuthHandler(consumer_key, consumer_secret)
authentication_info.set_access_token(access_token, access_token_secret)
twitter_api = tweepy.API(authentication_info)
spacex_tweets = twitter_api.search("#spacex")
for tweet in spacex_tweets:
  print(tweet.text)
  analysis = TextBlob(tweet.text)
  print(analysis.sentiment)

I risultati restituiti dovrebbero essere simili al seguente:

#ElonMusk deletes own, #SpaceX and #Tesla Facebook pages after #deletefacebook https://t.co/zKGg4ZM2pi https://t.co/d9YFboUAUj
Sentiment(polarity=0.0, subjectivity=0.0)
RT @loislane28: Wow. did @elonmusk just delete #SpaceX and #Tesla from Facebook? https://t.co/iN4N4zknca
Sentiment(polarity=0.0, subjectivity=0.0)

Tenere presente che quando il codice esegue una ricerca in tempo reale dati Twitter, i risultati variano certamente. La formattazione è intuitive per la lettura. Modificare il per ciclo nella cella a quanto segue, quindi eseguire nuovamente il codice.

for tweet in spacex_tweets:
  analysis = TextBlob(tweet.text)
  print('{0} | {1} | {2}'.format(tweet.text, analysis.sentiment.polarity,
    analysis.sentiment.subjectivity))

Aggiunta di caratteri barra verticale per l'output deve rendono più facile da leggere. Si noti inoltre che due campi della proprietà sentiment, polarità soggettività, possono essere visualizzati e singolarmente.

Caricare i dati di Twitter Sentiment in un frame di dati

Il codice precedente creato un elenco delimitati da pipe di tweet contenuto e la valutazione dei punteggi. Una struttura più utile per un'ulteriore analisi sarebbe un frame di dati. Un frame di dati è una struttura di dati con etichetta multidimensionali due. Le colonne possono contenere tipi di valore diverso. Simile a un foglio di calcolo o una tabella SQL, frame di dati forniscono un meccanismo semplice e familiare per funzionare con i set di dati.

Frame di dati fanno parte della libreria Pandas. Di conseguenza, è necessario importare la libreria Pandas insieme Numpy. Inserire una cella vuota sotto la cella corrente, immettere il codice seguente ed eseguire:

import pandas as pd
import numpy as np
tweet_list = []
for tweet in spacex_tweets:
  analysis = TextBlob(tweet.text)
  tweet_list.append({'Text': tweet.text, 'Polarity': analysis.sentiment.polarity,
    'Subjectivity':analysis.sentiment.subjectivity })
  tweet_df = pd.DataFrame(tweet_list)   
tweet_df

I risultati verranno ora visualizzati in una più facile da leggere formato tabulare. Tuttavia, che non tutti i frame di dati della libreria è possibile eseguire. Inserire una cella vuota sotto la cella corrente, immettere il codice seguente ed eseguire:

print ("Polarity Stats")
print ("Avg", tweet_df["Polarity"].mean())
print ("Max", tweet_df["Polarity"].max())
print ("Min", tweet_df["Polarity"].min())
print ("Subjectivity Stats")
print ("Avg", tweet_df["Subjectivity"].mean())
print ("Max", tweet_df["Subjectivity"].max())
print ("Min", tweet_df["Subjectivity"].min())

Per caricare i dati di analisi sentiment tweet in un frame di dati, è più facile da eseguire e analizzare i dati su larga scala. Tuttavia, queste statistiche descrittive scratch semplicemente la superficie della potenza contenenti frame di dati. Per un'esplorazione più completa dei frame di dati Pandas in Python, guardare il webcast, "Dati Analysis in Python con Pandas," da Jonathan Wood al bit.ly/2urCxQX.

Conclusioni

Con la velocità e il volume dei dati continuare ad aumentare, le aziende di piccole e grandi dimensioni devono trovare un modo per sfruttare machine learning per essere utile dei dati e trasformarlo in informazioni utili. L'elaborazione in linguaggio naturale o naturale, è una classe di algoritmi che è possibile analizzare il testo non strutturato e analizzare in strutture leggibile dal computer, dando accesso a uno degli attributi chiavi di qualsiasi del corpo di testo, ovvero sentiment. Non molto tempo fa, ciò non è compreso nel portata dello sviluppatore medio, ma ora la libreria TextBlob Python offre questa tecnologia per l'ecosistema di Python. Mentre gli algoritmi possono talvolta incontrare difficoltà con le sfumature e sfumature di lingua, forniscono un set di base eccellente per capire i dati non strutturati.

Come illustrato in questo articolo, il tentativo di analizzare un blocco di testo per sentiment in termini di negatività o soggettività specifico è semplice. Grazie a un ecosistema dinamico Python di librerie open source di terze parti, è inoltre facile da origine dati dai siti di social network in tempo reale, ad esempio, Twitter ed effettua il pull TWEET degli utenti in tempo reale. Un'altra libreria Python, Pandas, semplifica il processo per eseguire analitica avanzate in merito ai dati. Con estrema attenzione analisi, le aziende possono monitorare feed di social networking e ottenere conoscenza dei quali clienti sono indicante e condivisione su di essi.


Frank La Vignecomporta la pratica di dati & Analitica Wintellect e CO-host il podcast DataDriven. Il suo blog è regolarmente al FranksWorld.com ed è possibile guardare quest'ultimo nel canale YouTube, "Di Frank mondo TV" (FranksWorld.TV).

Grazie al seguente esperto tecnico per la revisione dell'articolo: Andy Leonard


Viene illustrato in questo articolo nel forum di MSDN Magazine