L'elaborazione del linguaggio naturale è un aspetto dell'apprendimento automatico che consente di elaborare le parole scritte in un linguaggio adatto alle macchine. Tali testi diventano quindi modificabili e puoi eseguire algoritmi di calcolo su di essi come preferisci.
La logica dietro questa tecnologia accattivante sembra complessa ma non lo è. E anche ora, con una solida conoscenza della programmazione di base in Python, puoi creare un nuovo elaboratore di testi fai-da-te con il toolkit del linguaggio naturale (NLTK).
Ecco come iniziare con NLTK di Python.
Che cos'è NLTK e come funziona?
Scritto con Python, NLTK offre una varietà di funzionalità di manipolazione delle stringhe. È una libreria di linguaggio naturale versatile con un vasto repository di modelli per varie applicazioni di linguaggio naturale.
Con NLTK, puoi elaborare testi grezzi ed estrarre da essi funzionalità significative. Offre anche modelli di analisi del testo, grammatiche basate su funzionalità e ricche risorse lessicali per la creazione di un modello linguistico completo.
Come impostare NLTK
Innanzitutto, crea una cartella radice del progetto ovunque sul tuo PC. Per iniziare a utilizzare la libreria NLTK, apri il tuo terminale nella cartella principale che hai creato in precedenza e creare un ambiente virtuale.
Quindi, installa il toolkit del linguaggio naturale in questo ambiente usando pip:
pip install nltk
NLTK, tuttavia, presenta una varietà di set di dati che fungono da base per nuovi modelli di linguaggio naturale. Per accedervi, è necessario avviare il downloader di dati integrato NLTK.
Quindi, una volta installato con successo NLTK, apri il tuo file Python utilizzando qualsiasi editor di codice.
Quindi importa il nltk modulo e istanziare il downloader di dati utilizzando il seguente codice:
pip install nltk
nltk.download()
L'esecuzione del codice di cui sopra tramite il terminale fa apparire un'interfaccia utente grafica per la selezione e il download dei pacchetti di dati. Qui dovrai scegliere un pacchetto e fare clic su Scarica pulsante per ottenerlo.
Qualsiasi pacchetto di dati che scarichi va nella directory specificata scritta nel Scarica la directory campo. Puoi cambiarlo se vuoi. Ma cerca di mantenere la posizione predefinita a questo livello.
Imparentato: I migliori editor di codice gratuiti per scrivere la tua prima app
Nota: I pacchetti di dati vengono aggiunti alle variabili di sistema per impostazione predefinita. Quindi, puoi continuare a usarli per progetti successivi indipendentemente dall'ambiente Python che stai utilizzando.
Come usare i tokenizzatori NLTK
In definitiva, NLTK offre modelli di tokenizzazione addestrati per parole e frasi. Usando questi strumenti, puoi generare un elenco di parole da una frase. Oppure trasforma un paragrafo in una serie di frasi sensate.
Ecco un esempio di come utilizzare NLTK word_tokenizer:
import nltk
da nltk.tokenize import word_tokenize
word = "Questo è un testo di esempio"
tokenWord = word_tokenizer (parola)
print (tokenWord)
Produzione:
['Questo', 'è', 'un', 'esempio', 'testo']
NLTK utilizza anche un tokenizzatore di frasi pre-addestrato chiamato PunktSentenceTokenizer. Funziona suddividendo un paragrafo in un elenco di frasi.
Vediamo come funziona con un paragrafo di due frasi:
import nltk
da nltk.tokenize import word_tokenize, PunktSentenceTokenizer
frase = "Questo è un testo di esempio. Questo è un tutorial per NLTK"
token = PunktSentenceTokenizer()
tokenized_sentence = token.tokenize (frase)
print (frase_tokenizzata)
Produzione:
['Questo è un testo di esempio.', 'Questo è un tutorial per NLTK']
Puoi ulteriormente tokenizzare ogni frase nell'array generato dal codice sopra usando word_tokenizer e Python per ciclo.
Esempi di come usare NLTK
Quindi, anche se non possiamo dimostrare tutti i possibili casi d'uso di NLTK, ecco alcuni esempi di come puoi iniziare a usarlo per risolvere problemi della vita reale.
Ottieni definizioni di parole e le loro parti del discorso
NLTK presenta modelli per determinare parti del discorso, ottenere semantica dettagliata e possibile uso contestuale di varie parole.
Puoi usare il wordnet modello per generare variabili per un testo. Quindi determina il suo significato e parte del discorso.
Ad esempio, controlliamo le possibili variabili per "Scimmia:"
import nltk
da nltk.corpus importa wordnet come wn
print (wn.synsets('scimmia'))
Produzione:
[Synset('monkey.n.01'), Synset('imp.n.02'), Synset('tamper.v.01'), Synset('putter.v.02')]
Il codice sopra mostra possibili alternative di parole o sintassi e parti del discorso per "Scimmia".
Ora controlla il significato di "Scimmia" usando il definizione metodo:
Scimmia = wn.synset('monkey.n.01').definition()
Produzione:
uno dei vari primati dalla coda lunga (esclusi i proscimmi)
È possibile sostituire la stringa tra parentesi con altre alternative generate per vedere cosa emette NLTK.
Il pos_tag modello, tuttavia, determina le parti del discorso di una parola. Puoi usarlo con il word_tokenizer o PunktSentenceTokenizer() se hai a che fare con paragrafi più lunghi.
Ecco come funziona:
import nltk
da nltk.tokenize import word_tokenize, PunktSentenceTokenizer
word = "Questo è un testo di esempio. Questo è un tutorial su NLTK"
token = PunktSentenceTokenizer()
tokenized_sentence = token.tokenize (parola)
per i in tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
stampa (partsOfSpeech)
Produzione:
[('Questo', 'DT'), ('è', 'VBZ'), ('an', 'DT'), ('esempio', 'NN'), ('testo', 'NN'), ('.', '.')]
[('Questo', 'DT'), ('è', 'VBZ'), ('a', 'DT'), ('esercitazione', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]
Il codice sopra accoppia ogni parola tokenizzata con il suo tag vocale in una tupla. Puoi controllare il significato di questi tag su Penn Treebank.
Per un risultato più pulito, è possibile rimuovere i periodi nell'output utilizzando il pulsante sostituire() metodo:
per i in tokenized_sentence:
tokenWordArray = word_tokenize (i.replace('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
stampa (partsOfSpeech)
Uscita più pulita:
[('Questo', 'DT'), ('è', 'VBZ'), ('an', 'DT'), ('esempio', 'NN'), ('testo', 'NN') ]
[('Questo', 'DT'), ('è', 'VBZ'), ('a', 'DT'), ('esercitazione', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]
Visualizzazione delle tendenze delle funzionalità utilizzando il grafico NLTK
L'estrazione di funzionalità da testi grezzi è spesso noiosa e richiede tempo. Ma puoi visualizzare i determinanti di funzionalità più forti in un testo utilizzando il grafico della tendenza della distribuzione della frequenza NLTK.
NLTK, tuttavia, si sincronizza con matplotlib. Puoi sfruttarlo per visualizzare una tendenza specifica nei tuoi dati.
Il codice seguente, ad esempio, confronta un insieme di parole positive e negative su un grafico di distribuzione utilizzando i loro ultimi due alfabeti:
import nltk
da nltk import ConditionalFreqDist
Elenchi di parole negative e positive:
negativi = [
'anormale', 'abolire', 'abominevole',
'abominevole', 'abominevole', 'abominevole'
]
positivi = [
'abbonda', 'abbonda', 'abbondanza',
'abbondante', 'accessibile', 'accessibile'
]
# Dividi gli elementi in ogni array in coppie di tupple etichettate
# e combina entrambi gli array:
pos_negData = ([("negative", neg) for neg in negative]+[("positive", pos) for pos in positive])
# Estrai gli ultimi due alfabeti dall'array risultante:
f = ((pos, i[-2:],) for (pos, i) in pos_negData)
# Crea un diagramma di distribuzione di questi alfabeti
cfd = ConditionalFreqDist (f)
cfd.trama()
Il grafico di distribuzione dell'alfabeto è simile a questo:
Guardando attentamente il grafico, le parole che finiscono con ce, ds, le, ns, e nt hanno una maggiore probabilità di essere testi positivi. Ma quelli che finiscono con al, ly, Su, e te sono più probabilmente parole negative.
Nota:Anche se qui abbiamo utilizzato dati autogenerati, puoi accedere ad alcuni dei set di dati integrati di NLTK utilizzando il suo lettore Corpus chiamandoli dal corpus classe di nltk. Potresti voler dare un'occhiata a documentazione del pacchetto corpus per vedere come puoi usarlo.
Con l'emergere di tecnologie come Alexa, rilevamento dello spam, chatbot, analisi dei sentimenti e altro, l'elaborazione del linguaggio naturale sembra evolversi nella sua fase sub-umana. Sebbene abbiamo considerato solo alcuni esempi di ciò che offre NLTK in questo articolo, lo strumento ha applicazioni più avanzate rispetto allo scopo di questo tutorial.
Dopo aver letto questo articolo, dovresti avere una buona idea di come utilizzare NLTK a livello base. Tutto ciò che ti resta da fare ora è mettere in pratica questa conoscenza da solo!
Interessato al campo del Machine Learning? Inizia con queste librerie.
Leggi Avanti
- Programmazione
- Pitone
- Linguaggi di programmazione
- Programmazione
Idowu è appassionato di qualsiasi tecnologia intelligente e produttività. Nel tempo libero gioca con la programmazione e quando si annoia passa alla scacchiera, ma ama anche staccare ogni tanto dalla routine. La sua passione per mostrare alle persone la tecnologia moderna lo motiva a scrivere di più.
Iscriviti alla nostra Newsletter
Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!
Clicca qui per iscriverti