febrero 2023

¿Cómo desarrollar un código simple en Python para convertir varios archivos .pdf en varios archivos .txt (con el mismo nombre)?

Código Python: Cada archivo .pdf va a transformarse en un archivo .txt.

PDF a TXT

Para esto se pueden utilizar los módulos PyPDF2 y os de Python para convertir varios archivos .pdf en archivos .txt. Aquí te proporciono un ejemplo de código:

import os
import PyPDF2

# Establecer el directorio que contiene los archivos PDF
pdf_dir = "ruta/al/directorio/con/pdf"

# Iterar a través de todos los archivos PDF en el directorio
for filename in os.listdir(pdf_dir):
    if filename.endswith('.pdf'):
        # Abrir el archivo PDF
        pdf_file = open(os.path.join(pdf_dir, filename), 'rb')
        
        # Crear un nuevo archivo de texto con el mismo nombre
        txt_file = open(os.path.join(pdf_dir, os.path.splitext(filename)[0] + '.txt'), 'w')
        
        # Crear un objeto lector de PDF
        pdf_reader = PyPDF2.PdfFileReader(pdf_file)
        
        # Iterar a través de todas las páginas en el archivo PDF
        for page_num in range(pdf_reader.numPages):
            # Extraer el texto de cada página
            page = pdf_reader.getPage(page_num)
            text = page.extractText()
            
            # Escribir el texto en el archivo de texto
            txt_file.write(text)
        
        # Cerrar los archivos
        pdf_file.close()
        txt_file.close()

Asegúrate de tener PyPDF2 instalado. Puedes instalarlo a través de pip:

pip install PyPDF2

Este código iterará a través de todos los archivos PDF en el directorio especificado, creará un nuevo archivo de texto con el mismo nombre que el archivo PDF, extraerá el texto de cada página del archivo PDF y lo escribirá en el archivo de texto. Los archivos de texto se guardarán en el mismo directorio que los archivos PDF.

Si quieres conocer más de la libreria PyPDF2 puedes visitar este link.

¿ Qué es el Diseño Web 3.0?

Nos encanta el diseño web, y es nuestra pasión. El diseño web es parte de nuestra vida. Desde el año 2000, hemos observado lo que sucede en el mundo del diseño web todos los días. Estamos involucrados en el proceso de diseño web, y se han diseñado millones de páginas web con nuestra participación activa. Y ahora, nos gustaría compartir algunas de nuestras interesantes ideas con usted.

Ccompartimos el secreto sobre cómo crear los diseños web más modernos del mundo. Aprenderá las reglas básicas del diseño web moderno para crear sitios web, blogs y temas de clase mundial. Descubrirá cómo volverse único, cómo destacarse de la competencia y cómo atraer la atención de sus clientes.

Este artículo consta de varios capítulos:

En el Capítulo 1 , descubriremos cómo está cambiando el diseño web. Además, aprenderá sobre el nacimiento de la nueva generación de diseñadores web, que están diseñando páginas web en Diseño Web 3.0.

En el Capítulo 2 , hablaremos sobre los creadores de sitios web que se están quedando atrás de las tendencias y frenando la evolución del diseño web.

En el Capítulo 3 , aprenderá a crear diseños web modernos de una forma nueva, rápida y fácilmente.

Capítulo 1. El diseño web está cambiando

Lo primero de lo que hablaremos es del diseño web . Está cambiando rápidamente. Para comprender esto, debe revisar la evolución del diseño web: desde los primeros sitios hasta los sitios web de moda de hoy. Intentaremos predecir qué tipo de diseños web serán populares en un futuro próximo.

Hay tres etapas en la evolución del diseño web. En la imagen a continuación, hemos coloreado cada etapa y agregado años a la línea de tiempo.

diseño-historia.jpg

Evolución del diseño web

Primeros sitios web

Los primeros sitios web estaban basados ​​en texto. Y es difícil decir que tenían algún diseño web.

Transición al Diseño Web 1.0

