Ad esempio, un'azienda potrebbe eseguire un motore di analisi del testo che elabora i tweet sulla sua attività menzionando il nome dell'azienda, la posizione, elabora e analizza l'emozione relativa a quel tweet. Le azioni corrette possono essere intraprese più rapidamente se quell'azienda viene a conoscenza della crescita di tweet negativi in una determinata posizione per salvarsi da un errore o da qualsiasi altra cosa. Un altro esempio comune sarà per Youtube. Gli amministratori e i moderatori di Youtube vengono a conoscenza dell'effetto di un video a seconda del tipo di commenti fatti su un video o dei messaggi di chat video. Ciò li aiuterà a trovare contenuti inappropriati sul sito Web molto più velocemente perché ora hanno sradicato il lavoro manuale e utilizzato robot di analisi del testo intelligente automatizzato.
In questa lezione studieremo alcuni dei concetti relativi all'analisi del testo con l'aiuto della libreria NLTK in Python. Alcuni di questi concetti riguarderanno:
- Tokenizzazione, come spezzare un pezzo di testo in parole, frasi
- Evitare le parole di arresto basate sulla lingua inglese
- Esecuzione di derivazione e lemmatizzazione su un pezzo di testo
- Identificazione dei token da analizzare
La PNL sarà l'area principale di interesse in questa lezione in quanto è applicabile a enormi scenari di vita reale in cui può risolvere problemi grandi e cruciali. Se pensi che questo suoni complesso, lo è, ma i concetti sono ugualmente facili da capire se provi gli esempi fianco a fianco. Passiamo all'installazione di NLTK sulla tua macchina per iniziare.
Installazione di NLTK
Solo una nota prima di iniziare, puoi utilizzare un ambiente virtuale per questa lezione che possiamo creare con il seguente comando:
python -m virtualenv nltksorgente nltk/bin/activate
Una volta che l'ambiente virtuale è attivo, puoi installare la libreria NLTK all'interno dell'ambiente virtuale in modo che gli esempi che creeremo in seguito possano essere eseguiti:
pip install nltkIn questa lezione faremo uso di Anaconda e Jupyter. Se vuoi installarlo sul tuo computer, guarda la lezione che descrive “Come installare Anaconda Python su Ubuntu 18.04 LTS" e condividi il tuo feedback in caso di problemi. Per installare NLTK con Anaconda, usa il seguente comando nel terminale di Anaconda:
conda install -c anaconda nltkVediamo qualcosa di simile quando eseguiamo il comando precedente:
Una volta installati e completati tutti i pacchetti necessari, possiamo iniziare a utilizzare la libreria NLTK con la seguente istruzione di importazione:
import nltkIniziamo con gli esempi NLTK di base ora che abbiamo installato i pacchetti dei prerequisiti.
Tokenizzazione
Inizieremo con la tokenizzazione che è il primo passo nell'esecuzione dell'analisi del testo. Un token può essere una parte più piccola di un testo che può essere analizzato. Esistono due tipi di tokenizzazione che possono essere eseguiti con NLTK:
- Tokenizzazione della frase
- Tokenizzazione delle parole
Puoi indovinare cosa succede su ciascuna tokenizzazione, quindi tuffiamoci negli esempi di codice.
Tokenizzazione della frase
Come riflette il nome, Sentence Tokenizers suddivide un pezzo di testo in frasi. Proviamo un semplice frammento di codice per lo stesso in cui utilizziamo un testo che abbiamo scelto dal tutorial di Apache Kafka. Effettueremo le importazioni necessarie
import nltkda nltk.tokenize import sent_tokenize
Tieni presente che potresti riscontrare un errore a causa di una dipendenza mancante per nltk chiamato punk. Aggiungi la seguente riga subito dopo le importazioni nel programma per evitare avvisi:
nltk.scarica('punk')Per me, ha dato il seguente output:
Successivamente, utilizziamo il tokenizer di frasi che abbiamo importato:
text = """Un argomento in Kafka è qualcosa in cui viene inviato un messaggio. Il consumatoreapplicazioni che sono interessate a quell'argomento tirano dentro il messaggio che
argomento e può fare qualsiasi cosa con quei dati. Fino a un'ora specifica, un numero qualsiasi di
le applicazioni consumer possono estrarre questo messaggio un numero qualsiasi di volte."""
frasi = send_tokenize (testo)
stampa (frasi)
Vediamo qualcosa di simile quando eseguiamo lo script sopra:
Come previsto, il testo è stato organizzato correttamente in frasi.
Tokenizzazione delle parole
Come riflette il nome, Word Tokenizers suddivide un pezzo di testo in parole. Proviamo un semplice frammento di codice per lo stesso con lo stesso testo dell'esempio precedente:
da nltk.tokenize import word_tokenizeparole = word_tokenize (testo)
stampa (parole)
Vediamo qualcosa di simile quando eseguiamo lo script sopra:
Come previsto, il testo è stato organizzato correttamente in parole.
Distribuzione di frequenza
Ora che abbiamo rotto il testo, possiamo anche calcolare la frequenza di ogni parola nel testo che abbiamo usato. È molto semplice da fare con NLTK, ecco lo snippet di codice che usiamo:
da nltk.importazione probabilità FreqDistdistribuzione = FreqDist(parole)
stampa (distribuzione)
Vediamo qualcosa di simile quando eseguiamo lo script sopra:
Successivamente, possiamo trovare le parole più comuni nel testo con una semplice funzione che accetta il numero di parole da mostrare:
# Parole più comunidistribuzione.più_comune(2)
Vediamo qualcosa di simile quando eseguiamo lo script sopra:
Infine, possiamo creare un grafico di distribuzione della frequenza per cancellare le parole e il loro conteggio nel testo dato e comprendere chiaramente la distribuzione delle parole:
Stopword
Proprio come quando parliamo con un'altra persona tramite una chiamata, tende ad esserci del rumore durante la chiamata che è un'informazione indesiderata. Allo stesso modo, anche il testo del mondo reale contiene rumore che viene definito come Stopword. Le stopword possono variare da lingua a lingua ma possono essere facilmente identificate. Alcune delle Stopword in lingua inglese possono essere - is, are, a, the, an etc.
Possiamo guardare le parole che sono considerate Stopword da NLTK per la lingua inglese con il seguente frammento di codice:
da nltk.parole non significative per l'importazione del corpusnltk.scarica('stopword')
lingua = "inglese"
stop_words = set(stopwords.parole (lingua))
print(stop_parole)
Poiché ovviamente il set di parole di arresto può essere grande, viene memorizzato come un set di dati separato che può essere scaricato con NLTK come mostrato sopra. Vediamo qualcosa di simile quando eseguiamo lo script sopra:
Queste parole di arresto dovrebbero essere rimosse dal testo se si desidera eseguire un'analisi precisa del testo per la parte di testo fornita. Rimuoviamo le stop word dai nostri token testuali:
parole_filtrate = []per parola in parole:
se la parola non è in stop_words:
parole_filtrate.aggiungere (parola)
parole_filtrate
Vediamo qualcosa di simile quando eseguiamo lo script sopra:
Parola che deriva
Una radice di una parola è la base di quella parola. Per esempio:
Eseguiremo la derivazione sulle parole filtrate da cui abbiamo rimosso le parole di arresto nell'ultima sezione. Scriviamo un semplice frammento di codice in cui utilizziamo lo stemmer di NLTK per eseguire l'operazione:
da nltk.importazione stelo PorterStemmerps = PorterStemmer()
stemmed_words = []
per la parola in filtered_words:
stemmed_words.append(ps.radice (parola))
print("Frase con radice:", parole_con radice)
Vediamo qualcosa di simile quando eseguiamo lo script sopra:
Etichettatura POS
Il prossimo passo nell'analisi testuale è dopo la derivazione è identificare e raggruppare ogni parola in termini del loro valore, i.e. se ciascuna delle parole è un sostantivo o un verbo o qualcos'altro. Questo è definito come parte dell'etichettatura vocale. Eseguiamo la codifica POS ora:
token=nltk.word_tokenize(frasi[0])stampa (token)
Vediamo qualcosa di simile quando eseguiamo lo script sopra:
Ora possiamo eseguire il tagging, per il quale dovremo scaricare un altro dataset per identificare i tag corretti:
nltk.download('averaged_perceptron_tagger')nltk.pos_tag (token)
Ecco l'output del tag:
Ora che abbiamo finalmente identificato le parole taggate, questo è il dataset su cui possiamo eseguire la sentiment analysis per identificare le emozioni dietro una frase.
Conclusione
In questa lezione, abbiamo esaminato un eccellente pacchetto di linguaggio naturale, NLTK che ci consente di lavorare con dati testuali non strutturati per identificare eventuali parole di arresto ed eseguire analisi più approfondite preparando un set di dati nitido per l'analisi del testo con librerie come sklearn.
Trova tutto il codice sorgente utilizzato in questa lezione su Github. Per favore condividi il tuo feedback sulla lezione su Twitter con @sbmaggarwal e @LinuxHint.