Practica VI

19. Practica VI#

Apliquemos lo aprendido gasta el momento utilizando el discurso de Steve Jobs en la Universidad de Stanford. Para cada uno de los pasos se ocupó la versión en español y en inglés para poder ver las diferencias que se generan.
Preparación y Análisis de Sentimiento: Realiza el análisis de sentimiento utilizando TextBlob, calcula la polaridad y subjetividad del discurso de Steve Jobs y visualiza estos resultados en un gráfico de barras.
import nltk
from textblob import TextBlob
import matplotlib.pyplot as plt

# Descargar recursos necesarios de NLTK si no están descargados
nltk.download('punkt')
nltk.download('vader_lexicon')

# Cargar el texto completo de Steve Jobs desde el archivo en español
with open('Discurso de Steve Jobs.txt', 'r', encoding='utf-8') as file:
    texto_steve_jobs = file.read()

# Realizar análisis de sentimiento utilizando TextBlob en el texto en español
sentimiento = TextBlob(texto_steve_jobs).sentiment
print(f"Análisis de Sentimiento de Steve Jobs: Polarity={sentimiento.polarity}, Subjectivity={sentimiento.subjectivity}")

# Visualización del análisis de sentimiento
labels = ['Polarity', 'Subjectivity']
values = [sentimiento.polarity, sentimiento.subjectivity]

plt.figure(figsize=(8, 5))
plt.bar(labels, values, color=['blue', 'green'])
plt.title('Análisis de Sentimiento de Steve Jobs')
plt.xlabel('Sentimiento')
plt.ylabel('Puntuación')
plt.show()
Análisis de Sentimiento de Steve Jobs: Polarity=-0.034375, Subjectivity=0.325
[nltk_data] Downloading package punkt to
[nltk_data]     /Users/claudiorojas/nltk_data...
[nltk_data]   Package punkt is already up-to-date!
[nltk_data] Downloading package vader_lexicon to
[nltk_data]     /Users/claudiorojas/nltk_data...
[nltk_data]   Package vader_lexicon is already up-to-date!
_images/f6b289a2b3f121f9697cc79e5bbeabd59405e8c913840f829592dc115c1d3128.png
import nltk
from textblob import TextBlob
import matplotlib.pyplot as plt

# Descargar recursos necesarios de NLTK si no están descargados
nltk.download('punkt')
nltk.download('vader_lexicon')

# Cargar el texto completo de Steve Jobs desde el archivo
with open('Speech Steve Jobs.txt', 'r', encoding='utf-8') as file:
    texto_steve_jobs = file.read()

# Análisis de sentimiento utilizando TextBlob
sentimiento = TextBlob(texto_steve_jobs).sentiment
print(f"Análisis de Sentimiento de Steve Jobs: Polarity={sentimiento.polarity}, Subjectivity={sentimiento.subjectivity}")

# Visualización del análisis de sentimiento
labels = ['Polarity', 'Subjectivity']
values = [sentimiento.polarity, sentimiento.subjectivity]

plt.figure(figsize=(8, 5))
plt.bar(labels, values, color=['blue', 'green'])
plt.title('Análisis de Sentimiento de Steve Jobs')
plt.xlabel('Sentiment')
plt.ylabel('Score')
plt.show()
Análisis de Sentimiento de Steve Jobs: Polarity=0.18401759881659394, Subjectivity=0.493435249842285
[nltk_data] Downloading package punkt to
[nltk_data]     /Users/claudiorojas/nltk_data...
[nltk_data]   Package punkt is already up-to-date!
[nltk_data] Downloading package vader_lexicon to
[nltk_data]     /Users/claudiorojas/nltk_data...
[nltk_data]   Package vader_lexicon is already up-to-date!
_images/b7c9ea8416ae3322f8cfc36b5fca3a19e4f55dfb87caab6caf001c36cb2e9e28.png
Clasificación de texto: Se utiliza un conjunto de características basadas en frecuencia de palabras para clasificar el texto como relacionado con tecnología.
import nltk
from nltk.corpus import movie_reviews
import random

# Descargar recursos necesarios de NLTK si no están descargados
nltk.download('punkt')
nltk.download('movie_reviews')

# Cargar el texto completo de Steve Jobs desde el archivo
with open('Discurso de Steve Jobs.txt', 'r', encoding='utf-8') as file:
    texto_steve_jobs = file.read()

# Preparar documentos para clasificación
documents = [(list(nltk.word_tokenize(texto_steve_jobs)), 'tecnologia')]
random.shuffle(documents)