Más tarde, se produjo la transición al Diseño Web 1.0. Aparecieron algunos elementos gráficos en los sitios web, que se volvieron más atractivos. Las páginas web tienen tablas. Luego, las tablas se transformaron en Layouts y Grids. Las tablas brindaban cierta flexibilidad, pero no eran compatibles con dispositivos móviles y no era necesario en ese momento.

Muchas personas crearon sus propios sistemas de gestión de contenido (CMS). Por lo tanto, los webmasters no tuvieron que editar los archivos HTML ni subirlos a los servidores. Pero era posible modificar el contenido en línea en tiempo real.

La evolución del diseño web y la difusión de los teléfonos móviles llevaron a nuevos cambios.

Transición al Diseño Web 2.0

La siguiente transición fue al Diseño Web 2.0. Las páginas web tenían cuadrículas y los diseñadores web podían organizar elementos con diseños.

Bootstrap aceleró la velocidad del desarrollo web. Simplificó el proceso y lo hizo más conveniente. Bootstrap admitió dispositivos móviles desde el principio con Grids.

Bootstrap’s Grid se estiró automáticamente al ancho completo de las pantallas. Redujo significativamente el tiempo que el desarrollador dedicaba a la codificación para admitir computadoras de escritorio, portátiles, tabletas y teléfonos.

receptivo.jpg

Sitio web moderno en varios dispositivos

WordPress, Joomla y Drupal se convirtieron en los sistemas de gestión de contenido más populares. Reemplazaron los sistemas autoescritos, que eran imperfectos y costosos de escribir y mantener y que también tenían una funcionalidad limitada. Gracias a WordPress y Joomla, cualquiera puede crear un blog o sitio web. Y hoy, más del 20 % de los sitios se construyen con esos sistemas.

WordPress y Joomla siempre admitieron temas y plantillas, lo que hizo posible modificar el diseño sin cambiar el contenido. Era posible crear temas manualmente o comprar temas ya hechos. Además, los webmasters podrían usar Theme Builder. Hay una gran cantidad de temas y plantillas disponibles.

En 2008, llegó Artisteer. Se convirtió en el generador de temas más popular en ese momento. Con Artisteer, cualquiera puede crear temas y plantillas de sitios web en minutos. Millones de sitios web usan temas diseñados en Artisteer.

¿Está muerto el diseño web?

Parecería que todos deberían estar contentos: diseñadores web, desarrolladores web y usuarios. Sin embargo, había un nuevo problema. Los diseñadores web comenzaron a hacer una pregunta: «¿Está muerto el diseño web?». Puede encontrar artículos que hacen la misma pregunta en todas las plataformas conocidas, como Medium, Mashable, SmashingMagazine, Quora y Reddit. Desde 2015, los diseñadores web se han hecho la misma pregunta.

En la imagen de abajo puedes ver los resultados de búsqueda de Google para esta frase.

Buscar en Google.png

Resultados de búsqueda en Google

¿Por qué está pasando esto? Bootstrap alcanzó el apogeo de su popularidad en 2015-2016. Puedes ver esto en el gráfico a continuación.

bootstrap-popularidad.jpg

Bootstrap en Tendencias de Google

La causa principal de este problema estaba en Bootstrap y análogos. Los diseños web de Bootstrap se parecían tanto entre sí que era como si estuvieran hechos con una plantilla. Muchos creadores de sitios web empeoran la situación al tener Bootstrap como el núcleo de sus sistemas. El diseño de un sitio web de Bootstrap comienza con una imagen general, y otras partes encajan en la estructura de dos, tres y cuatro celdas. Muchos temas y plantillas en Bootstrap impulsaron la distribución de este problema.

Ver en la imagen de abajo.

bootstrap-designs.jpg

Resultados de Pinterest para «diseño web bootstrap»

En 2015, Ben Hunt publicó el libro titulado “Web Design Is Dead”. La idea principal del libro es que la popularidad de los temas y plantillas de 50 dólares casi acabó con la demanda del trabajo del diseñador web. Un diseño web personalizado cuesta mucho más porque requiere tiempo, conocimientos y habilidades. Además del diseño, requiere codificación HTML y CSS personalizada.

