Cuando trabajamos con imágenes, datos numéricos, variables categóricas o series temporales, entre otros, es sencillo imaginar la visualización de datos en NLP para representar las distribuciones de los datos, algunas estadísticas, etc.
Cuando trabajamos con textos, en cambio, puede que no sea tan intuitivo. A continuación se muestran algunos ejemplos de visualización de datos en NLP.
Visualización de datos en NLP
Frecuencia de palabras
Utilizaremos matplotlib para hacer la visualización de datos:
#Visualización de datos en NLP
from collections import Counter
import matplotlib.pyplot as plt
#Visualización de datos en NLP
#Prefacio del NLTK book
text = 'This is a book about Natural Language Processing. By "natural language" we mean a language that is used for everyday communication by humans...'
Pasaremos todo a minúsculas y lo separamos en tokens:
#Visualización de datos en NLP
words_nltk = text.lower ().split ()
#Visualización de datos en NLP
words_nltk [:10]
[‘this’,
‘is’,
‘a’,
‘book’,
‘about’,
‘natural’,
‘language’,
‘processing’,
‘by’,
‘ “natural” ‘]
Ahora haremos el conteo con la frecuencia y vamos a visualizar los 25 primeros más comunes:
wf= Counter (words_nltk)
#Visualización de datos en NLP
wf_most_common = wf.most_common (25)
En la variable words guardaremos las palabras más frecuentes, mientras que en la variable freqs guardaremos su frecuencia:
#Visualización de datos en NLP
words = [w [0] for w in wf_most_common]
freqs = [w [1] for w in wf_most_common]
Utilizamos la función de zip para agregar cada palabra con su frecuencia y vamos a ordenar por la más frecuente:
freqs, words = zip (*sorted (zip (frezs, words)))
Ahora metemos palabras y frecuencias en un gráfico de barras:
#Visualización de datos en NLP
plt.barh (words, freqs)
plt.show ()
De este modo obtenemos lo siguiente:
Frecuencia de n-grams
Aquí podremos partir de todo el vocabulario de una frase. Un n-grama es la combinación de n-tokens posibles de un texto:
#Visualización de datos en NLP
#from sklearn.feature_extraction. text import CountVectorizer
from nltk import ngrams
from nltk.probability import FreqDist
#Visualización de datos en NLP
bigrams_ = list (ngrams (words_nltk, 2))
trigrams_ = list (ngrams (words_nltk, 3))
Los bigramas, por ejemplo, nos devuelven las combinaciones posibles de dos tokens subsecuentes en una frase:
bigrams_ [:10]
[(‘this’, ‘is’),
(‘is’, ‘a’),
(‘a’, ‘book’),
(‘book’, ‘about’),
(‘about’, ‘natural’),
(‘natural’, ‘language’),
(‘language’, ”processing.),
(‘processing.’, ‘by’),
(‘by’, ‘ “natural ‘),
(‘ “natural’, ‘language” ‘)]
Los trigramas funcionan casi igual que los bigramas, solo que con tres tokens:
trigrams_ [:10]
[(‘this’, ‘is’, ‘a’),
(‘is’, ‘a’, ‘book’),
(‘a’, ‘book’, ‘about’),
(‘book’, ‘about’, ‘natural’),
(‘about’, ‘natural’, ”),
(‘natural’, ‘language’, ‘processing.’),
(‘language’, ”processing., ‘by’),
(‘processing.’, ‘by’, ‘natural’),
(‘by’, ‘ “natural’, ‘language’),
(‘ “natural’, ‘language” ‘, ‘we’)]
#Visualización de datos en NLP
bg_freq = FreqDist (bigrams_)
tg_freg = FreqDist (trigrams_)
bg_freq.most_common (10)
[((‘natural’, ‘language’), 4),
((‘language’, ”processing.), 3),
((‘used’, ‘for’), 2),
((‘to’, ‘the’), 2),
((‘based’, ‘on’), 2),
((‘access’, ‘to’), 2),
((‘us’, ‘to’), 2),
((‘or’, ‘as’), 2),
((‘the’, ‘book’), 2),
((‘book’, ‘is’), 2)]
tg_freq.most_common (10)
[((‘natural’, ‘language’, ‘processing.’), 2),
((‘the’, ‘book’, ‘is’), 2),
((‘this’, ‘is’, ‘a’), 1)
((‘is’, ‘a’, ‘book’), 1), 1)
((‘a’, ‘book’, ‘about’), 1)
((‘book’, ‘about’, ‘natural’), 1)
(‘about’, ‘natural’, ‘language’),
((‘natural’, ‘language’, ‘processing.’), 1),
((‘language’, ”processing., ‘by’), 1)
(‘processing.’, ‘by’, ‘natural’), 1)]
#Visualización de datos en NLP
bg_freq_most_common = bg_freq.most_common (10)
bgs_ = [str (bg [0]) for bg in bg_freq_most_common]
bgs_f_ = [bg [1] for bg in bg_freq_most_common]
tg_freq_most_common = tg_freq.most_common (10)
tgs_ = [str (tg [0]) for bg in tg_freq_most_common]
tgs_f_ = [tg [1] for tg in tg_freq_most_common]
bgs_f_, bgs_ = zip (*sorted (zip (bgs_f_, bgs_)))
tgs_f_, tgs_ = zip (*sorted (zip (tgs_f_, tgs_)))
#Visualización de datos en NLP
plt.barh (bgs_, bgs_f_)
plt.title ('Bigram frequencies')
plt.show ()
#Visualización de datos en NLP
plt.barh (tgs_, tgs_f_)
plt.title ('Trigram frequencies')
plt.show ()
Podemos hacer estos gráficos más útiles si quitamos todas las stopwords:
#Visualización de datos en NLP
from stop_words import get_stop_words
sw = get_stop_words (language = "en")
new_text = [ word for word in text.lower ().split () if word not in sw ]
print (new_text)
[‘book’, ‘natural’, ‘language’, ‘processing’, ‘ “natural’, ‘language” ‘, ‘mean’, ‘language’, ‘used’, ‘everyday’, ‘communication’, ‘humans;’, ‘languages’, ‘like’, ‘english’, ‘hindi’…]
new_bigrams = list (nrams (new_text, 2))
#Visualización de datos en NLP
new_bg_freq = FreqDist (new_bigrams)
new_bg_freq.most_common (10)
[((‘natural’, ‘language’), 4),
((‘language’, ”processing.), 3),
((‘book’, ‘natural’), 1),
((‘language’, ‘processing.’), 1),
((‘processing.’, ‘natural’), 1),
((‘natural’, ‘language’), 1),
((‘language’, ‘mean’), 1),
((‘mean’, ‘language’), 1),
((‘language’, ‘used’), 1),
((‘used’, ‘everyday’), 1)]
Para poder acceder a las opciones laborales del Big Data, una de las áreas con mejores salarios y mayor demanda laboral, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. Con esta formación intensiva adquirirás los conocimientos teóricos y prácticos imprescindibles para entrar y crecer en el mundillo IT en pocos meses. ¡Da el paso que transformará tu vida y entra ahora para pedir más información!