Exercises 1: LLM models for information extraction in podcasts 🎙️#
We want to automatically process podcasts, to extract different kinds of information. We will try several approaches, such as calling the OpenAI API, and/or using HuggingFace open-source models.
As a starter, we are given an already transcribed podcast (in Spanish), as a string:
text = """Ser Podcast. Los números nos dicen que de momento no se está quedando pese a que la mayoría de los trabajadores preferirían trabajar en remoto al menos parcialmente. Punto medio, sí. Unos días ir a la pandemia se está desinflando como un globo. Ya sabíamos que en ese momento, el del coronavirus, el teletrabajo fue una obligación, pero también decían los expertos y las empresas que gran parte de ese teletrabajo se podría mantener y que España podría dejar de estar por detrás de otros países en el uso del trabajo a distancia. Pasados dos años, los datos nos dicen que no, que eso fueron almacenamiento para la industria alimentaria. Por tanto, su trabajo es sentado en una oficina atendiendo al teléfono o al email. Una pena porque en la pandemia, Nacho trabajó durante un año todos los días desde casa. Y sí se vio mejorada su vida, tiene tres hijos y la conciliación era mucho mejor. Como Nacho, según un estudio de ADECO, la mitad de las personas que teletrabajaban. Ahora la cifra se ha reducido en un millón que han vuelto a las oficinas. Fue cuando Ana decidió cambiar. Modelo híbrido como el que buscó también Lourdes. Conciliación, ahorro, medio ambiente, para cuidar nuestros entornos, al final evitar desplazamientos innecesarios hace que haya menos tráfico. Coger el coche a diario para Aitor se dedica al comercio online, teletrabaja el 100% de su jornada. Su vida ha su domicilio el año pasado. Apenas el 8% tuvo modelo mixto y solo un 6% teletrabajaban en España algún día a la semana. Con la llegada del coronavirus, esa cifra subió a prácticamente cuatro millones. La cifra bajó el año pasado ya a algo menos de tres millones. Y ahora mismo son dos y medio los que trabajaban en remoto, es decir, hemos pasado de cuatro son coronavirus han vuelto a la presencialidad obligatoria. Es verdad que el teletrabajo en ese momento con la pandemia fue una obligación, que había pocas empresas que estaban preparadas, pero también del cambio de paradigma en la metodología productiva de nuestro país. Lo va a cambiar todo. Va a cambiar la estructura negocial en los convenios colectivos, pero va a cambiar también el modus operandi del desarrollo de nuestros trabajos. entre otras cosas, a que la empresa tuviera que asumir que los medios con los que tiene que teletrabajar los pagan las empresas, que tiene un sistema de control de formeras. Pero como estamos viendo, los datos a día de hoy demuestran que hay marcha atrás. De hecho, si desagregamos aún más los datos, estamos viendo que solo en Madrid y algo en Barcelona hay teletrabajo. En Madrid, por ejemplo, uno de cada cinco trabajadores tiene la opción de hacer trabajo en remoto al menos parcialmente. Es una cifra parecida a la media europea. En Barcelona se acerca al 15% el número de personas que pueden teletrabajar. Todas las demás comunidades la siguen muy de lejos y, por ejemplo, en Murcia, en Castilla-La Mancha o en La Rioja no llegan ni al 10% los que tienen la opción de teletrabajar. Con todo esto, lo que tenemos sobre la mesa es que España, que ya iba retrasada respecto a otros países europeos en esta cuestión, está a día de hoy aún más por detrás. María Benítez, ¿qué tal? Buenas noches. Buenas noches, Jorge. Vamos a repasar los datos. ¿En qué posición está España en cuanto al teletrabajo en comparación con el resto de países europeos? Pues claramente por detrás. Antes de la pandemia, España ocupaba el puesto 14 en el ranking de teletrabajo y ahora ha bajado dos puestos hasta el 16º lugar, claramente por debajo de la media europea ¿por qué? Nuestros compañeros de Radio Madrid le han preguntado estos días a empresarios y a trabajadores. Francisco Aranda, de la patronal madrileña CEIM, apuntaba que es una cuestión de productividad. Tiene el teletrabajo cosas muy positivas, sin duda, como que reduce los tiempos de desplazamiento o que favorece un mayor grado de concentración, pero hay que tener cuidado porque también conlleva situaciones de aislamiento social y profesional que pueden repercutir negativamente en la productividad del empleado. Algunos empresarios también apuntan a que al tener que pagar los costes del teletrabajo a sus empleados, les sale más barato que no teletrabajen, porque así se ahorran este gasto extra. Pero los sindicatos dicen que esto es una excusa. José Varela, responsable de digitalización en el trabajo de UGT, lo decía así. y ya en aquel se afirmaba que todos los costes del teletrabajo tenían que pagarlos el empresario. Estoy hablando de un acuerdo europeo que firmaron las principales patronales europeas. Esto no es un problema de costes, es un problema de fidelizar a los empleados y de tenerlos contentos. Si una empresa decide que no da el teletrabajo por pagar un ordenador y unos pequeños costes de teletrabajo es porque la empresa directamente no es viable. Los costes al final no son más que una excusa. Javier Blasco es director de Diadeco Group Institute. ¿Qué tal? Buenas noches. ¿Qué tal? Buenas noches. Estábamos viendo, según los datos que han publicado ustedes en el monitor que acaban de sacar, que la mitad de los que teletrabajaron durante la pandemia ya no teletrabaja nunca. Esto demuestra que el teletrabajo en muchos casos fue unaimos una norma no sé si anticipada en el tiempo pero parece que en algunas organizaciones tanto de la empresa privada como de la organización pública pues no ha acabado de cuajar y a la pospandemia, algunas de estas han decidido apostar por la perfeccionalidad. No, yo creo que la situación está siendo distinta. Es decir, tanto la situación de teletrabajo en España ya estaba por debajo de la media de la Unión Europea antes de la pandemia y la caída del teletrabajo en la post-pandemia ha sido mayor en el caso español que en el caso del resto de países. Y vemos efectivamente que algunos países, el porcentaje incluso que tenían antes de la pandemia ha mejorado sensiblemente, como en el caso de Portugal, o el caso de Francia. Es decir, que en este año se mueven en cifras por encima del 20% mientras que en el caso español estamos por debajo de la medida y por el mismo nivel que países como similar como Gría, Croacia, Rumanía, Bulgaria, que hay niveles muy distintos de teletrabajo en función de las comunidades autónomas, que básicamente es Madrid la que concentra prácticamente todo el teletrabajo y algo Cataluña, en el resto no. Esto obedece a unas cuestiones entendibles por concentración de las empresas en estas dos comunidades o hay algo detrás de este dato? de empresas, sobre todo de sedes de empresas del sector terciario, para que lo entendamos. Es decir, la zona metropolitana de Barcelona, en el caso de Cataluña y la Cuneo-Madrid con carácter general, es verdad que tienen mayor porcentaje de puestos o de ocupaciones teletrabajables, mientras que otras que, sin embargo, en otros parámetros, ya sea salario, están muy por encima de la media, como el caso de Navarra. Sin embargo, precisamente por ese mayor peso del sector industrial, como ocurre con Cantabria, como ocurre también con Aragón, pues tienen menor porcentaje o doscienes de teletrabajo. Con lo cual, tamaños de empresa, sector de actividad, marca sin duda la mayor presencia del teletrabajo. Bueno, yo creo que ha habido un cúmulo de factores, yo creo que probablemente la normativa no vino en el mejor momento, la normativa de teletrabajo se forzó, se precipitó durante un momento todavía pandémico, yo creo que además lo tuvo probablemente todo el consenso social necesario y probablemente también se vendió como una amenaza. Al final muchas organizaciones, y también probablemente el que los departamentos de recursos humanos no siempre tienen todavía en algunas ocupaciones las métricas suficientes para poder tener un modelo que sea transparente, que publica la productividad, lo del rendimiento y del perform, y esto puede que sea lo que normalmente subyace a esta vuelta a la presencialidad. Que luego haya personas que puedan estar a favor o en contra, va a depender de las situaciones personales, de los espacios de trabajo, de las opciones que tenga la persona, del turista, del serenito de equipos, de las cargas familiares, de los espacios domésticos, para que puedan de alguna u otra manera apostar o no por el tema de trabajo y evidentemente depende del tipo de actividad profesional. Creo que son más las tareas las que en un caso u otro aconsejan presencialidad o trabajan remoto para moverlos a entornos ideales de productividad, pero es verdad que al final las decisiones las toman las personas y las empresas. ya sea de forma parcial o de forma total. ¿Esto ya no es así o sí en el teletrabajo y dependiendo del tipo de profesión, es verdad que en algunos casos se está cometiendo un elemento crítico de animación, al final eso que se llama el salario emocional, o sea, aparte de lo que una persona busca en un puesto de trabajo tiene que ver también con la flexibilidad, la flexibilidad en tiempo de trabajo, la flexibilidad en utilidad también del lugar de trabajo, en este caso el teletrabajo. Gracias presentado también como una vía para favorecer la conciliación, una vía que están avalando incluso los tribunales. Ya hay varias sentencias en este sentido y una de las últimas ha sido por el caso de Verónica. de la cual ha sido favorable y gracias a ellos ahora me permite atender a mis obligaciones familiares. El caso lo ha impulsado el sindicato Uso. Maror Doñez es la responsable de la Federación de Servicios de este sindicato en Galicia. Y se permite a una trabajadora del Contact Center teletrabajar para poder conciliar su vida laboral y familiar. Es un paso más a favor de los trabajadores ver cómo al teletrabajo por pandemia ahora ya trabajan solo exclusivamente desde sus oficinas. Lo de que el teletrabajo llegios y contenidos adicionales, en la app de Cadena Ser y en nuestros canales de Apple Podcast, Spotify, iVoox, Google Podcast y Youtube."""
import os
os.environ["OPENAI_API_KEY"] = "sk-..."
Question 1#
Which model could have been used to transcribe the pocast from audio file (such as mp3) to the previous text.
Whisper…
Question 2#
Can you estimate the duration of the podcast just from the previous text?
Assume that, in Spanish, people talk at about 100 words / minute
number_of_words = len(text.split(" "))
number_of_words
1676
minutes = number_of_words / 100
minutes
16.76
Exercise 1#
First, we want to have an automatic way of tagging the podcast, into one of the following topics:
politics, sports, technology, science, culture, economy, health, education, environment, other.
Describe briefly your approach and implement it.
prompt = f"""Act an expert in podcast classification task and classify the following podcast transcription into one of either these categories: politics, sports, technology, science, culture, economy, health, education, environment, other.
Transcription:{text}
Please, clasify it into one of the previous categories, and propose sub-categories.
Always respond with just a list of words, avoiding explanations.
"""
import openai
client = openai.OpenAI()
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant. Always respond with a list of words."},
{"role": "user", "content": prompt}
]
)
response.choices[0].message.content
'- Culture, Work life balance\n- Economy, Productivity, Labor market\n- Other'
response.choices[0].message.content.replace('-', ' ').replace(',', ' ')
' Culture Work life balance\n Economy Productivity Labor market\n Other'
Exercise 2: controllable summarization#
We want to summarize the podcast, but we want to control the length of the summary. We want two types of summaries:
A short summary in a sentence, for a tweet.
A longer summary, showcasing three bullet points of the main topics discussed in the podcast.
Implement it and test it over the data sample.
prompt = f"""Act an expert in social network content and summarize the following podcast transcription to post it on Tweeter. That is, the summary shall be quite short, with just one of a few sentences.
Transcription:{text}
Now, summarize the content for Twitter:
"""
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
]
)
response.choices[0].message.content
'Podcast: Spain falls behind in telework post-pandemic. Only 15% in Barcelona and 20% in Madrid have remote work options. Challenges include productivity concerns and lack of employer support. Nationally, telework decline continues post-COVID. #telework #Spain #PostPandemic'
prompt = f"""Act an expert in social network content and summarize the following podcast transcription to post it on LinkedIn. That is, the summary shall consist in three bullet points with the main take-aways.
Transcription:{text}
Now, summarize the content for LinkdedIn:
"""
response = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
]
)
response.choices[0].message.content
"1. Despite the widespread preference for remote work, Spain lags behind other European countries in remote work adoption with only an 8% hybrid working model and 6% remote-only workers pre-pandemic. This increased to almost 4 million during the pandemic but has declined to 2.5 million recently.\n2. The decline in remote work post-pandemic is larger in Spain than the rest of Europe. Critics argue a lack of consensus on remote work, possible threats to productivity, and insufficient measurements of productivity in remote settings as reasons for this slide.\n3. While remote work was initially viewed as a tool for promoting work-life balance and lessening environmental impacts, it's decreasing adoption in Spain puzzles both experts and employees. However, labor courts are backing employees seeking greater flexibility, which could push remote work back into the fore."
print(response.choices[0].message.content)
1. Despite the widespread preference for remote work, Spain lags behind other European countries in remote work adoption with only an 8% hybrid working model and 6% remote-only workers pre-pandemic. This increased to almost 4 million during the pandemic but has declined to 2.5 million recently.
2. The decline in remote work post-pandemic is larger in Spain than the rest of Europe. Critics argue a lack of consensus on remote work, possible threats to productivity, and insufficient measurements of productivity in remote settings as reasons for this slide.
3. While remote work was initially viewed as a tool for promoting work-life balance and lessening environmental impacts, it's decreasing adoption in Spain puzzles both experts and employees. However, labor courts are backing employees seeking greater flexibility, which could push remote work back into the fore.
Exercise 3: structured information extraction#
We want to extract a dictionary with the person names and their corresponding companys, such as the following example:
{
"Nacho": "Industria Alimentaria",
"Ana": "No especificado",
"Lourdes": "No especificado",
"Aitor": "Comercio Online",
"María Benítez": "No especificado",
"Jorge": "No especificado",
"Francisco Aranda": "Patronal Madrileña CEIM",
"José Varela": "UGT",
"Javier Blasco": "Diadeco Group Institute",
"Verónica": "No especificado",
"Maror Doñez": "Federación de Servicios del sindicato Uso"
}
How could we do this? Implement it and test it over the data sample.
prompt = f"""Act an expert in information extraction and extract the names of the people mentioned in the podcast, with their corresponding companies. That is, you must generate a JSON with the following structure:
- As the key, use the name of the person.
- As the value, the company of that person.
Transcription:{text}
Now, generate the JSON:
"""
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant. Always return a JSON, without sentences"},
{"role": "user", "content": prompt}
]
)
response.choices[0].message.content
'{\n "Nacho": "No disponible",\n "Ana": "No disponible",\n "Lourdes": "No disponible",\n "Aitor": "Comercio online",\n "María Benítez": "No disponible",\n "Francisco Aranda": "CEIM",\n "José Varela": "UGT",\n "Javier Blasco": "Diadeco Group Institute",\n "Maror Doñez": "Federación de Servicios de Uso"\n}'
answer = response.choices[0].message.content
answer
'{\n "Nacho": "No disponible",\n "Ana": "No disponible",\n "Lourdes": "No disponible",\n "Aitor": "Comercio online",\n "María Benítez": "No disponible",\n "Francisco Aranda": "CEIM",\n "José Varela": "UGT",\n "Javier Blasco": "Diadeco Group Institute",\n "Maror Doñez": "Federación de Servicios de Uso"\n}'
import json
dictionary = json.loads(answer)
dictionary
{'Nacho': 'No disponible',
'Ana': 'No disponible',
'Lourdes': 'No disponible',
'Aitor': 'Comercio online',
'María Benítez': 'No disponible',
'Francisco Aranda': 'CEIM',
'José Varela': 'UGT',
'Javier Blasco': 'Diadeco Group Institute',
'Maror Doñez': 'Federación de Servicios de Uso'}