¿Sigue siendo un problema hoy en día? Sí, lo es. Después de cuatro años, el problema sigue sin resolverse. En la imagen a continuación, puede ver las sugerencias de búsqueda de Google. La gente sigue haciéndose esta pregunta hoy.

google-2018.png

Consejos de búsqueda en Google

Los diseñadores web comenzaron a encontrar soluciones. No podían mantenerse alejados y ver cómo el diseño web , la pasión de sus vidas, se atascaba en el progreso. Siempre hay diseñadores que quieren hacer de la Web un lugar mejor. Steve Jobs dijo una vez: «Piensa diferente» sobre este tipo de personas. Estas personas siempre buscan nuevas ideas.

Diseño de impresión

El diseño web es muy joven. Tiene unas dos décadas. El diseño de impresión llegó mucho antes que el diseño web y tiene cientos de años de historia.

grafica-diseño-historia.jpg

Evolución del diseño de impresión. Copyright de onlinedesignteacher.com

Las herramientas de diseño de impresión siempre permitieron a los creativos colocar elementos libremente. Los diseñadores no estaban limitados en su creatividad. Y los editores siempre fueron libres en sus ideas. No tenían que pensar en HTML, CSS o dispositivos móviles.

La fórmula del diseño de impresión:

POSICIONAMIENTO LIBRE + CREATIVIDAD = DISEÑO DE IMPRESIÓN MODERNO

diseños-de-impresion.jpg

Diseño de impresión en Pinterest

Hoy en día, muchos editores han reducido significativamente las tiradas de impresión y se han puesto en línea. Las páginas impresas se han convertido en páginas web en la Web. Pero esas páginas web perdieron la creatividad y la libertad del diseño impreso. Los diseñadores no querían perder las ideas impresas que habían recopilado durante años. Comenzaron a diseñar con ideas impresas en línea.

El nacimiento del diseño web 3.0

A partir de 2016, comenzamos a notar que las ideas de Print Design aparecían regularmente en diseños de páginas web en Pinterest, Behance y Dribbble. Esos nuevos diseños web diferían con:

  1. Posicionamiento libre.
  2. Superposición de elementos.
  3. Rompiendo las limitaciones de las Grids tipo Bootstrap.

¡Significó el nacimiento del Diseño Web 3.0!

Reconocimiento de voz usando Transformers en Python.

Resumen: Reconocimiento automático de voz (ASR) usando el transformador wav2vec2 con la ayuda de la biblioteca de transformadores Huggingface en Python

El reconocimiento automático de voz (ASR) es la tecnología que nos permite convertir el habla humana en texto digital. Este tutorial se sumergirá en el modelo de vanguardia actual llamado Wav2vec2 utilizando la biblioteca de transformadores Huggingface en Python.

Wav2Vec2  es un modelo preentrenado que se entrenó solo en el audio del habla (autosupervisado) y luego siguió un ajuste fino en los datos del habla transcritos ( conjunto de datos LibriSpeech ). Ha superado a los modelos semisupervisados ​​anteriores.

Al igual que en el modelado de lenguaje enmascarado, Wav2Vec2 codifica el audio del habla a través de una red neuronal convolucional de múltiples capas y luego enmascara tramos de las representaciones del habla latente resultantes. Estas representaciones luego se alimentan a una red de transformadores para construir representaciones contextualizadas; Consulte el documento Wav2Vec2 para obtener más información.

Para comenzar, instalemos las bibliotecas requeridas:

$ pip3 install transformers==4.11.2 soundfile sentencepiece torchaudio pydub pyaudio

Usaremos torchaudio para cargar archivos de audio. Tenga en cuenta que necesita instalar PyAudio si va a usar el código en su entorno y PyDub si está en un entorno Colab. Los vamos a usar para grabar desde el micrófono en Python.

Empezando

Importemos nuestras bibliotecas:

from transformers import *
import torch
import soundfile as sf
# import librosa
import os
import torchaudio

A continuación, cargando el procesador y los pesos del modelo de wav2vec2:

# model_name = "facebook/wav2vec2-base-960h" # 360MB
model_name = "facebook/wav2vec2-large-960h-lv60-self" # 1.18GB