# Obtener todas las palabras de movie_reviews para usar como características
all_words = nltk.FreqDist(w.lower() for w in movie_reviews.words())
word_features = list(all_words)[:3000]

# Definir la función para extraer características del documento
def document_features(document):
    document_words = set(document)
    features = {}
    for word in word_features:
        features['contains({})'.format(word)] = (word in document_words)
    return features

# Extraer características del texto de Steve Jobs
featureset = [(document_features(d), c) for (d, c) in documents]

# Entrenar un clasificador (ejemplo con NaiveBayesClassifier)
classifier = nltk.NaiveBayesClassifier.train(featureset)

# Clasificar el texto de Steve Jobs
print("Clasificación de Texto:")
print(classifier.classify(document_features(texto_steve_jobs.split())))
[nltk_data] Downloading package punkt to
[nltk_data]     /Users/claudiorojas/nltk_data...
[nltk_data]   Package punkt is already up-to-date!
[nltk_data] Downloading package movie_reviews to
[nltk_data]     /Users/claudiorojas/nltk_data...
[nltk_data]   Package movie_reviews is already up-to-date!
Clasificación de Texto:
tecnologia
import nltk
from nltk.corpus import movie_reviews
import random

# Descargar recursos necesarios de NLTK si no están descargados
nltk.download('punkt')
nltk.download('movie_reviews')

# Cargar el texto completo de Steve Jobs desde el archivo
with open('Speech Steve Jobs.txt', 'r', encoding='utf-8') as file:
    texto_steve_jobs = file.read()

# Preparar documentos para clasificación
documents = [(list(nltk.word_tokenize(texto_steve_jobs)), 'tecnologia')]
random.shuffle(documents)

# Obtener todas las palabras de movie_reviews para usar como características
all_words = nltk.FreqDist(w.lower() for w in movie_reviews.words())
word_features = list(all_words)[:3000]

# Definir la función para extraer características del documento
def document_features(document):
    document_words = set(document)
    features = {}
    for word in word_features:
        features['contains({})'.format(word)] = (word in document_words)
    return features

# Extraer características del texto de Steve Jobs
featureset = [(document_features(d), c) for (d, c) in documents]

# Entrenar un clasificador (ejemplo con NaiveBayesClassifier)
classifier = nltk.NaiveBayesClassifier.train(featureset)

# Clasificar el texto de Steve Jobs
print("Clasificación de Texto:")
print(classifier.classify(document_features(texto_steve_jobs.split())))
[nltk_data] Downloading package punkt to
[nltk_data]     /Users/claudiorojas/nltk_data...
[nltk_data]   Package punkt is already up-to-date!
[nltk_data] Downloading package movie_reviews to
[nltk_data]     /Users/claudiorojas/nltk_data...
[nltk_data]   Package movie_reviews is already up-to-date!
Clasificación de Texto:
tecnologia
Generación de Texto con Markovify: En este caso, se generan tres frases concatenadas para mejorar la legibilidad del texto generado
import markovify

# Generación de texto con Markovify
modelo_markov = markovify.Text(texto_steve_jobs)

# Generar texto nuevo (más legible)
texto_generado = ""
for i in range(3):  # Generar 3 frases
    frase_generada = modelo_markov.make_sentence()
    if frase_generada:  # Asegurar que la frase generada no sea None
        texto_generado += frase_generada + " "

# Mostrar el texto generado
print(f"Texto generado: {texto_generado}")
Texto generado: Significa asegurarte de que apareciera Google. Cada cartel, cada etiqueta de cualquier cajón de la mañana, similar a aquella en la cantidad de espacio entre las distintas combinaciones de letras, sobre lo que en clave médica significaba prepararme para morir. Insisto, no podéis conectar los puntos mirando hacia el futuro cuando estaba en la actualidad es el destino que todos compartimos. 
import markovify

# Generación de texto con Markovify
modelo_markov = markovify.Text(texto_steve_jobs)

# Generar texto nuevo (más legible)
texto_generado = ""
for i in range(3):  # Generar 3 frases
    frase_generada = modelo_markov.make_sentence()
    if frase_generada:  # Asegurar que la frase generada no sea None
        texto_generado += frase_generada + " "

# Mostrar el texto generado
print(f"Texto generado: {texto_generado}")
Texto generado: It freed me to enter one of the bibles of my entire adult life was gone, and it was devastating. My second story is about connecting the dots. But 10 years later, when we were designing the first year or so before I was still in love.