Pitone

Tutorial NLTK in Python

Tutorial NLTK in Python
L'era dei dati è già qui. La velocità con cui i dati vengono generati oggi è più alta che mai ed è sempre in crescita. La maggior parte delle volte, le persone che si occupano di dati ogni giorno lavorano principalmente con dati testuali non strutturati. Alcuni di questi dati hanno elementi associati come immagini, video, audio, ecc. Alcune delle fonti di questi dati sono siti Web, blog quotidiani, siti Web di notizie e molti altri. Analizzare tutti questi dati a un ritmo più veloce è necessario e molte volte, anche cruciale.

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:

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 nltk
sorgente 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 nltk

In 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 nltk

Vediamo 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 nltk

Iniziamo 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:

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 nltk
da 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 consumatore
applicazioni 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_tokenize
parole = 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à FreqDist
distribuzione = 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ù comuni
distribuzione.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 corpus
nltk.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 PorterStemmer
ps = 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.

Come utilizzare AutoKey per automatizzare i giochi Linux
AutoKey è un'utilità di automazione desktop per Linux e X11, programmata in Python 3, GTK e Qt. Utilizzando la sua funzionalità di scripting e MACRO, ...
Come mostrare il contatore FPS nei giochi Linux
I giochi Linux hanno avuto una grande spinta quando Valve ha annunciato il supporto Linux per il client Steam e i loro giochi nel 2012. Da allora, mol...
Come scaricare e giocare a Sid Meier's Civilization VI su Linux
Introduzione al gioco Civilization 6 è una versione moderna del concetto classico introdotto nella serie dei giochi Age of Empires. L'idea era abbasta...