processor = Wav2Vec2Processor.from_pretrained(model_name)
model = Wav2Vec2ForCTC.from_pretrained(model_name)

Hay dos arquitecturas de modelo y pesos más utilizados para wav2vec. wav2vec2-base-960hes una arquitectura base con aproximadamente 360 ​​MB de tamaño, logró una tasa de error de palabra (WER) del 3,4 % en el conjunto de prueba limpio y se entrenó en 960 horas del conjunto de datos LibriSpeech en audio de voz muestreado de 16 kHz.

Por otro lado, wav2vec2-large-960h-lv60-selfes un modelo más grande con aproximadamente 1,18 GB de tamaño (probablemente no se ajuste a la memoria RAM de su computadora portátil) pero logró un 1,9 % de WER (cuanto más bajo, mejor) en el conjunto de prueba limpio. Entonces, este es mucho mejor para el reconocimiento, pero más pesado y toma más tiempo para la inferencia. Siéntase libre de elegir cuál se adapta mejor a usted.

Wav2Vec2 se entrenó usando la clasificación temporal conexionista (CTC) , por eso estamos usando la Wav2Vec2ForCTCclase para cargar el modelo.

A continuación, aquí hay algunas muestras de audio:

# audio_url = "https://github.com/x4nth055/pythoncode-tutorials/raw/master/machine-learning/speech-recognition/16-122828-0002.wav"
audio_url = "https://github.com/x4nth055/pythoncode-tutorials/raw/master/machine-learning/speech-recognition/30-4447-0004.wav"
# audio_url = "https://github.com/x4nth055/pythoncode-tutorials/raw/master/machine-learning/speech-recognition/7601-291468-0006.wav"

Preparación del archivo de audio

Siéntase libre de elegir cualquiera de los archivos de audio anteriores. A continuación, la celda carga el archivo de audio:

# load our wav file
speech, sr = torchaudio.load(audio_url)
speech = speech.squeeze()
# or using librosa
# speech, sr = librosa.load(audio_file, sr=16000)
sr, speech.shape

(16000, torch.Size([274000]))

La torchaudio.load()función carga el archivo de audio y devuelve el audio como un vector y la frecuencia de muestreo. También descarga automáticamente el archivo si es una URL. Si es una ruta en el disco, también lo cargará.Tenga en cuenta que también usamos el squeeze()método, es para eliminar las dimensiones con el tamaño de 1. es decir, convertir el tensor de (1, 274000)(274000,).

A continuación, debemos asegurarnos de que el archivo de audio de entrada al modelo tenga una frecuencia de muestreo de 16000 Hz porque wav2vec2 está entrenado para eso:

# resample from whatever the audio sampling rate to 16000
resampler = torchaudio.transforms.Resample(sr, 16000)
speech = resampler(speech)
speech.shape

torch.Size([274000])

Usamos Resamplede torchaudio.transforms , que nos ayuda a convertir el archivo de audio cargado sobre la marcha de una frecuencia de muestreo a otra.

Antes de hacer la inferencia, pasamos el vector de audio al procesador wav2vec2:

# tokenize our wav
input_values = processor(speech, return_tensors="pt", sampling_rate=16000)["input_values"]
input_values.shape

torch.Size([1, 274000])

CopiarEspecificamos el argumento sampling_ratey pasamos "pt"return_tensorspara obtener los tensores de PyTorch en los resultados.

Realización de inferencia

Ahora pasemos el vector a nuestro modelo:

# perform inference
logits = model(input_values)["logits"]
logits.shape

torch.Size([1, 856, 32])

Pasando los logits a torch.argmax()para obtener la predicción probable:

# use argmax to get the predicted IDs
predicted_ids = torch.argmax(logits, dim=-1)
predicted_ids.shape

torch.Size([1, 856, 32])

Al decodificarlos de nuevo a texto, también bajamos el texto, ya que está en mayúsculas:

# decode the IDs to text
transcription = processor.decode(predicted_ids[0])
transcription.lower()

and missus goddard three ladies almost always at the service of an invitation from hartfield and who were fetched and carried home so often that mister woodhouse thought it no hardship for either james or the horses had it taken place only once a year it would have been a grievance

Terminando el código

Ahora recopilemos todo nuestro código anterior en una sola función, que acepta la ruta de audio y devuelve la transcripción:

def get_transcription(audio_path):
  # load our wav file
  speech, sr = torchaudio.load(audio_path)
  speech = speech.squeeze()
  # or using librosa
  # speech, sr = librosa.load(audio_file, sr=16000)
  # resample from whatever the audio sampling rate to 16000
  resampler = torchaudio.transforms.Resample(sr, 16000)
  speech = resampler(speech)
  # tokenize our wav
  input_values = processor(speech, return_tensors="pt", sampling_rate=16000)["input_values"]
  # perform inference
  logits = model(input_values)["logits"]
  # use argmax to get the predicted IDs
  predicted_ids = torch.argmax(logits, dim=-1)
  # decode the IDs to text
  transcription = processor.decode(predicted_ids[0])
  return transcription.lower()

CopiarImpresionante, puede pasar cualquier ruta de archivo de voz de audio:

get_transcription("http://www0.cs.ucl.ac.uk/teaching/GZ05/samples/lathe.wav")

a late is a big tool grab every dish of sugar

Aplicándolo al idioma español

Este modelo funciona muy bien, pero con audios y modelos pre-entrenados en idioma inglés. Lo hemos adecuado a que funcione con audios en español, tanto de archivos como grabados en directo, utilizando en este caso modelos de Hugging Face entrenados en idioma español.

Más archivos de audio en este link.

Puedes acceder al link de Hugging Face y mirar los demas modelos filtrando por idioma.

Conclusión

Impresionante, ahora si quieres usar tu voz, he preparado un fragmento de código en los cuadernos para grabar con tu micrófono. Siéntase libre de elegir el entorno que está utilizando:

Como indiqué, tenga en cuenta que hay otros pesos wav2vec2 entrenados por otras personas en idiomas diferentes al inglés. Consulte la página de modelos y filtre en el idioma de su deseo para obtener el modelo deseado, por ejemplo los desarrollados por Open AI.

Hackers, Scammers, peligro a la vista.

Los Hackers, Scammers, y gente de dudosa reputación e intención están haciendo uso intensivo de herramientas tecnológicas como Drives, Chats y Calendarios, y en general también de Redes Sociales.

Sea acucioso, sospeche de lo que se vea extraño, y sobre todo no acepte invitaciones de extraños si no tiene una referencia de ellos, ni etiquetas, ni mucho menos archivos compartidos por estas plataformas.

Qué es la suplantación de identidad

La suplantación de identidad (phishing) es un intento de robo de información personal o acceso a cuentas en línea mediante correos electrónicos, mensajes, anuncios o sitios engañosos que se parecen a los que usas. Por ejemplo, un correo electrónico de suplantación de identidad puede ser similar a uno procedente de tu banco y puede solicitar información privada sobre tu cuenta bancaria.

Es posible que los mensajes o el contenido de suplantación de identidad (phishing) realicen lo siguiente: 

  • Solicitar que proporciones información personal o financiera
  • Solicitar que hagas clic en vínculos o descargues software
  • Robar la identidad de una organización respetada, como tu banco, un sitio de redes sociales que uses o tu lugar de trabajo 
  • Robar la identidad de alguien que conoces, como un miembro de la familia, amigo o compañero de trabajo
  • Tener el aspecto exacto de un mensaje de una organización o persona de confianza

Evita los mensajes y el contenido de suplantación de identidad (phishing)

Para evitar las solicitudes y los mensajes engañosos, sigue estas sugerencias.

  1. Presta atención a las advertencias de Google
  2. Nunca respondas a solicitudes de información privada
  3. No ingreses tu contraseña después de hacer clic en un vínculo de un mensaje
  4. Ten cuidado con los mensajes que suenan urgentes o demasiado buenos para ser ciertos
  5. Detente y piensa antes de hacer clic

Goodle, Apple ha desarrollado herramientas adicionales para denunciar estas acciones. Haga uso de ellas.

PostgreSQL conn en ChatGPT (OpenAI), Psycopg v2 o v3?

Hoy le he dado la siguiente orden a la Inteligencia Artificial ChatGPT para la creación de un broque de código: «crea codigo en python para conectarse a una base de datos postgresql y insertar datos desde un archivo csv linea por linea omitiendop el encabezado»

La IA, como en otras ocasiones, empezó a escribir el bloque de código en la ventana del chat:

import psycopg2
import csv

# Conexión a la base de datos
conn = psycopg2.connect(
    host="hostname",
    database="database",
    user="username",
    password="password"
)
cursor = conn.cursor()

# Nombre de la tabla y los nombres de las columnas que se insertarán
table_name = "table_name"
column_names = ["col_1", "col_2", "col_3"]

# Apertura del archivo CSV y lectura de datos
with open('data.csv', 'r') as file:
    reader = csv.reader(file)
    header = True
    for row in reader:
        if header:
            header = False
            continue
        # Creación de una lista con los valores de cada columna
        values = [row[0], row[1], row[2]]
        # Creación de una sentencia SQL para insertar datos
        sql = f"INSERT INTO {table_name} ({','.join(column_names)}) VALUES ({','.join(['%s'] * len(column_names))});"
        cursor.execute(sql, values)

# Guardar los cambios y cerrar la conexión
conn.commit()
cursor.close()
conn.close()

Es un código correcto, en donde únicamente hay que considerar que se asume que el archivo CSV data.csv tiene tres columnas y que el encabezado está en la primera línea del archivo. Se puede modificar el código según sea necesario para adaptarlo a los requisitos específicos, como son las credenciales a la base de datos, o restringir por campos el volcado de datos del CSV.

Sin embargo lo interesante es que ChatGPT recomendara, por defecto, el uso de psycopg v2 y no la version 3 der apadtador la cual tiene ya un par de años de estar disponible. Esta versión de adaptador la utilizo en la actualidad satisfactoriamente.

Psycopg 3 es un adaptador de base de datos PostgreSQL de nuevo diseño para el lenguaje de programación Python.

Psycopg 3 presenta una interfaz familiar para todos los que han utilizado Psycopg 2 o cualquier otro adaptador de base de datos DB-API 2.0, pero permite utilizar características más modernas de PostgreSQL y Python, tales como:

  • Soporte asincrónico
  • Compatibilidad con COPY desde objetos Python
  • Un grupo de conexiones rediseñado
  • Soporte para escritura estática
  • Enlace de parámetros del lado del servidor
  • Declaraciones preparadas
  • Canalización de estados de cuenta
  • Comunicación binaria
  • Acceso directo a las funcionalidades libpq

Sobre el uso básico del módulo, métodos abreviados y su utilización como gestor de contexto visite >> Uso básico del módulo – documentación de psycopg 3.2.0.dev1

Detección de antisemitismo en línea usando aprendizaje profundo multimodal

En los últimos tiempos, el antisemitismo en línea se ha convertido en una de las formas más extendidas de discurso de odio en las principales plataformas de redes sociales.

El aumento exponencial de las redes sociales en línea ha permitido la creación, distribución y consumo de información a un ritmo sin precedentes. Sin embargo, también ha llevado al florecimiento de varias formas de abuso en línea.

Los crecientes casos de antisemitismo en línea se han convertido en una de las principales preocupaciones debido a sus consecuencias sociopolíticas.

A diferencia de otras formas importantes de abuso en línea como el racismo, el sexismo, etc., el antisemitismo en línea no se ha estudiado mucho desde la perspectiva del aprendizaje automático.

El machine learning o aprendizaje automático es una de las disciplinas más conocidas y exitosas de la Inteligencia Artificial (IA). Esta disciplina proporciona a los sistemas la capacidad de aprender y mejorar automáticamente a partir de la experiencia, sin ser explícitamente programados para ello.

Los autores proponen de esta investigación proponen una arquitectura detallada de detección de antisemitismo multimodal (texto e imagen) que aprovecha el progreso reciente en arquitecturas de aprendizaje profundo (deep learning).

Artículo en idioma inglés >> https://dl.acm.org/doi/fullHtml/10.1145/3447535.3462502

Repositorio GitHub >> https://github.com/mohit3011/Online-Antisemitism-Detection-Using-MultimodalDeep-Learning/blob/main/main.py

Contenido compartido respetando derechos de autor.

¿Puede la Inteligencia Artificial sustituir al Ser Humano? ¿Puede imitar o sustituirlo en sus labores?

Lo primero por mirar para responder esta pregunta son las capacidades de Procesamiento de Lenguaje Natural (NLP) de los nuevos sistemas.

Photo by Alex Knight on Pexels.com

Hoy en dia tiene gran suceso la aparición de ChatGPT de OpenAI.

ChatGPT es un prototipo de chatbot de inteligencia artificial desarrollado en 2022 por OpenAI que se especializa en el diálogo.

https://openai.com/blog/chatgpt/

El chatbot es un gran modelo de lenguaje ajustado con técnicas de aprendizaje tanto supervisadas como de refuerzo. O lo que es, en pocas palabras, un robot de conversación con inteligencia artificial.

Para probar esta AI puede superar algunos limites que presupopnes respecto de estas nuevas tecnologías le solicité que resolviera uno de los retos de codificación que plantea HackerRank en su serie «30 Days of Code». Propiamente, «Day 10: Binary Numbers».

https://www.hackerrank.com/challenges/30-binary-numbers/problem?isFullScreen=true

ChatGPT screen

La codificación plantea la conversión entre sistemas numéricos y el conteo de series. La respuesta de ChatGPT la dió en una función que denominó «consecutive_ones()», como se muestra en la imagen.

Esto código lo corrí en la plataforma de testeo de HackerRank y lo validó como correcto.

Código en Python generado por ChatGPT
Validación de código por HackerRank

Sin embargo esto no nos permite extraer conclusiones generalizadas ni mucho menos contestar a la pregunta inicial. En mi criterio la AI puede emular capacidades de cálculo y razonamiento, es lo que hacen los sistemas de cómputo actuales, y generar decisiones sobre esto.

Pero aún distan mucho de poder hacer valoraciones éticas o morales conforme a paradigmas vigentes en la sociedad, pero de lo visto si podemos concluir que la inteligencia artificial podría cambiar la forma en la que los seres humanos ejecutan sus labores a corto y mediano plazo.

Por qué estudiar lenguajes de programación como Python?

Porque a través de ellos puedes comunicar tus programas a bases de datos y almacenar información procedente de textos, archivos, hojas de cálculo, inventarios, datos de usuarios y ventas en sitios web o puntos de venta.Cómo conectarse al servidor de base de datos #PostgreSQL en el programa #Python utilizando el adaptador de base de datos psycopg.

#python #databases

Cómo conectarse al servidor de base de datos #PostgreSQL en el programa #Python utilizando el adaptador de base de datos psycopg.

#python #databases

https://github.com/DaveSV/PostgreSQL-Python

Data Engineering Project: Database for Crime Reports

Back-end





  • Proyecto: creación de la base de datos de Boston para informes sobre delitos




In this Data Engineering track project , I built a database using PostgreSQL for storing data related to crimes that occurred in Boston. Data is provided the dataset boston.csv for input.


En este proyecto de seguimiento de ingeniería de datos, construí una base de datos utilizando PostgreSQL para almacenar datos relacionados con delitos que ocurrieron en Boston. Los datos se proporcionan en el conjunto de datos boston.csv para la entrada.

#Python #PostgreSQL
https://colab.research.google.com/drive/1Aii_DkvAL4rtyXCSiZdS7N3dnyVPK91a?usp=sharing

#WeRemember

SS-Concentration-Camps-flask-sql-html

MAP

SS Concentration and Labor Camps Database and Visualization the data posted here originated in a dataset of camp names, locations, and attributes developed by researchers at the United States Holocaust Memorial Museum as part of the USHMM Encyclopedia of Camps and Ghettos, vol. 1, Early Camps, Youth Camps, and Concentration Camps and Subcamps under the SS-Administration Main Office

URL: https://mapas.albertosaenz.com/mapaCC.html

GITHUB:

https://github.com/…/SS-Concentration-Camps-flask-sql-html