Spaces:
Running
Running
Alejandro Pardo commited on
Commit ·
16edd5b
1
Parent(s): b9afbea
Deploy: 2026-02-23 09:22
Browse files- data/processed/anibal_gaviria/biografia/biografia.txt +1 -1
- data/processed/anibal_gaviria/biografia/biografia_metadata.json +1 -1
- data/processed/ivan_cepeda/caracol/entrevista.txt +786 -0
- data/processed/ivan_cepeda/caracol/entrevista_metadata.json +10 -0
- data/processed/ivan_cepeda/caracol/entrevista_timestamps.json +1 -0
- src/rag/build_vector_db.py +54 -30
data/processed/anibal_gaviria/biografia/biografia.txt
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
|
|
|
|
| 1 |
+
Aníbal Gaviria Correa es un politico colombiano que ha sido Gobernador de Antioquia (2004-2007 y 2020-2023) y Alcalde de Medellin (2012-2015). Participa en la Gran Consulta por Colombia del 8 de marzo de 2026 como candidato de centro-derecha. Su propuesta se centra en descentralizacion, tarifa cero en transporte publico, reforma a la salud y mano firme contra la violencia.
|
data/processed/anibal_gaviria/biografia/biografia_metadata.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
{
|
| 2 |
-
"candidate": "
|
| 3 |
"proposal_title": "Biografia",
|
| 4 |
"topic": "Biografia",
|
| 5 |
"source_url": "",
|
|
|
|
| 1 |
{
|
| 2 |
+
"candidate": "Aníbal Gaviria",
|
| 3 |
"proposal_title": "Biografia",
|
| 4 |
"topic": "Biografia",
|
| 5 |
"source_url": "",
|
data/processed/ivan_cepeda/caracol/entrevista.txt
ADDED
|
@@ -0,0 +1,786 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
como Iván Cepeda en ese contacto que de pronto se crea y de paso me cuenta cómo se organizan esas manifestaciones.
|
| 2 |
+
Bueno, lo primero es que siento una enorme emoción porque realmente percibo mucho afecto y mucho reconocimiento en la gente.
|
| 3 |
+
Y creo que eso, pues, digamos independientemente de lo que a mí me corresponde,
|
| 4 |
+
creo que es un reconocimiento al propio gobierno y a lo que ha hecho en estos años por la gente,
|
| 5 |
+
sobre todo por la gente que ha tenido las condiciones más difíciles en el país y en muchas regiones rurales
|
| 6 |
+
y en la periferia de las grandes ciudades.
|
| 7 |
+
¿Cómo se organizan con la gente?
|
| 8 |
+
La gente hace los esfuerzos.
|
| 9 |
+
Nosotros no financiamos en ninguna clase de movilizaciones.
|
| 10 |
+
Nuestra campaña es una campaña, lo he dicho desde el comienzo, austera y he cumplido con ese presupuesto.
|
| 11 |
+
Y entonces eso hace que haya una fuerza que se despliegue en los territorios que también nosotros creemos que va a expresar en las urnas.
|
| 12 |
+
Primero el 8 de marzo y después el 31 de mayo.
|
| 13 |
+
Ya vamos a hablar de todos estos temas de política, de su programa, de su campaña,
|
| 14 |
+
pero le quería hacer una pregunta, lo hablábamos con Alejandra ayer.
|
| 15 |
+
A mí personalmente me ha llamado la atención que usted lee los discursos.
|
| 16 |
+
Sí, eso es una decisión.
|
| 17 |
+
Eso no es común, ¿por qué?
|
| 18 |
+
Por varias razones.
|
| 19 |
+
Primero porque nosotros queremos que nuestro programa quede claramente establecido.
|
| 20 |
+
Entonces son 50 actos, son 50 discursos, son 50 elaboraciones que se pueden encontrar fácilmente
|
| 21 |
+
para que no se diga que estamos haciendo retórica, demagogia,
|
| 22 |
+
que esto son cosas que uno promete en el calor de una manifestación con las emociones.
|
| 23 |
+
Aquí hay un planteamiento serio y es un planteamiento que está condensado en ya, no sé,
|
| 24 |
+
tal vez 200 páginas que están allí disponibles para que se puedan examinar.
|
| 25 |
+
Cada una de esas intervenciones públicas trae propuestas sobre temas concretos
|
| 26 |
+
y han sido desplegados con una lógica.
|
| 27 |
+
Así que ahí está el programa.
|
| 28 |
+
Ahora bien, yo también puedo hacer, lo he hecho durante mis años en el Congreso,
|
| 29 |
+
intervenciones orales.
|
| 30 |
+
En el Congreso siempre se interviene sin texto escrito,
|
| 31 |
+
así que no es un asunto de una limitación en esa materia,
|
| 32 |
+
sino porque quiero apelar a la rigurosidad y la claridad del planteamiento.
|
| 33 |
+
Bueno, las campañas suelen decirse o resumirse en continuidad o cambio.
|
| 34 |
+
En este caso usted es el candidato de la continuidad de este proyecto progresista
|
| 35 |
+
que ha estado en el gobierno de Gustavo Petro.
|
| 36 |
+
En términos generales, esa continuidad, ¿a usted en qué le está dando fuerza
|
| 37 |
+
y en qué le está restando?
|
| 38 |
+
Porque, por supuesto, hay claros y oscuros del balance de este gobierno.
|
| 39 |
+
Pues unos matices a ese planteamiento.
|
| 40 |
+
Yo creo que hay que continuar lo que es lo más importante,
|
| 41 |
+
lo mejor que ha dejado el gobierno.
|
| 42 |
+
En algunos puntos habrá cambios y habrá cambios, yo diría también,
|
| 43 |
+
profundos y serios.
|
| 44 |
+
Y en lo que tiene que ver con la continuidad,
|
| 45 |
+
habrá profundización de la propuesta esencial de este gobierno,
|
| 46 |
+
que a mi juicio es la política social.
|
| 47 |
+
Y yo creo que eso es profundamente benéfico para el país.
|
| 48 |
+
¿Por qué?
|
| 49 |
+
Porque este gobierno ha mostrado que el problema social en Colombia,
|
| 50 |
+
cuando digo el problema social me refiero a la pobreza y a la desigualdad social,
|
| 51 |
+
no son cargas, no son simplemente una inversión forzada de un gobierno y del Estado,
|
| 52 |
+
no, es una inversión para el desarrollo.
|
| 53 |
+
Digamos, lo nuevo del gobierno Petro y del planteamiento que hemos hecho
|
| 54 |
+
es que invertir en lo social es invertir en el crecimiento económico
|
| 55 |
+
y en el desarrollo del país.
|
| 56 |
+
Y ese planteamiento ha mostrado frutos y por eso lo vamos no solo a continuar,
|
| 57 |
+
sino a radicalizar.
|
| 58 |
+
Esa palabra ha sido objeto de discusiones.
|
| 59 |
+
Sí vamos a hacer una política social que cada vez transforme más
|
| 60 |
+
y pueda erradicar la pobreza y también superar la desigualdad social.
|
| 61 |
+
¿En qué políticas, por ejemplo?
|
| 62 |
+
Exactamente.
|
| 63 |
+
¿En qué políticas específicas para hablar de esa palabra que usted dice
|
| 64 |
+
puede asustar hablar de radicalizar y la profundización de esas reformas sociales?
|
| 65 |
+
¿En qué en concreto?
|
| 66 |
+
Yo creo que ya hay unas reformas que están en curso.
|
| 67 |
+
La reforma agraria, por ejemplo, ha sido muy importante en este gobierno.
|
| 68 |
+
Yo creo que este es el primer gobierno que tiene realmente una política seria
|
| 69 |
+
con resultados visibles de reforma agraria.
|
| 70 |
+
Y ahora el reto no es solamente entregar tierras, titularlas,
|
| 71 |
+
como está establecido en el Acuerdo de Paz de 2016,
|
| 72 |
+
sino también pasar a que la economía campesina se convierta en un motor de la economía nacional.
|
| 73 |
+
Para eso es necesario seguir avanzando en el crecimiento agropecuario del país,
|
| 74 |
+
que ha sido uno de los éxitos de este gobierno.
|
| 75 |
+
Este gobierno tiene mucho que mostrar en materia de desarrollo de la economía agropecuaria.
|
| 76 |
+
Así que allí habrá un vector de desarrollo social muy importante.
|
| 77 |
+
Vamos a seguir avanzando en la reforma laboral, en la reforma pensional, por supuesto.
|
| 78 |
+
Hay que avanzar en la reforma a la salud.
|
| 79 |
+
Es necesario aprofundizar la reforma en materia de educación.
|
| 80 |
+
Y lo más importante también en este aspecto es el desarrollo de los territorios.
|
| 81 |
+
No hemos podido, en unas cuantas zonas del país,
|
| 82 |
+
generar un proceso de transformación territorial.
|
| 83 |
+
Yo creo que esa es la razón, no solamente del atraso de muchos territorios,
|
| 84 |
+
sino también el problema de la violencia.
|
| 85 |
+
Creo que ese es el...
|
| 86 |
+
En Cauca, en Catatumbo, en sur de Bolívar, para mencionar tres sitios,
|
| 87 |
+
ese es el problema esencial.
|
| 88 |
+
Doctor Iván, usted dice, volviendo con la inquietud de María Alejandra,
|
| 89 |
+
de que algunos se pueden asustar con la palabra radicalizar esas reformas sociales
|
| 90 |
+
que el país requiere y reclama y necesita.
|
| 91 |
+
Esa radicalización de la que usted habla, esa profundización de esas reformas,
|
| 92 |
+
¿qué tanto tocan el actual modelo económico que tiene el país?
|
| 93 |
+
Y se lo pregunto porque es la misma inquietud que a usted le han planteado,
|
| 94 |
+
entiendo, usted me corregirá, gremios económicos, voceros empresariales...
|
| 95 |
+
Sí, sí hemos tenido un diálogo muy intenso.
|
| 96 |
+
Y le han dicho, oiga, ¿qué va a cambiar usted el modelo?
|
| 97 |
+
¿Eso qué va a transformar o en qué va a radicalizar
|
| 98 |
+
o en qué puede cambiar el modelo económico del país?
|
| 99 |
+
Yo creo que es muy importante que en esto haya total salida.
|
| 100 |
+
Nosotros seguimos la línea que ha planteado en esto durante los años de gobierno
|
| 101 |
+
tanto el presidente Petro como el Pacto Histórico.
|
| 102 |
+
Nosotros no estamos por acabar con el capitalismo en este estadio del desarrollo nacional.
|
| 103 |
+
Creemos que hay que hacer un capitalismo productivo
|
| 104 |
+
y eso significa que haya una redistribución efectivamente de la riqueza,
|
| 105 |
+
pero que esa redistribución sirva a la prosperidad de la sociedad.
|
| 106 |
+
Es decir, nosotros creemos que es necesario superar la idea
|
| 107 |
+
de que acabar con la pobreza es casi equivalente a hacerle un daño a la riqueza
|
| 108 |
+
que hay en ciertos sectores de la sociedad.
|
| 109 |
+
No, yo creo que se puede conciliar la prosperidad de todos los sectores
|
| 110 |
+
y para eso hay todos los recursos, toda la potencialidad de un país como Colombia.
|
| 111 |
+
Colombia no es un país que tenga problemas como otros en materia de una riqueza natural,
|
| 112 |
+
de una biodiversidad, de una geografía, de unas capacidades humanas también
|
| 113 |
+
que le permitan convertirse en lo que hemos querido nosotros,
|
| 114 |
+
una potencia mundial agroalimentaria.
|
| 115 |
+
Ese es el planteamiento.
|
| 116 |
+
Y ese planteamiento en estos años ha mostrado ser un planteamiento correcto.
|
| 117 |
+
No porque sea una discusión ideológica,
|
| 118 |
+
sino porque hay cifras que lo muestran de una manera bastante concluyente.
|
| 119 |
+
Pero la tensión que se ha generado entre el gobierno actual y el sector privado dice otra cosa,
|
| 120 |
+
doctor Iván, y se lo digo porque el presidente ha decidido
|
| 121 |
+
dividir al país en buenos y malos, en ricos y pobres,
|
| 122 |
+
y en que hay que quitarles a los ricos para darles a los pobres.
|
| 123 |
+
¿Usted va a continuar con ese planteamiento?
|
| 124 |
+
No, yo no creo que ese sea el planteamiento que ha hecho el presidente
|
| 125 |
+
y la demostración más palmaria de esa afirmación es que las empresas,
|
| 126 |
+
las grandes empresas del país han tenido ganancias muy importantes.
|
| 127 |
+
Eso es otra cosa, pero que lo ha dicho, lo ha dicho.
|
| 128 |
+
O sea que la política no ha sido acabar con la empresa privada.
|
| 129 |
+
Ha habido una discusión muy intensa, ha habido intentos de un acuerdo nacional,
|
| 130 |
+
ha habido incluso pactos que han tenido éxito.
|
| 131 |
+
Yo le menciono uno de ellos porque tuve que ver con él.
|
| 132 |
+
La venta de tierras por parte de FEDEGAN al Estado colombiano
|
| 133 |
+
para ser entregadas al campesinado.
|
| 134 |
+
O sea que sí ha habido posibilidades de un diálogo.
|
| 135 |
+
En otros campos no.
|
| 136 |
+
Entonces ahí hay un reto.
|
| 137 |
+
La invitación que yo hago es a que desarrollemos un diálogo honesto,
|
| 138 |
+
serio, leal, para que podamos lograr la prosperidad del país
|
| 139 |
+
y seguir desarrollando lo que ya hemos avanzado en esa materia.
|
| 140 |
+
En ese sentido y para profundizar esas reformas y esas políticas sociales,
|
| 141 |
+
pues está al frente de una realidad fiscal.
|
| 142 |
+
Y aquí hay una preocupación sobre si el crecimiento que se está planteando
|
| 143 |
+
de algo más del 2.8 para Colombia en las últimas cifras
|
| 144 |
+
puede ser sostenible para lo que viene.
|
| 145 |
+
Y si el nuevo gobierno, que si usted es elegido presidente,
|
| 146 |
+
tendrá que enfrentar es esa realidad fiscal.
|
| 147 |
+
Una deuda enorme, un gasto público que tendría que reducirse
|
| 148 |
+
o un aumento de impuestos.
|
| 149 |
+
Usted en esa fórmula, ¿cómo se plantea?
|
| 150 |
+
Hay otra vía además de la cual voy a hablar ahora.
|
| 151 |
+
Pero bueno, primero el origen del deuda.
|
| 152 |
+
Aquí hay una responsabilidad del gobierno, por supuesto,
|
| 153 |
+
pero hay una responsabilidad acumulada.
|
| 154 |
+
Y eso me parece importante decirlo.
|
| 155 |
+
Pero bueno, es el problema y vamos a tener que abocarlo.
|
| 156 |
+
Pero por supuesto es un problema muy serio.
|
| 157 |
+
Existen fórmulas.
|
| 158 |
+
Yo tengo una que creo que es importante desarrollar con todo,
|
| 159 |
+
la energía y el entusiasmo,
|
| 160 |
+
y es la lucha contra la corrupción y el despilfarro en el Estado.
|
| 161 |
+
Usted habla de una macro corrupción.
|
| 162 |
+
Sí, exactamente.
|
| 163 |
+
Y de tener un abordaje desde lo macro y no necesariamente...
|
| 164 |
+
Yo lo que creo, y en eso me distancio un poco de colegas,
|
| 165 |
+
candidatos y candidatas que he visto en estos espacios mediáticos,
|
| 166 |
+
es que no basta con un discurso genérico contra la corrupción
|
| 167 |
+
y la indignación que a todos nos produce y la condena,
|
| 168 |
+
en fin, toda esa demagogia que hemos escuchado en muchos planteamientos.
|
| 169 |
+
Aquí es necesaria una política muy seria y estructurada,
|
| 170 |
+
y en mi caso tiene tres nuevos énfasis.
|
| 171 |
+
Lo primero es que no es una lucha contra la corrupción menor.
|
| 172 |
+
Vamos a hacer una lucha de sistema contra la corrupción.
|
| 173 |
+
¿Y eso qué significa?
|
| 174 |
+
Vamos a tomar los casos, los macro casos de corrupción.
|
| 175 |
+
Y eso no simplemente para hacer de eso una crónica.
|
| 176 |
+
Vamos a ir por los responsables de esos hechos.
|
| 177 |
+
A través de mecanismos de investigación que no se han aplicado.
|
| 178 |
+
Es decir, a la macro corrupción no se le puede aplicar el tipo penal
|
| 179 |
+
o de investigación penal que se hace con pequeños casos
|
| 180 |
+
o casos individuales de corrupción.
|
| 181 |
+
Hay que hacer investigación criminal de sistema.
|
| 182 |
+
Pero en segundo lugar, vamos a ir caso por caso.
|
| 183 |
+
No, no se trata simplemente de hacer una lucha genérica.
|
| 184 |
+
Obviamente hay que tener mecanismos preventivos
|
| 185 |
+
de un sistema que prevenga la corrupción,
|
| 186 |
+
pero vamos a tomar casos particulares.
|
| 187 |
+
Y aquí, por ejemplo, menciono el siguiente.
|
| 188 |
+
¿Cómo es posible que los territorios del país
|
| 189 |
+
que tienen mayor cantidad de recursos por regalías sean los más pobres?
|
| 190 |
+
¿Quién explica eso?
|
| 191 |
+
Hace unos días estuve hablando con alguien que me decía
|
| 192 |
+
si aquí los recursos de las regalías se hubieran invertido,
|
| 193 |
+
las regalías estarían adoquinadas con lingotes de 18 kilates de oro.
|
| 194 |
+
Y es un pueblo que no tiene agua potable,
|
| 195 |
+
o una población que no tiene agua potable.
|
| 196 |
+
¿En la Guajira dónde quedaba eso?
|
| 197 |
+
En Cesar, en este caso.
|
| 198 |
+
Entonces, ¿cómo es posible que se hayan robado de esa forma,
|
| 199 |
+
o por lo menos en una gran proporción desviado los recursos de las regalías?
|
| 200 |
+
En el 90 teníamos como ejemplo Arauca,
|
| 201 |
+
que eran los grandes, ¿se acuerdan?
|
| 202 |
+
El velódromo.
|
| 203 |
+
Los grandes elefantes blancos de obras que quedaban allí.
|
| 204 |
+
Entonces vamos caso por caso.
|
| 205 |
+
Y el tercero es que no va a ser una lucha solitaria del gobierno.
|
| 206 |
+
Yo voy a invitar a la ciudadanía a que hagamos,
|
| 207 |
+
digamos, un frente común contra la corrupción.
|
| 208 |
+
Y eso implica una rebelión de la ciudadanía.
|
| 209 |
+
¿Pero un tema cultural de la ciudadanía?
|
| 210 |
+
Es decir, que no participe tampoco en este caso de las elecciones,
|
| 211 |
+
no quiero desviar de su idea,
|
| 212 |
+
pero tiene que ver mucho, por ejemplo, con la compra de votos, etc.
|
| 213 |
+
O sea, la corrupción pareciera que además de los sistemas
|
| 214 |
+
que han permitido quedarse y apropiarse con recursos públicos,
|
| 215 |
+
tienen que ver con la manera en la que los colombianos
|
| 216 |
+
también hemos aceptado el transcurrir, digamos, de esa corrupción.
|
| 217 |
+
Eso es lo que nosotros en nuestro programa hemos llamado
|
| 218 |
+
la postración moral, que debe ser objeto de una revolución ética en el país.
|
| 219 |
+
Es decir, es un problema de conciencia y de cultura y de educación.
|
| 220 |
+
Y también pasa por otra cosa.
|
| 221 |
+
Usted decía, mire, a cosas que ha hecho el actual gobierno,
|
| 222 |
+
lo anoté aquí, hay que hacer cambios profundos y serios.
|
| 223 |
+
¿Eso implica este tema de la corrupción?
|
| 224 |
+
Se lo pregunto por los escándalos espantosos de la unidad de gestión de riesgo,
|
| 225 |
+
ministros presos, el FOMAG.
|
| 226 |
+
Yo en un discurso dije que los olmedos no serían tolerados.
|
| 227 |
+
¿Cómo hace usted para que no entren olmedos a su gobierno?
|
| 228 |
+
No, es decir, no voy a hacer demagogia.
|
| 229 |
+
Precisamente porque he dicho que no hay que hacer...
|
| 230 |
+
Pero déjame plantearle la pregunta al revés.
|
| 231 |
+
¿Cómo va a hacer en este plan de macro contra la macrocorrupción,
|
| 232 |
+
qué mecanismos va a establecer, qué alarmas va a establecer
|
| 233 |
+
para que no entren olmedos?
|
| 234 |
+
Y aquí no le vamos a meter ideología,
|
| 235 |
+
porque hay gente del proyecto político del presidente Petro
|
| 236 |
+
que terminó untada hasta las narices.
|
| 237 |
+
Ha ocurrido y evidentemente el presidente lo ha reconocido
|
| 238 |
+
y ha sido en eso absolutamente claro y drástico.
|
| 239 |
+
Pero evidentemente el problema de la corrupción en Colombia es que es un sistema.
|
| 240 |
+
Es decir, no es que haya casos, no es que se presenten situaciones
|
| 241 |
+
en las que se desvía la función pública y se convierte esto en un lucro personal.
|
| 242 |
+
Es que es un sistema al interior del Estado.
|
| 243 |
+
Es una empresa.
|
| 244 |
+
Es decir, hay instituciones en las cuales se van heredando no las políticas públicas,
|
| 245 |
+
sino las formas de esquilmar y de saquear el presupuesto.
|
| 246 |
+
Entonces, no voy a hacer en esto promesas demagógicas.
|
| 247 |
+
Es muy posible o altamente probable que se presenten casos de corrupción
|
| 248 |
+
en un gobierno que yo presida.
|
| 249 |
+
Pero lo que no voy a tolerar es que eso ocurra sin que haya una reacción,
|
| 250 |
+
una prevención y una acción decidida para que eso sea castigado y reprimido.
|
| 251 |
+
Ahora, para eso he pensado, y ahí está el planteamiento en un sistema
|
| 252 |
+
que va a funcionar o debe funcionar para combatir la macrocorrupción,
|
| 253 |
+
que tiene niveles de prevención, tiene niveles de actuación
|
| 254 |
+
y tiene niveles de castigo y sanción.
|
| 255 |
+
Tiene que contar usted con la justicia para esto.
|
| 256 |
+
De hecho, la justicia tendría que participar también de ese sistema.
|
| 257 |
+
¿Tendría que tener cambios también?
|
| 258 |
+
Porque hemos visto también que muchas partes, muchos procesos también,
|
| 259 |
+
en su impunidad, entre comillas, y en el aplazamiento de las decisiones,
|
| 260 |
+
hacen parte de la macrocorrupción.
|
| 261 |
+
María Alejandra, ¿qué tal, doctor Iván, qué tal este señor Matos
|
| 262 |
+
y que sale caminando semejante escándalo de corrupción
|
| 263 |
+
y ofreció un preacuerdo con la fiscalía?
|
| 264 |
+
Era una moto y una camioneta.
|
| 265 |
+
Y lo peor es que la fiscalía le parecía buenísimo.
|
| 266 |
+
Pero aquí el problema primero es cómo se investiga esto.
|
| 267 |
+
No puede seguir siendo investigado caso por caso.
|
| 268 |
+
Aquí hay que desarrollar lo que se llama la investigación de sistema.
|
| 269 |
+
Es decir, hay que crear o desarrollar,
|
| 270 |
+
cuando ya hay en la fiscalía unidades para esto,
|
| 271 |
+
una forma de investigar y reprimir esos delitos que corresponda a su naturaleza.
|
| 272 |
+
Y ¿hay normatividad suficiente para esto?
|
| 273 |
+
Y se lo pregunto porque usted también habla,
|
| 274 |
+
y voy a enlazar las dos cosas, de una asamblea nacional constituyente.
|
| 275 |
+
Y a veces, cuando se plantea esa idea,
|
| 276 |
+
inicialmente los defensores de la constitución del 91
|
| 277 |
+
y el plano político que se está discutiendo este tema es,
|
| 278 |
+
no, se pega bien una constituyente para cambiarlo todo.
|
| 279 |
+
En este tema de la normatividad, digamos, del cuerpo de leyes de Colombia,
|
| 280 |
+
para, por ejemplo, lograr esos cambios de sistema,
|
| 281 |
+
¿son con lo que tenemos o para qué sería la constituyente?
|
| 282 |
+
Yo creo que es perfectamente posible hacer esos cambios
|
| 283 |
+
sin necesidad de grandes cambios normativos.
|
| 284 |
+
Ahora, otra cosa es que en Colombia se requiere una reforma a la justicia,
|
| 285 |
+
pero no depende una cosa de otra.
|
| 286 |
+
Yo creo que existen instrumentos suficientes
|
| 287 |
+
para hacer una lucha contra la corrupción mucho más profunda y clara con lo que ya hay.
|
| 288 |
+
Ahora, sobre la asamblea constituyente he sido muy claro en el planteamiento.
|
| 289 |
+
Yo creo que efectivamente puede ser un escenario,
|
| 290 |
+
pero siempre y cuando haya un proceso de concertación y de acuerdo nacional.
|
| 291 |
+
Yo creo que hay que dar ese paso,
|
| 292 |
+
hay que intentar llegar a un acuerdo sobre los problemas esenciales.
|
| 293 |
+
¿Cuáles son esos problemas?
|
| 294 |
+
Aquí ya hemos hablado de dos,
|
| 295 |
+
la corrupción y los cambios en materia de política social.
|
| 296 |
+
Si hay una concertación sobre esos temas,
|
| 297 |
+
si hay un mecanismo mediante el cual podamos hacerlos viables
|
| 298 |
+
desde el punto de vista normativo y constitucional,
|
| 299 |
+
lo podemos pactar y esa puede ser una asamblea constituyente.
|
| 300 |
+
El otro gran pilar de estos temas que son,
|
| 301 |
+
doctor Iván Cepeda,
|
| 302 |
+
que el país plantea a los colombianos es el de la seguridad.
|
| 303 |
+
Y ahí usted lo mencionaba,
|
| 304 |
+
es el otro gran tema del que sus detractores hoy
|
| 305 |
+
le recuerdan todo el tiempo aquí y en todo lado.
|
| 306 |
+
Usted es el gran responsable porque usted fue,
|
| 307 |
+
dicen, el arquitecto de la paz total.
|
| 308 |
+
Estaba viendo aquí la ley 2272 del 2022,
|
| 309 |
+
que facultaba al gobierno para hacer esa estrategia,
|
| 310 |
+
sacar adelante.
|
| 311 |
+
¿Qué tan responsable se siente usted políticamente del desastre
|
| 312 |
+
del orden público que está hoy el país?
|
| 313 |
+
No, yo me siento orgulloso de haber trabajado por la paz en Colombia.
|
| 314 |
+
Yo he tenido intervención en buena parte de los procesos de paz
|
| 315 |
+
que se han dado.
|
| 316 |
+
Unos han tenido éxito,
|
| 317 |
+
como es el acuerdo de paz que se firmó en 2016.
|
| 318 |
+
En ese acuerdo tuve un papel en buena parte discreto,
|
| 319 |
+
de un trabajo de facilitación,
|
| 320 |
+
pero he trabajado en otros procesos.
|
| 321 |
+
Algunos no han fructificado por diversas razones.
|
| 322 |
+
Pero yo creo que trabajar por la paz,
|
| 323 |
+
lo dice la Constitución,
|
| 324 |
+
no es solamente un derecho de los colombianos,
|
| 325 |
+
es un deber.
|
| 326 |
+
Y como tal no puede ser criminalizado.
|
| 327 |
+
La explicación de que por la política de paz hay violencia,
|
| 328 |
+
es una explicación que a mi modo de ver es absolutamente deleznable,
|
| 329 |
+
superficial y absolutamente retrógrada.
|
| 330 |
+
Pero me da pena.
|
| 331 |
+
Es decir, ¿para usted esta paz total funcionó?
|
| 332 |
+
No, podemos discutir sobre los resultados en materia de paz,
|
| 333 |
+
pero ahora me parece que es importante que discutamos
|
| 334 |
+
si es la política de paz la causa de la violencia.
|
| 335 |
+
Y lo que yo diría es lo siguiente,
|
| 336 |
+
los grupos armados en Colombia
|
| 337 |
+
funcionan hoy sobre la base de economías ilícitas que son bollantes,
|
| 338 |
+
que tienen un desarrollo global, no solamente en Colombia.
|
| 339 |
+
El problema de las redes del narcotráfico no es un problema colombiano,
|
| 340 |
+
es un problema que va desde Alaska hasta la Patagonia.
|
| 341 |
+
Hoy en día hay redes criminales en todos los países latinoamericanos
|
| 342 |
+
y el problema de las drogas, para no hablar de otros,
|
| 343 |
+
se ha convertido en un problema transnacional, evidentemente.
|
| 344 |
+
Así que ahí hay un problema.
|
| 345 |
+
No digo que en Colombia nos debamos simplemente justificar
|
| 346 |
+
con que el problema es transnacional.
|
| 347 |
+
No, ahí hay un problema que debemos abocar.
|
| 348 |
+
Pero también está el problema de la minería ilegal del oro,
|
| 349 |
+
que es tan grave o más grave que el problema del narcotráfico.
|
| 350 |
+
Entonces es allí donde está el problema, no en la política de paz.
|
| 351 |
+
Podemos discutir la política de paz, podemos discutir sus resultados,
|
| 352 |
+
claro que sí.
|
| 353 |
+
Y perdóname, lo interrumpo, María Alejandra, para renunciar a este tema.
|
| 354 |
+
Es que quienes saben del tema,
|
| 355 |
+
y no solamente los candidatos presidenciales que le atacan a usted,
|
| 356 |
+
sus detractores, sino gente que sabe, dice,
|
| 357 |
+
mire, esta política de paz del actual gobierno
|
| 358 |
+
lo que hizo fue facilitarles a estos grupos
|
| 359 |
+
todos esos fenómenos que usted dice, estoy de acuerdo con usted,
|
| 360 |
+
el narcotráfico es transversal, nos atraviesa a todos en este continente.
|
| 361 |
+
Pero el asunto es que esta política de paz
|
| 362 |
+
le facilitó mucho la vida a esos grupos.
|
| 363 |
+
Podemos discutir en qué casos,
|
| 364 |
+
porque me parece que esas generalizaciones no ayudan.
|
| 365 |
+
No, pues se los tengo en Catatumbo.
|
| 366 |
+
Puede ser que en algunos casos puntualmente.
|
| 367 |
+
23 mil hombres más.
|
| 368 |
+
Pero yo le voy a decir algo, Juan Roberto.
|
| 369 |
+
Este gobierno ha incautado 3 mil toneladas de cocaína.
|
| 370 |
+
Claro, ahora vienen la oposición y nuestros contradictores a decirnos
|
| 371 |
+
que eso es porque hay más comercio y porque hay más tráfico ilícito.
|
| 372 |
+
No, pero son 3 mil toneladas.
|
| 373 |
+
Es una cifra absolutamente inusitada
|
| 374 |
+
y que ha implicado una labor enorme
|
| 375 |
+
que hay que reconocerle a las fuerzas militares y de policía.
|
| 376 |
+
Este es un esfuerzo que incluso ha sido reconocido internacionalmente.
|
| 377 |
+
Entonces no se puede decir que la política de paz,
|
| 378 |
+
eso me parece que es una afirmación falaz,
|
| 379 |
+
ató de manos a la fuerza pública.
|
| 380 |
+
Este gobierno ha tenido una acción clara,
|
| 381 |
+
represora de los grupos armados
|
| 382 |
+
y ha hecho incluso acciones militares que no han hecho otros gobiernos,
|
| 383 |
+
como la que se ha hecho, por ejemplo, en el Cañón del Micay,
|
| 384 |
+
un sitio que era un santuario de las organizaciones criminales.
|
| 385 |
+
Entonces, evidentemente aquí podemos discutir,
|
| 386 |
+
podemos hablar de cómo diseñar una política de paz,
|
| 387 |
+
pero la conclusión no puede ser de ninguna manera
|
| 388 |
+
que buscar la paz es inmediatamente sinónimo
|
| 389 |
+
o que es equivalente a promover a los grupos armados y a la criminalidad,
|
| 390 |
+
como lo he escuchado, no digo que aquí se esté planteando así el argumento,
|
| 391 |
+
pero sí se lo he escuchado a los detractores de la política del gobierno.
|
| 392 |
+
Miremos entonces cuál sería la política de seguridad
|
| 393 |
+
y luego hablaremos de una comunicación que usted le acaba de hacer
|
| 394 |
+
a las fuerzas militares, tal vez en otro tipo de área
|
| 395 |
+
que es las condiciones para el cuerpo.
|
| 396 |
+
Pero creo que es íntimamente.
|
| 397 |
+
Claro, que está íntimamente ligado,
|
| 398 |
+
pero en una política de seguridad, de control territorial,
|
| 399 |
+
de llegar allí donde esas fuerzas criminales
|
| 400 |
+
han crecido y han establecido un contacto con la población
|
| 401 |
+
que muchas veces confunde en el hecho de asumir casi que funciones de Estado,
|
| 402 |
+
proveyendo además bienes y servicios en esas poblaciones
|
| 403 |
+
que es el reemplazo total del Estado.
|
| 404 |
+
¿Cuál es el planteamiento?
|
| 405 |
+
El planteamiento aquí es que la política de seguridad
|
| 406 |
+
no es una política aislada ni es una política hegemónica,
|
| 407 |
+
es una política que se integra al conjunto de la política del Estado
|
| 408 |
+
y yo creo que hay que tener una política de seguridad fuerte,
|
| 409 |
+
pero tiene que ser una política que actúe en una armonía
|
| 410 |
+
y en una articulación plena con otras políticas.
|
| 411 |
+
Digamos, ¿dónde está el problema aquí?
|
| 412 |
+
Bueno, uno podría decir que en todo el país,
|
| 413 |
+
pero fundamentalmente hay cinco o seis territorios
|
| 414 |
+
donde se concentra el problema.
|
| 415 |
+
Esos territorios hay que desarrollarlos,
|
| 416 |
+
ahí hay que desarrollar un tipo de economía distinta.
|
| 417 |
+
Si no lo logramos,
|
| 418 |
+
podrá haber la política de intervención militar más poderosa del planeta.
|
| 419 |
+
Hemos estado 70 años en esa historia.
|
| 420 |
+
Entonces, la política de seguridad es parte de una política integral del Estado,
|
| 421 |
+
para lo que se ha intentado en otros momentos,
|
| 422 |
+
pero que hay que avanzar en ello,
|
| 423 |
+
la presencia integral del Estado en el territorio
|
| 424 |
+
para poder cambiar las condiciones del conflicto armado y de la violencia,
|
| 425 |
+
también en los territorios urbanos, por supuesto.
|
| 426 |
+
Esto no es solamente con relación a los territorios rurales.
|
| 427 |
+
Ese es un asunto claro,
|
| 428 |
+
por lo tanto mi política de seguridad no es una política
|
| 429 |
+
que esté exclusivamente centrada en cómo vamos a fortalecer
|
| 430 |
+
las capacidades militares y de inteligencia del Estado.
|
| 431 |
+
Eso tendrá que hacerse, por supuesto,
|
| 432 |
+
pero fundamentalmente es de transformación de los territorios
|
| 433 |
+
y de ataque de las causas de la violencia,
|
| 434 |
+
entre las cuales la pobreza y la desigualdad social
|
| 435 |
+
en las zonas rurales y en las zonas marginales urbanas es fundamental.
|
| 436 |
+
Doctor Iván,
|
| 437 |
+
¿Usted ya ha pensado quién va a manejar el tema de seguridad en su eventual gobierno?
|
| 438 |
+
No puedo dar nombres,
|
| 439 |
+
pero sí será alguien que tenga tanto la experiencia como la capacidad
|
| 440 |
+
como el experticio necesario para poder desarrollar una tarea de tal responsabilidad.
|
| 441 |
+
Ahora tiene que ser una persona también
|
| 442 |
+
con la cual compartamos una visión de la seguridad.
|
| 443 |
+
No, es que me quedo pensando una cosa,
|
| 444 |
+
porque además vienen dos elementos claves también ahí,
|
| 445 |
+
que son lo que está pasando en Venezuela, doctor Iván,
|
| 446 |
+
y lo que pasó en la reunión del presidente Petro con el presidente Trump en la Casa Blanca,
|
| 447 |
+
que tienen que estar o están íntimamente ligados con la seguridad en Colombia.
|
| 448 |
+
Usted en un eventual gobierno suyo,
|
| 449 |
+
¿cómo recoge eso que hereda de esta fase final del gobierno Petro?
|
| 450 |
+
Yo creo que una de las zonas precisamente que hay que prestarle atención en su transformación
|
| 451 |
+
son las zonas fronterizas,
|
| 452 |
+
tanto la de Venezuela como la de Ecuador,
|
| 453 |
+
porque allí hay una concentración precisamente de factores
|
| 454 |
+
que han estimulado la violencia del lado y lado de la frontera.
|
| 455 |
+
Bueno, en Venezuela está el ELN y otros grupos armados,
|
| 456 |
+
y aquí en Colombia tenemos al tren de Aragua.
|
| 457 |
+
Eso implica una política que debe tener un componente, por supuesto,
|
| 458 |
+
de cooperación y de trabajo conjunto de las fuerzas militares y de policía,
|
| 459 |
+
y de inteligencia de ambos países,
|
| 460 |
+
pero también implica una política de transformación del territorio,
|
| 461 |
+
e implica una cooperación económica,
|
| 462 |
+
e implica además lo que ha hecho de manera acertada este gobierno,
|
| 463 |
+
estimular el comercio, el intercambio entre los países.
|
| 464 |
+
La política de cerrar fronteras bajo el gobierno anterior, el gobierno Duque, fue un fracaso.
|
| 465 |
+
No solamente no terminó cumpliendo un propósito que había anunciado ese gobierno,
|
| 466 |
+
que era debilitar o intentar debilitar el gobierno venezolano,
|
| 467 |
+
sino que además arruinó a los comerciantes en la frontera.
|
| 468 |
+
Así que hay que desarrollar una política diplomática, comercial, de intercambio,
|
| 469 |
+
y que también tiene un carácter de cooperación militar
|
| 470 |
+
que permita que la zona de frontera se desarrolle y pueda resolver el problema que tiene hoy.
|
| 471 |
+
El asunto energético ha sido protagonista en este gobierno.
|
| 472 |
+
Desde el comienzo el presidente Petro no solamente habló de la transición energética,
|
| 473 |
+
sino que además puso el tema del cambio climático y del asunto ambiental en el centro de ese debate.
|
| 474 |
+
¿Cuál es su mirada frente a los retos que hoy hay un sindicato como la USO
|
| 475 |
+
diciendo que hay que seguir explotando y explorando?
|
| 476 |
+
Y bueno, ya hablaremos de política, ya que mencionó la USO, pero por ahora hablemos del tema...
|
| 477 |
+
El tiempo muerde.
|
| 478 |
+
Ya entramos ahí, pero rápidamente el tema energético,
|
| 479 |
+
que también es muy importante alrededor de los recursos naturales de Colombia
|
| 480 |
+
y su explotación y su política, digamos, de recursos que pueden venir de ahí.
|
| 481 |
+
La política de nuestro gobierno tendrá el énfasis de la protección de la riqueza natural,
|
| 482 |
+
de la biodiversidad, de la amazonía, de nuestro país.
|
| 483 |
+
Es un deber no solamente con nuestro país y nuestra población, sino con el mundo.
|
| 484 |
+
Nosotros somos guardianes de una riqueza que es planetaria.
|
| 485 |
+
Ahora bien, esa política debe ser compatible con el desarrollo,
|
| 486 |
+
no solamente de la transición energética, sino también de la explotación de ciertos recursos,
|
| 487 |
+
con unos ciertos parámetros, con unos ciertos controles,
|
| 488 |
+
con unas licencias ambientales que permitan realmente que no se le cause un daño irreparable al país.
|
| 489 |
+
Pero no se cierre usted a nuevos...
|
| 490 |
+
No habrá fracking, eso sí lo digo claramente.
|
| 491 |
+
Fracking no. Está demostrado el daño que le hace el fracking a la naturaleza,
|
| 492 |
+
a los territorios, al subsuelo, a la riqueza hídrica, así que no.
|
| 493 |
+
Pero yo tuve ya una conversación con el gremio de la explotación del petróleo y del gas
|
| 494 |
+
y ha abierto ese diálogo la posibilidad de un intercambio que nos permita examinar fórmulas.
|
| 495 |
+
Antes de entrar a política, es que tanto tema.
|
| 496 |
+
Usted habla de cambios profundos de lo que ha pasado en este gobierno y de su programa,
|
| 497 |
+
porque es lo importante.
|
| 498 |
+
El tema de la salud, que es el otro gran tema, el otro gran lunar,
|
| 499 |
+
como fue que dijo María Alejandra, la otra gran sombra.
|
| 500 |
+
Usted dirá, puede tener matices, pero lo que está pasando con el sistema de salud,
|
| 501 |
+
pues ya todos lo hemos visto.
|
| 502 |
+
Sí, una desgracia anunciada.
|
| 503 |
+
¿Qué va a ser? ¿Qué tiene planteado usted en su propuesta?
|
| 504 |
+
Nosotros hemos hecho un planteamiento de reforma a la salud.
|
| 505 |
+
Nosotros creemos que el sistema debe cambiar,
|
| 506 |
+
el sistema en cuanto a cómo se administran los recursos financieros de la salud.
|
| 507 |
+
Es necesario crear un sistema que hemos dicho es mixto,
|
| 508 |
+
en el cual las empresas prestadoras de salud que aún quedan tengan una participación,
|
| 509 |
+
pero el control está en cabeza efectivamente de un sistema que permita que no se repita la historia.
|
| 510 |
+
¿Cuál es la historia?
|
| 511 |
+
Con este desastre de intervención del Estado.
|
| 512 |
+
Sí, hay que hacer un tránsito evidentemente, hay que generar un plan de choques,
|
| 513 |
+
en eso estoy de acuerdo.
|
| 514 |
+
Pero hay que examinar lo que ha ocurrido.
|
| 515 |
+
Y lo que ha ocurrido, para no decirlo de manera eufemística,
|
| 516 |
+
es uno de los mayores robos que ha habido en Colombia.
|
| 517 |
+
El presidente Petro dijo que los que intervinieron vinieron a hacer business.
|
| 518 |
+
No, pero absolutamente.
|
| 519 |
+
Y desde el caso de corrupción, uno de los casos de corrupción mayor en Colombia.
|
| 520 |
+
El saqueo de billones de pesos.
|
| 521 |
+
Es más, yo diría que ese caso merecería una comisión de la verdad.
|
| 522 |
+
Es decir, si queremos examinar el asunto a fondo,
|
| 523 |
+
deberíamos crear una comisión que esclarezca cómo fueron esquilmados,
|
| 524 |
+
objeto de un saqueo absoluto, los dineros de la salud en Colombia.
|
| 525 |
+
Pero bueno, digamos que ese puede ser un camino que hay que examinar
|
| 526 |
+
para entender bien de qué estamos hablando.
|
| 527 |
+
Pero ahora, los millones de pacientes que esperan soluciones,
|
| 528 |
+
no pueden esperar a una comisión de la verdad, por supuesto.
|
| 529 |
+
O sea, otro diagnóstico, sí.
|
| 530 |
+
No, claro.
|
| 531 |
+
Esa es una situación que requiere un tratamiento urgente,
|
| 532 |
+
y evidentemente para eso es necesario un plan de choque.
|
| 533 |
+
Pero también es necesario la reforma, y la reforma requiere una concertación.
|
| 534 |
+
Por lo menos el intento de una concertación que yo espero se pueda dar.
|
| 535 |
+
¿El plan de choque arrancaría por los medicamentos?
|
| 536 |
+
¿Qué es lo que hoy es el dolor más grande?
|
| 537 |
+
Ese es uno de los temas, evidentemente.
|
| 538 |
+
La atención, los medicamentos.
|
| 539 |
+
Digamos, ¿qué hacemos en este momento con parte de la red,
|
| 540 |
+
de las instituciones que prestan la salud que está en una situación supremamente grave?
|
| 541 |
+
La situación de los trabajadores, lo que se llama el recurso humano en salud.
|
| 542 |
+
En fin, todos esos asuntos deben ser objeto de un tratamiento inmediato.
|
| 543 |
+
No puede ser una situación diferente.
|
| 544 |
+
Doctor Iván, ¿qué hace con la nueva EPS?
|
| 545 |
+
Esa es una situación que tenemos que examinar, evidentemente.
|
| 546 |
+
Ahí hay problemas.
|
| 547 |
+
A mí me gustaría, sobre la base de un examen muy claro y un diagnóstico preciso,
|
| 548 |
+
diagnosticar cuáles van a ser las medidas concretas a tomar ahí.
|
| 549 |
+
Bueno, hablemos de política,
|
| 550 |
+
de cómo está surgiendo todo este debate interno en el pacto histórico,
|
| 551 |
+
en sectores del progresismo,
|
| 552 |
+
que están viendo por un lado la campaña hacia el 8 de marzo
|
| 553 |
+
del Frente por la Vida, de esta consulta que se ha creado,
|
| 554 |
+
pero por el otro lado esa mirada de vámonos solos a la primera vuelta.
|
| 555 |
+
Voy a comenzar por el momento del Consejo Nacional Electoral.
|
| 556 |
+
Usted dijo, yo me voy a primera vuelta,
|
| 557 |
+
¿porque ya se veía que venía lo del Consejo Nacional Electoral?
|
| 558 |
+
¿O porque ya veía muy complicado un litigio que podría entrar ahí?
|
| 559 |
+
Porque hubo una decisión.
|
| 560 |
+
Esa decisión fue muy clara y categórica.
|
| 561 |
+
Y porque nosotros no nos hacemos ilusiones con el Consejo Nacional Electoral,
|
| 562 |
+
que es un organismo totalmente parcializado.
|
| 563 |
+
Bueno, parcializado en su composición mayoritaria.
|
| 564 |
+
Hemos sido víctimas de un tratamiento absolutamente arbitrario
|
| 565 |
+
de la violación de nuestros derechos políticos.
|
| 566 |
+
Lo que ocurrió en el Consejo Nacional Electoral
|
| 567 |
+
es la violación de los derechos políticos de la fuerza mayoritaria hoy en Colombia.
|
| 568 |
+
Nosotros somos el partido o el movimiento político
|
| 569 |
+
que tiene mayor influencia en el país.
|
| 570 |
+
Y se nos fue simplemente arrebatado el derecho
|
| 571 |
+
de participar en una consulta interpartidista.
|
| 572 |
+
¿Por quiénes?
|
| 573 |
+
Por personas que además estaban prevaricando.
|
| 574 |
+
No es cierto que nosotros no hayamos interpuesto recursos.
|
| 575 |
+
Yo he denunciado penalmente a dos de las personas que tomaron esa decisión
|
| 576 |
+
porque están abiertamente o estuvieron abiertamente prevaricando.
|
| 577 |
+
El señor Prada y el señor Holman Ibáñez.
|
| 578 |
+
Así que desde ese punto de vista las cosas están claras.
|
| 579 |
+
Se nos negó el derecho a la participación.
|
| 580 |
+
En esa circunstancia no tenemos otra salida que ir directamente a primera vuelta
|
| 581 |
+
y así lo hemos dicho.
|
| 582 |
+
Y nuestra consulta es la votación de nuestras listas al Senado y la Cámara
|
| 583 |
+
que es la única participación que tendremos el 8 de marzo.
|
| 584 |
+
¿Qué pasa el 8 de marzo a las 6 de la tarde o el 9?
|
| 585 |
+
Si quiere a las 7 de la mañana.
|
| 586 |
+
Si la consulta de Roy Barreras de este frente tiene una votación importante
|
| 587 |
+
¿En qué cambia para ustedes en la campaña y digamos en ese sector del país
|
| 588 |
+
de izquierda y centro izquierda?
|
| 589 |
+
Nuestro curso está definido.
|
| 590 |
+
Nosotros vamos a primera vuelta.
|
| 591 |
+
Somos una fuerza que tiene una presencia muy importante en el país.
|
| 592 |
+
Yo he sido hasta ahora el candidato que tiene los mejores registros en las encuestas.
|
| 593 |
+
Somos una fuerza indiscutible.
|
| 594 |
+
Ahora, eso no quiere decir que no hagamos un diálogo.
|
| 595 |
+
Lo venimos haciendo con muchos sectores.
|
| 596 |
+
Tenemos importantes discusiones y diálogos que van llegando a acuerdos
|
| 597 |
+
con fuerzas muy diversas.
|
| 598 |
+
Así que vamos a presentar una opción bastante amplia y diversa.
|
| 599 |
+
Es decir, ¿tendremos Roy Barreras para rato?
|
| 600 |
+
Ah, no.
|
| 601 |
+
Roy es un político que ha tenido...
|
| 602 |
+
He compartido con él mucho en política durante todo este tiempo.
|
| 603 |
+
Respeto mucho sus opciones.
|
| 604 |
+
Algunas no las comparto, evidentemente, pero como en todo, yo opto por los argumentos,
|
| 605 |
+
por la deliberación y no por los insultos ni por zancadillas en política.
|
| 606 |
+
Está ya barajando, por supuesto, como todos los candidatos,
|
| 607 |
+
por la cercanía de la fecha de la inscripción, que es hasta el 13 de marzo,
|
| 608 |
+
los nombres de vicepresidentes, vicepresidentas.
|
| 609 |
+
¿Cómo va eso?
|
| 610 |
+
Es uno de los secretos mejor guardados.
|
| 611 |
+
De todos los candidatos.
|
| 612 |
+
Pero me parece interesante, ¿qué consigue usted como esa figura?
|
| 613 |
+
¿Es una figura complementaria al candidato?
|
| 614 |
+
Si comienzo a dar datos, obviamente, ya estaría...
|
| 615 |
+
Vamos llegando a la pista.
|
| 616 |
+
Venga, doctor Iván, el tiempo nos vuelve.
|
| 617 |
+
Varias preguntas.
|
| 618 |
+
¿Va a ir a debates?
|
| 619 |
+
Sí, claro.
|
| 620 |
+
Yo debato profesionalmente.
|
| 621 |
+
Yo llevo 15 años en el Congreso.
|
| 622 |
+
He hecho debates, lo digo sin falsas modestias,
|
| 623 |
+
que han tenido un impacto en el país.
|
| 624 |
+
Menciono simplemente uno.
|
| 625 |
+
En septiembre de 2014 hice un debate al expresidente Álvaro Uribe,
|
| 626 |
+
senador en ese momento, que él rebulló, hay que decirlo.
|
| 627 |
+
Así que lo mío no es eludir debates.
|
| 628 |
+
Lo que sí pido es que haya unas reglas muy claras.
|
| 629 |
+
Yo no me voy a prestar a insultos.
|
| 630 |
+
Ese es lo dasal que se ha vuelto la política.
|
| 631 |
+
Lo he dicho claramente.
|
| 632 |
+
Debates con reglas claras.
|
| 633 |
+
Y vamos a debatir sobre argumentos, propuestas y programas.
|
| 634 |
+
No sobre calumnias, insultos, groserías.
|
| 635 |
+
Eso no me interesa.
|
| 636 |
+
Hay una perspectiva, digamos, de participación.
|
| 637 |
+
¿Usted cree que los colombianos hoy están motivados en este proceso electoral?
|
| 638 |
+
Usted está viendo que este...
|
| 639 |
+
Porque no quiero meter el concepto de transición,
|
| 640 |
+
pero sí pareciera que estamos en un momento después de este primer gobierno de izquierda
|
| 641 |
+
frente a unas primeras elecciones que han traído, por supuesto, este clima.
|
| 642 |
+
¿Usted cree que eso va a motivar a la gente a salir a votar
|
| 643 |
+
o que por el contrario de pronto la gente va a tomar distancia de este proceso electoral?
|
| 644 |
+
Lo que he visto en mis recorridos ya extensos por el país
|
| 645 |
+
es un clima muy favorable
|
| 646 |
+
y un entusiasmo de participación social, popular, ciudadana en la política.
|
| 647 |
+
Y eso me alegra constatarlo, por ejemplo, en la juventud,
|
| 648 |
+
que a pesar del escepticismo que le ha generado la corrupción,
|
| 649 |
+
tiene hoy una gran expectativa y esperanza.
|
| 650 |
+
Parte de lo que somos hoy como pacto histórico es que representamos precisamente eso,
|
| 651 |
+
una nueva conciencia sobre los derechos,
|
| 652 |
+
sobre reclamarlos y sobre exigirlos, si es necesario, con la movilización pacífica,
|
| 653 |
+
pero utilizando los medios para que los derechos de los ciudadanos se respeten.
|
| 654 |
+
Entonces, desde esa perspectiva sí, sí creo que va a haber una participación importante.
|
| 655 |
+
En un gobierno suyo, doctor Cepeda, eventualmente se divide el país, se fracciona,
|
| 656 |
+
quedamos en una profunda polarización.
|
| 657 |
+
¿O usted cree que sí habrá disposición para tener puentes
|
| 658 |
+
y que se tejan todos estos puentes para poder tener un escenario de mayor convivencia?
|
| 659 |
+
Contrario a la imagen que intentan proyectar,
|
| 660 |
+
y yo creo que obviamente con el temor que les genera la posibilidad de un triunfo
|
| 661 |
+
por la fuerza que tenemos,
|
| 662 |
+
contrario a la imagen de división y de polarización
|
| 663 |
+
yo soy una persona que ha buscado siempre la concertación política.
|
| 664 |
+
Y he tejido relaciones con personas y con sectores políticos que se ha vaticinado,
|
| 665 |
+
era impensable que yo me sentara a discutir y a concertar.
|
| 666 |
+
Así que no tengo ningún problema, yo estaré dispuesto, lo he dicho desde el primer día,
|
| 667 |
+
no de mi posesión, de mi elección, a tejer esos diálogos como lo he venido haciendo ya.
|
| 668 |
+
¿Ese diálogo incluiría al expresidente Alvaro Uribe?
|
| 669 |
+
Pues en determinadas circunstancias, yo lo he dicho siempre,
|
| 670 |
+
podemos dialogar con él y con el sector que representa.
|
| 671 |
+
¿Usted va a respetar?
|
| 672 |
+
Lo cual no riñe obviamente con nuestros litigios judiciales.
|
| 673 |
+
Sí, es que ese es el problema, es que aquí usted es contradictor político y contraparte judicial.
|
| 674 |
+
¿Confía en el sistema electoral?
|
| 675 |
+
No, yo más allá de decir y entregar cheques en blanco,
|
| 676 |
+
lo que digo es, obviamente nosotros acatamos las decisiones,
|
| 677 |
+
respetamos los procedimientos,
|
| 678 |
+
pero de ninguna manera compartimos que el sistema electoral no requiera un cambio profundo.
|
| 679 |
+
Nosotros creemos que el Consejo Nacional Electoral debe ser eliminado
|
| 680 |
+
y debe ser sustituido por una instancia imparcial
|
| 681 |
+
que permita realmente generar un juez neutral frente al proceso electoral.
|
| 682 |
+
Eso no lo es de ninguna manera hoy el Consejo Nacional.
|
| 683 |
+
Pero este aparato electoral es el que va a arbitrar y va a organizar estas elecciones.
|
| 684 |
+
Obviamente y para eso nosotros vamos a crear los controles necesarios.
|
| 685 |
+
Tenemos ya un dispositivo que nos va a permitir hacer una observación,
|
| 686 |
+
mesa por mesa, de nuestros resultados.
|
| 687 |
+
Testigos.
|
| 688 |
+
Testigos y tenemos también grupos de abogados que van a participar en el escrutinio.
|
| 689 |
+
Usted sabe que me deja preocupado, doctor Iván, porque dice que no entrega un cheque en blanco.
|
| 690 |
+
No, cheque en blanco en términos de decir que nosotros creemos ciegamente
|
| 691 |
+
y que elogiamos la manera en cómo actúa el sistema electoral hoy.
|
| 692 |
+
Pero usted está hablando del Consejo Nacional Electoral, pero de reglas estadounidenses.
|
| 693 |
+
Hemos sido víctimas de las arbitrariedades.
|
| 694 |
+
Nosotros obviamente respetamos al registrador, a sus decisiones,
|
| 695 |
+
pero sí le vamos a expresar como lo hemos venido haciendo cualquier clase de reparos
|
| 696 |
+
que tengamos frente a la manera en cómo se realiza el proceso.
|
| 697 |
+
Es nuestro legítimo derecho y lo vamos a ejercer.
|
| 698 |
+
Me deja una pregunta de sus detractores que dicen
|
| 699 |
+
el sistema electoral sirve si ganamos y si no, no sirve.
|
| 700 |
+
No, nosotros hemos reconocido las victorias y las derrotas.
|
| 701 |
+
El presidente Petro ha sido una persona profundamente respetuosa de la institucionalidad.
|
| 702 |
+
No, no creo.
|
| 703 |
+
Bueno, esa es una discusión, por supuesto.
|
| 704 |
+
Interesante, pero seguramente, y tiene razón María Alejandra,
|
| 705 |
+
hablamos de campaña, no del gobierno,
|
| 706 |
+
pero sí usted plantea ser el que continúa este proceso y este modelo de gobierno.
|
| 707 |
+
Pero, doctor Iván, el tiempo, mire, ya se nos fue.
|
| 708 |
+
Sí, yo quiero decir algo sobre ese particular.
|
| 709 |
+
Nosotros no somos simplemente convidados a la democracia.
|
| 710 |
+
Nosotros como fuerza política hemos construido también esta democracia.
|
| 711 |
+
Hemos participado en la Constitución del 91, en su elaboración.
|
| 712 |
+
Hemos participado en todos los procesos e instituciones democráticas.
|
| 713 |
+
Somos demócratas y como tal defendemos la democracia.
|
| 714 |
+
Ahora, eso no quiere decir de ninguna manera que cerremos los ojos
|
| 715 |
+
y que no podamos emitir opiniones críticas frente al sistema
|
| 716 |
+
y modificar utilizando los procedimientos que da el propio sistema para ello.
|
| 717 |
+
Muy bien.
|
| 718 |
+
Colombia está en un proceso electoral muy interesante, muy retador.
|
| 719 |
+
Son muchos desafíos.
|
| 720 |
+
Estamos, además, en un momento en el que las redes sociales,
|
| 721 |
+
en el que la información vertiginosa que le llega a los ciudadanos,
|
| 722 |
+
nos hace justamente ese trabajo periodístico mucho más riguroso,
|
| 723 |
+
mucho más exigente y aquí estamos, Juan Roberto,
|
| 724 |
+
en un camino de conocer y de escuchar a los candidatos
|
| 725 |
+
hacia la presidencia en este proceso del 2026.
|
| 726 |
+
Esa frase final suya es clave, María Alejandra.
|
| 727 |
+
Escucharlos y que la gente escuche sus propuestas
|
| 728 |
+
y pues ese es el espíritu de este espacio.
|
| 729 |
+
Cuando los diálogos son respetuosos y productivos como este son satisfactorios
|
| 730 |
+
y le agradezco este espacio.
|
| 731 |
+
Doctor Iván Cepeda, gracias por haber venido a Noticias Caracol
|
| 732 |
+
y lo esperamos en los debates, ¿no?
|
| 733 |
+
Dijo que venía en los debates.
|
| 734 |
+
Con reglas.
|
| 735 |
+
Ya vendrán.
|
| 736 |
+
Esa recta después de...
|
| 737 |
+
Que se preparen.
|
| 738 |
+
Esa recta larga, que será la recta final,
|
| 739 |
+
pero que todavía falta para el 31 de mayo,
|
| 740 |
+
la primera vuelta electoral.
|
| 741 |
+
Y por ahora, preparémonos para lo que viene,
|
| 742 |
+
que es el 8 de marzo,
|
| 743 |
+
esas elecciones legislativas en las que estamos haciendo mucho énfasis,
|
| 744 |
+
que es muy importante que los ciudadanos entiendan
|
| 745 |
+
la importancia de elegir el Poder Legislativo, Congreso y Senado,
|
| 746 |
+
Senado y Cámara, perdón, para el próximo 8 de marzo.
|
| 747 |
+
Es difícil votar, pero cada vez hay más pedagogía para eso.
|
| 748 |
+
Eso es importante, la pedagogía para que la gente entienda
|
| 749 |
+
de lo que se está jugando la democracia colombiana.
|
| 750 |
+
7.52 minutos.
|
| 751 |
+
Nos vemos el lunes, ¿no?
|
| 752 |
+
Tenemos más entrevistas.
|
| 753 |
+
Tenemos más entrevistas, sí, señor.
|
| 754 |
+
7.52 minutos.
|
| 755 |
+
Sigue la primera emisión de Noticias Caracol.
|
| 756 |
+
Aquí en el Congreso de la República
|
| 757 |
+
se debaten las leyes que rigen nuestra vida diaria.
|
| 758 |
+
Y justo al frente, en la Casa de Nariño,
|
| 759 |
+
el presidente de la República toma las decisiones
|
| 760 |
+
que marcan el rumbo del país.
|
| 761 |
+
Dos escenarios, un mismo propósito.
|
| 762 |
+
Construir el futuro de nuestra nación.
|
| 763 |
+
No se trata solo de elegir un nombre,
|
| 764 |
+
sino de reafirmar un compromiso con Colombia.
|
| 765 |
+
Es aquí donde la vida real transita.
|
| 766 |
+
Miles de historias, necesidades y falta de oportunidades
|
| 767 |
+
esperando respuestas.
|
| 768 |
+
Cada voto representa una historia,
|
| 769 |
+
cada decisión una expectativa de futuro.
|
| 770 |
+
Tan cerca de las elecciones,
|
| 771 |
+
los candidatos podrán ofrecer soluciones y no solo promesas,
|
| 772 |
+
especialmente cuando se presentan emergencias tan graves como esta.
|
| 773 |
+
Y en esta carrera electoral nosotros estaremos allí
|
| 774 |
+
contando la historia de una Colombia que decide,
|
| 775 |
+
que participa y que mira hacia adelante.
|
| 776 |
+
Se acerca el día en que el país hablará en las urnas.
|
| 777 |
+
El país que soñamos lo elegimos juntos.
|
| 778 |
+
Colombia decide 2026.
|
| 779 |
+
Noticias Caracol.
|
| 780 |
+
Primero la gente.
|
| 781 |
+
A esta hora en Noticias los problemas de movilidad
|
| 782 |
+
que se originan en la avenida calle 100
|
| 783 |
+
con avenida Suba sentido occidente oriente
|
| 784 |
+
por cuenta del volcamiento de un vehículo particular.
|
| 785 |
+
El accidente se presentó sobre las 5.30 de la mañana.
|
| 786 |
+
A esta hora es complicada la situación.
|
data/processed/ivan_cepeda/caracol/entrevista_metadata.json
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"candidate": "Ivan Cepeda",
|
| 3 |
+
"proposal_title": "Caracol",
|
| 4 |
+
"topic": "Entrevista",
|
| 5 |
+
"source_url": "https://www.youtube.com/live/keUBZq7rc2Y?si=VrV_IExxlbyFmOdE",
|
| 6 |
+
"source_file": "entrevista.txt",
|
| 7 |
+
"word_count": 7284,
|
| 8 |
+
"char_count": 42694,
|
| 9 |
+
"extraction_date": "2026-02-23T09:21:14.400316"
|
| 10 |
+
}
|
data/processed/ivan_cepeda/caracol/entrevista_timestamps.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
[{"offset": 0, "seconds": 0}, {"offset": 115, "seconds": 7}, {"offset": 240, "seconds": 16}, {"offset": 320, "seconds": 23}, {"offset": 417, "seconds": 29}, {"offset": 525, "seconds": 36}, {"offset": 568, "seconds": 39}, {"offset": 601, "seconds": 41}, {"offset": 630, "seconds": 44}, {"offset": 690, "seconds": 50}, {"offset": 796, "seconds": 57}, {"offset": 934, "seconds": 67}, {"offset": 981, "seconds": 70}, {"offset": 1064, "seconds": 74}, {"offset": 1133, "seconds": 78}, {"offset": 1207, "seconds": 82}, {"offset": 1232, "seconds": 84}, {"offset": 1259, "seconds": 85}, {"offset": 1279, "seconds": 87}, {"offset": 1363, "seconds": 91}, {"offset": 1460, "seconds": 100}, {"offset": 1522, "seconds": 105}, {"offset": 1609, "seconds": 112}, {"offset": 1697, "seconds": 118}, {"offset": 1773, "seconds": 123}, {"offset": 1852, "seconds": 128}, {"offset": 1891, "seconds": 131}, {"offset": 1921, "seconds": 133}, {"offset": 2002, "seconds": 139}, {"offset": 2025, "seconds": 141}, {"offset": 2081, "seconds": 144}, {"offset": 2139, "seconds": 148}, {"offset": 2215, "seconds": 154}, {"offset": 2287, "seconds": 160}, {"offset": 2369, "seconds": 164}, {"offset": 2416, "seconds": 167}, {"offset": 2493, "seconds": 174}, {"offset": 2520, "seconds": 176}, {"offset": 2593, "seconds": 182}, {"offset": 2632, "seconds": 185}, {"offset": 2691, "seconds": 190}, {"offset": 2727, "seconds": 192}, {"offset": 2794, "seconds": 198}, {"offset": 2814, "seconds": 200}, {"offset": 2860, "seconds": 204}, {"offset": 2924, "seconds": 209}, {"offset": 2963, "seconds": 212}, {"offset": 3021, "seconds": 215}, {"offset": 3031, "seconds": 216}, {"offset": 3100, "seconds": 220}, {"offset": 3182, "seconds": 224}, {"offset": 3267, "seconds": 232}, {"offset": 3308, "seconds": 235}, {"offset": 3381, "seconds": 240}, {"offset": 3450, "seconds": 245}, {"offset": 3479, "seconds": 247}, {"offset": 3558, "seconds": 252}, {"offset": 3578, "seconds": 254}, {"offset": 3621, "seconds": 258}, {"offset": 3686, "seconds": 263}, {"offset": 3756, "seconds": 268}, {"offset": 3788, "seconds": 270}, {"offset": 3801, "seconds": 271}, {"offset": 3873, "seconds": 274}, {"offset": 3956, "seconds": 279}, {"offset": 3977, "seconds": 280}, {"offset": 4030, "seconds": 283}, {"offset": 4104, "seconds": 287}, {"offset": 4182, "seconds": 292}, {"offset": 4226, "seconds": 295}, {"offset": 4288, "seconds": 301}, {"offset": 4340, "seconds": 304}, {"offset": 4437, "seconds": 311}, {"offset": 4517, "seconds": 317}, {"offset": 4565, "seconds": 320}, {"offset": 4657, "seconds": 326}, {"offset": 4723, "seconds": 330}, {"offset": 4810, "seconds": 335}, {"offset": 4852, "seconds": 338}, {"offset": 4914, "seconds": 342}, {"offset": 4995, "seconds": 350}, {"offset": 5044, "seconds": 355}, {"offset": 5094, "seconds": 358}, {"offset": 5170, "seconds": 364}, {"offset": 5212, "seconds": 368}, {"offset": 5234, "seconds": 370}, {"offset": 5305, "seconds": 375}, {"offset": 5334, "seconds": 377}, {"offset": 5406, "seconds": 381}, {"offset": 5489, "seconds": 386}, {"offset": 5532, "seconds": 389}, {"offset": 5611, "seconds": 394}, {"offset": 5674, "seconds": 399}, {"offset": 5750, "seconds": 402}, {"offset": 5825, "seconds": 406}, {"offset": 5869, "seconds": 408}, {"offset": 5926, "seconds": 411}, {"offset": 5978, "seconds": 414}, {"offset": 6031, "seconds": 416}, {"offset": 6092, "seconds": 420}, {"offset": 6173, "seconds": 428}, {"offset": 6224, "seconds": 431}, {"offset": 6315, "seconds": 438}, {"offset": 6367, "seconds": 441}, {"offset": 6440, "seconds": 447}, {"offset": 6507, "seconds": 452}, {"offset": 6567, "seconds": 456}, {"offset": 6647, "seconds": 463}, {"offset": 6691, "seconds": 465}, {"offset": 6763, "seconds": 471}, {"offset": 6846, "seconds": 478}, {"offset": 6935, "seconds": 483}, {"offset": 7011, "seconds": 489}, {"offset": 7073, "seconds": 493}, {"offset": 7111, "seconds": 495}, {"offset": 7136, "seconds": 497}, {"offset": 7213, "seconds": 502}, {"offset": 7253, "seconds": 504}, {"offset": 7328, "seconds": 509}, {"offset": 7424, "seconds": 514}, {"offset": 7483, "seconds": 518}, {"offset": 7537, "seconds": 522}, {"offset": 7602, "seconds": 525}, {"offset": 7647, "seconds": 527}, {"offset": 7718, "seconds": 531}, {"offset": 7788, "seconds": 536}, {"offset": 7856, "seconds": 541}, {"offset": 7909, "seconds": 543}, {"offset": 7973, "seconds": 548}, {"offset": 8053, "seconds": 554}, {"offset": 8100, "seconds": 557}, {"offset": 8156, "seconds": 561}, {"offset": 8218, "seconds": 566}, {"offset": 8254, "seconds": 568}, {"offset": 8306, "seconds": 572}, {"offset": 8326, "seconds": 574}, {"offset": 8352, "seconds": 576}, {"offset": 8421, "seconds": 581}, {"offset": 8482, "seconds": 587}, {"offset": 8546, "seconds": 591}, {"offset": 8621, "seconds": 596}, {"offset": 8665, "seconds": 599}, {"offset": 8740, "seconds": 606}, {"offset": 8796, "seconds": 611}, {"offset": 8836, "seconds": 613}, {"offset": 8896, "seconds": 616}, {"offset": 8941, "seconds": 619}, {"offset": 9002, "seconds": 623}, {"offset": 9029, "seconds": 625}, {"offset": 9069, "seconds": 627}, {"offset": 9120, "seconds": 630}, {"offset": 9161, "seconds": 633}, {"offset": 9218, "seconds": 636}, {"offset": 9258, "seconds": 639}, {"offset": 9294, "seconds": 641}, {"offset": 9351, "seconds": 644}, {"offset": 9395, "seconds": 647}, {"offset": 9413, "seconds": 649}, {"offset": 9475, "seconds": 655}, {"offset": 9503, "seconds": 658}, {"offset": 9569, "seconds": 663}, {"offset": 9606, "seconds": 665}, {"offset": 9623, "seconds": 666}, {"offset": 9684, "seconds": 670}, {"offset": 9742, "seconds": 675}, {"offset": 9809, "seconds": 680}, {"offset": 9871, "seconds": 684}, {"offset": 9926, "seconds": 687}, {"offset": 9999, "seconds": 692}, {"offset": 10056, "seconds": 696}, {"offset": 10096, "seconds": 700}, {"offset": 10158, "seconds": 705}, {"offset": 10215, "seconds": 709}, {"offset": 10237, "seconds": 710}, {"offset": 10293, "seconds": 716}, {"offset": 10345, "seconds": 721}, {"offset": 10393, "seconds": 725}, {"offset": 10457, "seconds": 729}, {"offset": 10526, "seconds": 734}, {"offset": 10582, "seconds": 738}, {"offset": 10618, "seconds": 740}, {"offset": 10667, "seconds": 743}, {"offset": 10716, "seconds": 747}, {"offset": 10773, "seconds": 751}, {"offset": 10821, "seconds": 754}, {"offset": 10863, "seconds": 756}, {"offset": 10902, "seconds": 759}, {"offset": 10946, "seconds": 761}, {"offset": 10992, "seconds": 764}, {"offset": 11064, "seconds": 770}, {"offset": 11084, "seconds": 772}, {"offset": 11140, "seconds": 774}, {"offset": 11200, "seconds": 778}, {"offset": 11269, "seconds": 784}, {"offset": 11311, "seconds": 787}, {"offset": 11354, "seconds": 789}, {"offset": 11388, "seconds": 792}, {"offset": 11412, "seconds": 795}, {"offset": 11473, "seconds": 799}, {"offset": 11550, "seconds": 807}, {"offset": 11589, "seconds": 810}, {"offset": 11625, "seconds": 812}, {"offset": 11639, "seconds": 813}, {"offset": 11697, "seconds": 815}, {"offset": 11727, "seconds": 817}, {"offset": 11793, "seconds": 820}, {"offset": 11841, "seconds": 823}, {"offset": 11888, "seconds": 826}, {"offset": 11933, "seconds": 829}, {"offset": 11974, "seconds": 831}, {"offset": 12041, "seconds": 835}, {"offset": 12071, "seconds": 836}, {"offset": 12139, "seconds": 839}, {"offset": 12197, "seconds": 842}, {"offset": 12260, "seconds": 846}, {"offset": 12315, "seconds": 848}, {"offset": 12382, "seconds": 852}, {"offset": 12439, "seconds": 855}, {"offset": 12516, "seconds": 860}, {"offset": 12584, "seconds": 864}, {"offset": 12614, "seconds": 866}, {"offset": 12674, "seconds": 870}, {"offset": 12731, "seconds": 873}, {"offset": 12772, "seconds": 876}, {"offset": 12852, "seconds": 881}, {"offset": 12880, "seconds": 885}, {"offset": 12940, "seconds": 889}, {"offset": 12999, "seconds": 892}, {"offset": 13039, "seconds": 895}, {"offset": 13092, "seconds": 898}, {"offset": 13137, "seconds": 900}, {"offset": 13203, "seconds": 905}, {"offset": 13263, "seconds": 908}, {"offset": 13291, "seconds": 911}, {"offset": 13329, "seconds": 913}, {"offset": 13389, "seconds": 915}, {"offset": 13427, "seconds": 918}, {"offset": 13486, "seconds": 921}, {"offset": 13535, "seconds": 924}, {"offset": 13617, "seconds": 930}, {"offset": 13684, "seconds": 934}, {"offset": 13766, "seconds": 939}, {"offset": 13811, "seconds": 942}, {"offset": 13827, "seconds": 943}, {"offset": 13913, "seconds": 947}, {"offset": 13971, "seconds": 952}, {"offset": 14026, "seconds": 956}, {"offset": 14099, "seconds": 961}, {"offset": 14130, "seconds": 963}, {"offset": 14204, "seconds": 968}, {"offset": 14281, "seconds": 976}, {"offset": 14351, "seconds": 982}, {"offset": 14421, "seconds": 987}, {"offset": 14481, "seconds": 991}, {"offset": 14519, "seconds": 994}, {"offset": 14569, "seconds": 996}, {"offset": 14638, "seconds": 1003}, {"offset": 14674, "seconds": 1005}, {"offset": 14745, "seconds": 1009}, {"offset": 14818, "seconds": 1012}, {"offset": 14853, "seconds": 1014}, {"offset": 14918, "seconds": 1017}, {"offset": 14973, "seconds": 1020}, {"offset": 15014, "seconds": 1022}, {"offset": 15044, "seconds": 1024}, {"offset": 15095, "seconds": 1027}, {"offset": 15152, "seconds": 1031}, {"offset": 15202, "seconds": 1035}, {"offset": 15272, "seconds": 1039}, {"offset": 15311, "seconds": 1043}, {"offset": 15360, "seconds": 1046}, {"offset": 15441, "seconds": 1052}, {"offset": 15483, "seconds": 1055}, {"offset": 15528, "seconds": 1057}, {"offset": 15599, "seconds": 1060}, {"offset": 15638, "seconds": 1063}, {"offset": 15692, "seconds": 1066}, {"offset": 15750, "seconds": 1070}, {"offset": 15806, "seconds": 1073}, {"offset": 15881, "seconds": 1077}, {"offset": 15932, "seconds": 1081}, {"offset": 15991, "seconds": 1084}, {"offset": 16047, "seconds": 1087}, {"offset": 16092, "seconds": 1090}, {"offset": 16167, "seconds": 1095}, {"offset": 16201, "seconds": 1098}, {"offset": 16246, "seconds": 1102}, {"offset": 16334, "seconds": 1108}, {"offset": 16412, "seconds": 1113}, {"offset": 16462, "seconds": 1117}, {"offset": 16539, "seconds": 1123}, {"offset": 16573, "seconds": 1125}, {"offset": 16642, "seconds": 1129}, {"offset": 16670, "seconds": 1131}, {"offset": 16700, "seconds": 1133}, {"offset": 16759, "seconds": 1137}, {"offset": 16801, "seconds": 1140}, {"offset": 16863, "seconds": 1144}, {"offset": 16915, "seconds": 1147}, {"offset": 16977, "seconds": 1150}, {"offset": 17020, "seconds": 1153}, {"offset": 17040, "seconds": 1155}, {"offset": 17101, "seconds": 1158}, {"offset": 17128, "seconds": 1160}, {"offset": 17177, "seconds": 1164}, {"offset": 17226, "seconds": 1167}, {"offset": 17273, "seconds": 1170}, {"offset": 17311, "seconds": 1172}, {"offset": 17352, "seconds": 1176}, {"offset": 17405, "seconds": 1180}, {"offset": 17421, "seconds": 1181}, {"offset": 17485, "seconds": 1184}, {"offset": 17525, "seconds": 1186}, {"offset": 17595, "seconds": 1190}, {"offset": 17659, "seconds": 1196}, {"offset": 17676, "seconds": 1197}, {"offset": 17699, "seconds": 1199}, {"offset": 17747, "seconds": 1203}, {"offset": 17801, "seconds": 1209}, {"offset": 17832, "seconds": 1211}, {"offset": 17869, "seconds": 1213}, {"offset": 17919, "seconds": 1217}, {"offset": 17957, "seconds": 1219}, {"offset": 17982, "seconds": 1221}, {"offset": 18029, "seconds": 1223}, {"offset": 18042, "seconds": 1224}, {"offset": 18081, "seconds": 1227}, {"offset": 18141, "seconds": 1231}, {"offset": 18210, "seconds": 1236}, {"offset": 18250, "seconds": 1239}, {"offset": 18267, "seconds": 1240}, {"offset": 18314, "seconds": 1243}, {"offset": 18375, "seconds": 1247}, {"offset": 18429, "seconds": 1250}, {"offset": 18480, "seconds": 1253}, {"offset": 18515, "seconds": 1255}, {"offset": 18546, "seconds": 1257}, {"offset": 18615, "seconds": 1262}, {"offset": 18674, "seconds": 1266}, {"offset": 18746, "seconds": 1270}, {"offset": 18801, "seconds": 1274}, {"offset": 18870, "seconds": 1278}, {"offset": 18924, "seconds": 1281}, {"offset": 18986, "seconds": 1285}, {"offset": 19015, "seconds": 1287}, {"offset": 19074, "seconds": 1290}, {"offset": 19112, "seconds": 1292}, {"offset": 19156, "seconds": 1295}, {"offset": 19216, "seconds": 1299}, {"offset": 19279, "seconds": 1302}, {"offset": 19346, "seconds": 1306}, {"offset": 19416, "seconds": 1310}, {"offset": 19430, "seconds": 1311}, {"offset": 19503, "seconds": 1315}, {"offset": 19534, "seconds": 1318}, {"offset": 19602, "seconds": 1322}, {"offset": 19646, "seconds": 1324}, {"offset": 19693, "seconds": 1327}, {"offset": 19737, "seconds": 1329}, {"offset": 19802, "seconds": 1332}, {"offset": 19876, "seconds": 1338}, {"offset": 19919, "seconds": 1341}, {"offset": 19960, "seconds": 1343}, {"offset": 19991, "seconds": 1346}, {"offset": 20045, "seconds": 1349}, {"offset": 20081, "seconds": 1350}, {"offset": 20126, "seconds": 1353}, {"offset": 20146, "seconds": 1355}, {"offset": 20189, "seconds": 1358}, {"offset": 20244, "seconds": 1364}, {"offset": 20314, "seconds": 1369}, {"offset": 20383, "seconds": 1374}, {"offset": 20413, "seconds": 1377}, {"offset": 20450, "seconds": 1380}, {"offset": 20486, "seconds": 1383}, {"offset": 20548, "seconds": 1387}, {"offset": 20619, "seconds": 1391}, {"offset": 20670, "seconds": 1394}, {"offset": 20713, "seconds": 1398}, {"offset": 20747, "seconds": 1402}, {"offset": 20789, "seconds": 1405}, {"offset": 20821, "seconds": 1408}, {"offset": 20893, "seconds": 1412}, {"offset": 20954, "seconds": 1415}, {"offset": 21018, "seconds": 1420}, {"offset": 21065, "seconds": 1425}, {"offset": 21117, "seconds": 1428}, {"offset": 21167, "seconds": 1432}, {"offset": 21212, "seconds": 1435}, {"offset": 21286, "seconds": 1440}, {"offset": 21362, "seconds": 1444}, {"offset": 21436, "seconds": 1449}, {"offset": 21489, "seconds": 1453}, {"offset": 21556, "seconds": 1457}, {"offset": 21610, "seconds": 1461}, {"offset": 21649, "seconds": 1464}, {"offset": 21679, "seconds": 1465}, {"offset": 21715, "seconds": 1467}, {"offset": 21774, "seconds": 1471}, {"offset": 21819, "seconds": 1475}, {"offset": 21878, "seconds": 1479}, {"offset": 21956, "seconds": 1485}, {"offset": 22013, "seconds": 1488}, {"offset": 22051, "seconds": 1490}, {"offset": 22078, "seconds": 1491}, {"offset": 22132, "seconds": 1495}, {"offset": 22190, "seconds": 1500}, {"offset": 22259, "seconds": 1505}, {"offset": 22321, "seconds": 1508}, {"offset": 22378, "seconds": 1513}, {"offset": 22427, "seconds": 1517}, {"offset": 22466, "seconds": 1519}, {"offset": 22511, "seconds": 1522}, {"offset": 22562, "seconds": 1525}, {"offset": 22594, "seconds": 1528}, {"offset": 22635, "seconds": 1531}, {"offset": 22689, "seconds": 1534}, {"offset": 22708, "seconds": 1536}, {"offset": 22782, "seconds": 1542}, {"offset": 22820, "seconds": 1545}, {"offset": 22901, "seconds": 1551}, {"offset": 22948, "seconds": 1553}, {"offset": 22982, "seconds": 1555}, {"offset": 23032, "seconds": 1559}, {"offset": 23107, "seconds": 1565}, {"offset": 23157, "seconds": 1568}, {"offset": 23218, "seconds": 1571}, {"offset": 23242, "seconds": 1573}, {"offset": 23299, "seconds": 1577}, {"offset": 23359, "seconds": 1582}, {"offset": 23415, "seconds": 1585}, {"offset": 23453, "seconds": 1587}, {"offset": 23515, "seconds": 1591}, {"offset": 23558, "seconds": 1594}, {"offset": 23610, "seconds": 1598}, {"offset": 23681, "seconds": 1603}, {"offset": 23694, "seconds": 1604}, {"offset": 23780, "seconds": 1610}, {"offset": 23802, "seconds": 1612}, {"offset": 23872, "seconds": 1620}, {"offset": 23958, "seconds": 1626}, {"offset": 23998, "seconds": 1629}, {"offset": 24050, "seconds": 1635}, {"offset": 24089, "seconds": 1637}, {"offset": 24144, "seconds": 1640}, {"offset": 24199, "seconds": 1643}, {"offset": 24291, "seconds": 1649}, {"offset": 24370, "seconds": 1653}, {"offset": 24406, "seconds": 1655}, {"offset": 24473, "seconds": 1660}, {"offset": 24567, "seconds": 1666}, {"offset": 24594, "seconds": 1668}, {"offset": 24636, "seconds": 1671}, {"offset": 24695, "seconds": 1675}, {"offset": 24759, "seconds": 1679}, {"offset": 24815, "seconds": 1683}, {"offset": 24861, "seconds": 1685}, {"offset": 24930, "seconds": 1690}, {"offset": 25006, "seconds": 1695}, {"offset": 25041, "seconds": 1698}, {"offset": 25109, "seconds": 1703}, {"offset": 25146, "seconds": 1705}, {"offset": 25213, "seconds": 1709}, {"offset": 25269, "seconds": 1714}, {"offset": 25363, "seconds": 1722}, {"offset": 25445, "seconds": 1727}, {"offset": 25508, "seconds": 1732}, {"offset": 25567, "seconds": 1737}, {"offset": 25648, "seconds": 1744}, {"offset": 25703, "seconds": 1747}, {"offset": 25797, "seconds": 1752}, {"offset": 25857, "seconds": 1756}, {"offset": 25943, "seconds": 1761}, {"offset": 26044, "seconds": 1767}, {"offset": 26119, "seconds": 1773}, {"offset": 26172, "seconds": 1777}, {"offset": 26268, "seconds": 1782}, {"offset": 26286, "seconds": 1784}, {"offset": 26340, "seconds": 1789}, {"offset": 26418, "seconds": 1793}, {"offset": 26496, "seconds": 1797}, {"offset": 26586, "seconds": 1806}, {"offset": 26640, "seconds": 1811}, {"offset": 26722, "seconds": 1818}, {"offset": 26782, "seconds": 1822}, {"offset": 26846, "seconds": 1827}, {"offset": 26940, "seconds": 1834}, {"offset": 26997, "seconds": 1838}, {"offset": 27099, "seconds": 1846}, {"offset": 27135, "seconds": 1848}, {"offset": 27181, "seconds": 1850}, {"offset": 27259, "seconds": 1856}, {"offset": 27325, "seconds": 1862}, {"offset": 27413, "seconds": 1870}, {"offset": 27506, "seconds": 1878}, {"offset": 27553, "seconds": 1880}, {"offset": 27641, "seconds": 1884}, {"offset": 27666, "seconds": 1886}, {"offset": 27733, "seconds": 1890}, {"offset": 27789, "seconds": 1892}, {"offset": 27872, "seconds": 1897}, {"offset": 27902, "seconds": 1899}, {"offset": 27931, "seconds": 1901}, {"offset": 27990, "seconds": 1905}, {"offset": 28051, "seconds": 1908}, {"offset": 28097, "seconds": 1911}, {"offset": 28178, "seconds": 1916}, {"offset": 28234, "seconds": 1919}, {"offset": 28320, "seconds": 1925}, {"offset": 28421, "seconds": 1932}, {"offset": 28443, "seconds": 1933}, {"offset": 28489, "seconds": 1936}, {"offset": 28570, "seconds": 1940}, {"offset": 28595, "seconds": 1942}, {"offset": 28637, "seconds": 1945}, {"offset": 28698, "seconds": 1949}, {"offset": 28753, "seconds": 1952}, {"offset": 28831, "seconds": 1957}, {"offset": 28855, "seconds": 1958}, {"offset": 28936, "seconds": 1962}, {"offset": 28968, "seconds": 1965}, {"offset": 29035, "seconds": 1970}, {"offset": 29085, "seconds": 1974}, {"offset": 29155, "seconds": 1981}, {"offset": 29222, "seconds": 1987}, {"offset": 29291, "seconds": 1992}, {"offset": 29335, "seconds": 1994}, {"offset": 29397, "seconds": 1999}, {"offset": 29458, "seconds": 2002}, {"offset": 29487, "seconds": 2003}, {"offset": 29498, "seconds": 2004}, {"offset": 29556, "seconds": 2009}, {"offset": 29613, "seconds": 2012}, {"offset": 29691, "seconds": 2018}, {"offset": 29763, "seconds": 2023}, {"offset": 29815, "seconds": 2025}, {"offset": 29858, "seconds": 2027}, {"offset": 29898, "seconds": 2028}, {"offset": 29929, "seconds": 2030}, {"offset": 29988, "seconds": 2035}, {"offset": 30076, "seconds": 2040}, {"offset": 30154, "seconds": 2047}, {"offset": 30227, "seconds": 2051}, {"offset": 30265, "seconds": 2053}, {"offset": 30306, "seconds": 2055}, {"offset": 30368, "seconds": 2058}, {"offset": 30387, "seconds": 2060}, {"offset": 30468, "seconds": 2066}, {"offset": 30533, "seconds": 2070}, {"offset": 30562, "seconds": 2072}, {"offset": 30633, "seconds": 2078}, {"offset": 30662, "seconds": 2080}, {"offset": 30722, "seconds": 2084}, {"offset": 30781, "seconds": 2088}, {"offset": 30852, "seconds": 2094}, {"offset": 30914, "seconds": 2097}, {"offset": 30954, "seconds": 2100}, {"offset": 31018, "seconds": 2104}, {"offset": 31085, "seconds": 2107}, {"offset": 31111, "seconds": 2109}, {"offset": 31152, "seconds": 2112}, {"offset": 31230, "seconds": 2116}, {"offset": 31275, "seconds": 2119}, {"offset": 31326, "seconds": 2124}, {"offset": 31389, "seconds": 2130}, {"offset": 31437, "seconds": 2133}, {"offset": 31485, "seconds": 2135}, {"offset": 31569, "seconds": 2141}, {"offset": 31620, "seconds": 2144}, {"offset": 31659, "seconds": 2147}, {"offset": 31706, "seconds": 2150}, {"offset": 31753, "seconds": 2153}, {"offset": 31767, "seconds": 2155}, {"offset": 31813, "seconds": 2158}, {"offset": 31872, "seconds": 2162}, {"offset": 31947, "seconds": 2167}, {"offset": 32013, "seconds": 2171}, {"offset": 32054, "seconds": 2174}, {"offset": 32111, "seconds": 2177}, {"offset": 32154, "seconds": 2179}, {"offset": 32235, "seconds": 2184}, {"offset": 32257, "seconds": 2185}, {"offset": 32332, "seconds": 2190}, {"offset": 32391, "seconds": 2193}, {"offset": 32443, "seconds": 2196}, {"offset": 32475, "seconds": 2198}, {"offset": 32551, "seconds": 2205}, {"offset": 32626, "seconds": 2210}, {"offset": 32659, "seconds": 2212}, {"offset": 32688, "seconds": 2214}, {"offset": 32721, "seconds": 2216}, {"offset": 32789, "seconds": 2221}, {"offset": 32875, "seconds": 2229}, {"offset": 32906, "seconds": 2231}, {"offset": 32960, "seconds": 2234}, {"offset": 33001, "seconds": 2237}, {"offset": 33072, "seconds": 2243}, {"offset": 33098, "seconds": 2245}, {"offset": 33162, "seconds": 2248}, {"offset": 33207, "seconds": 2251}, {"offset": 33215, "seconds": 2252}, {"offset": 33251, "seconds": 2257}, {"offset": 33316, "seconds": 2262}, {"offset": 33344, "seconds": 2264}, {"offset": 33431, "seconds": 2270}, {"offset": 33505, "seconds": 2276}, {"offset": 33565, "seconds": 2280}, {"offset": 33641, "seconds": 2284}, {"offset": 33690, "seconds": 2287}, {"offset": 33704, "seconds": 2289}, {"offset": 33744, "seconds": 2291}, {"offset": 33769, "seconds": 2293}, {"offset": 33834, "seconds": 2297}, {"offset": 33878, "seconds": 2299}, {"offset": 33929, "seconds": 2302}, {"offset": 33956, "seconds": 2304}, {"offset": 33998, "seconds": 2306}, {"offset": 34016, "seconds": 2307}, {"offset": 34036, "seconds": 2308}, {"offset": 34047, "seconds": 2309}, {"offset": 34075, "seconds": 2312}, {"offset": 34108, "seconds": 2315}, {"offset": 34156, "seconds": 2320}, {"offset": 34194, "seconds": 2322}, {"offset": 34220, "seconds": 2324}, {"offset": 34287, "seconds": 2328}, {"offset": 34344, "seconds": 2332}, {"offset": 34381, "seconds": 2334}, {"offset": 34432, "seconds": 2337}, {"offset": 34467, "seconds": 2341}, {"offset": 34513, "seconds": 2344}, {"offset": 34537, "seconds": 2346}, {"offset": 34564, "seconds": 2348}, {"offset": 34624, "seconds": 2352}, {"offset": 34665, "seconds": 2357}, {"offset": 34685, "seconds": 2359}, {"offset": 34733, "seconds": 2363}, {"offset": 34812, "seconds": 2367}, {"offset": 34842, "seconds": 2369}, {"offset": 34892, "seconds": 2372}, {"offset": 34981, "seconds": 2376}, {"offset": 35057, "seconds": 2381}, {"offset": 35117, "seconds": 2384}, {"offset": 35207, "seconds": 2389}, {"offset": 35265, "seconds": 2393}, {"offset": 35291, "seconds": 2396}, {"offset": 35367, "seconds": 2402}, {"offset": 35425, "seconds": 2406}, {"offset": 35488, "seconds": 2410}, {"offset": 35532, "seconds": 2414}, {"offset": 35618, "seconds": 2418}, {"offset": 35659, "seconds": 2421}, {"offset": 35743, "seconds": 2428}, {"offset": 35823, "seconds": 2433}, {"offset": 35912, "seconds": 2438}, {"offset": 35995, "seconds": 2445}, {"offset": 36034, "seconds": 2448}, {"offset": 36092, "seconds": 2452}, {"offset": 36179, "seconds": 2459}, {"offset": 36225, "seconds": 2462}, {"offset": 36307, "seconds": 2469}, {"offset": 36334, "seconds": 2471}, {"offset": 36386, "seconds": 2474}, {"offset": 36454, "seconds": 2478}, {"offset": 36537, "seconds": 2484}, {"offset": 36596, "seconds": 2488}, {"offset": 36684, "seconds": 2493}, {"offset": 36772, "seconds": 2499}, {"offset": 36825, "seconds": 2502}, {"offset": 36886, "seconds": 2505}, {"offset": 36942, "seconds": 2508}, {"offset": 36964, "seconds": 2509}, {"offset": 37025, "seconds": 2512}, {"offset": 37123, "seconds": 2517}, {"offset": 37156, "seconds": 2519}, {"offset": 37211, "seconds": 2524}, {"offset": 37272, "seconds": 2529}, {"offset": 37303, "seconds": 2532}, {"offset": 37395, "seconds": 2540}, {"offset": 37465, "seconds": 2544}, {"offset": 37515, "seconds": 2548}, {"offset": 37590, "seconds": 2555}, {"offset": 37646, "seconds": 2558}, {"offset": 37733, "seconds": 2563}, {"offset": 37804, "seconds": 2567}, {"offset": 37875, "seconds": 2573}, {"offset": 37914, "seconds": 2576}, {"offset": 37924, "seconds": 2577}, {"offset": 38009, "seconds": 2584}, {"offset": 38105, "seconds": 2589}, {"offset": 38179, "seconds": 2593}, {"offset": 38245, "seconds": 2597}, {"offset": 38334, "seconds": 2600}, {"offset": 38378, "seconds": 2602}, {"offset": 38443, "seconds": 2606}, {"offset": 38528, "seconds": 2612}, {"offset": 38591, "seconds": 2616}, {"offset": 38641, "seconds": 2618}, {"offset": 38691, "seconds": 2621}, {"offset": 38748, "seconds": 2624}, {"offset": 38808, "seconds": 2629}, {"offset": 38898, "seconds": 2636}, {"offset": 38911, "seconds": 2638}, {"offset": 38954, "seconds": 2640}, {"offset": 39016, "seconds": 2642}, {"offset": 39054, "seconds": 2644}, {"offset": 39136, "seconds": 2651}, {"offset": 39187, "seconds": 2654}, {"offset": 39234, "seconds": 2656}, {"offset": 39292, "seconds": 2660}, {"offset": 39364, "seconds": 2665}, {"offset": 39428, "seconds": 2669}, {"offset": 39498, "seconds": 2675}, {"offset": 39552, "seconds": 2679}, {"offset": 39619, "seconds": 2683}, {"offset": 39680, "seconds": 2687}, {"offset": 39758, "seconds": 2693}, {"offset": 39768, "seconds": 2694}, {"offset": 39836, "seconds": 2699}, {"offset": 39857, "seconds": 2700}, {"offset": 39918, "seconds": 2704}, {"offset": 39986, "seconds": 2710}, {"offset": 40051, "seconds": 2713}, {"offset": 40100, "seconds": 2716}, {"offset": 40155, "seconds": 2719}, {"offset": 40202, "seconds": 2722}, {"offset": 40250, "seconds": 2724}, {"offset": 40300, "seconds": 2727}, {"offset": 40343, "seconds": 2729}, {"offset": 40422, "seconds": 2733}, {"offset": 40451, "seconds": 2735}, {"offset": 40515, "seconds": 2737}, {"offset": 40551, "seconds": 2738}, {"offset": 40582, "seconds": 2740}, {"offset": 40594, "seconds": 2741}, {"offset": 40606, "seconds": 2742}, {"offset": 40630, "seconds": 2744}, {"offset": 40647, "seconds": 2746}, {"offset": 40689, "seconds": 2749}, {"offset": 40732, "seconds": 2751}, {"offset": 40761, "seconds": 2752}, {"offset": 40806, "seconds": 2755}, {"offset": 40828, "seconds": 2756}, {"offset": 40900, "seconds": 2759}, {"offset": 40951, "seconds": 2762}, {"offset": 41017, "seconds": 2766}, {"offset": 41070, "seconds": 2769}, {"offset": 41130, "seconds": 2772}, {"offset": 41189, "seconds": 2775}, {"offset": 41241, "seconds": 2779}, {"offset": 41255, "seconds": 2780}, {"offset": 41280, "seconds": 2781}, {"offset": 41305, "seconds": 2782}, {"offset": 41341, "seconds": 2784}, {"offset": 41355, "seconds": 2785}, {"offset": 41401, "seconds": 2800}, {"offset": 41437, "seconds": 2802}, {"offset": 41489, "seconds": 2805}, {"offset": 41530, "seconds": 2807}, {"offset": 41580, "seconds": 2810}, {"offset": 41610, "seconds": 2817}, {"offset": 41646, "seconds": 2820}, {"offset": 41685, "seconds": 2825}, {"offset": 41723, "seconds": 2827}, {"offset": 41769, "seconds": 2830}, {"offset": 41806, "seconds": 2834}, {"offset": 41863, "seconds": 2838}, {"offset": 41885, "seconds": 2841}, {"offset": 41920, "seconds": 2843}, {"offset": 41961, "seconds": 2847}, {"offset": 41990, "seconds": 2849}, {"offset": 42051, "seconds": 2852}, {"offset": 42119, "seconds": 2858}, {"offset": 42171, "seconds": 2861}, {"offset": 42220, "seconds": 2863}, {"offset": 42261, "seconds": 2867}, {"offset": 42315, "seconds": 2870}, {"offset": 42355, "seconds": 2873}, {"offset": 42377, "seconds": 2876}, {"offset": 42395, "seconds": 2878}, {"offset": 42413, "seconds": 2886}, {"offset": 42464, "seconds": 2889}, {"offset": 42504, "seconds": 2891}, {"offset": 42547, "seconds": 2894}, {"offset": 42601, "seconds": 2897}, {"offset": 42655, "seconds": 2900}]
|
src/rag/build_vector_db.py
CHANGED
|
@@ -12,6 +12,7 @@ Usage:
|
|
| 12 |
python build_vector_db.py
|
| 13 |
"""
|
| 14 |
|
|
|
|
| 15 |
import json
|
| 16 |
from pathlib import Path
|
| 17 |
from typing import List, Dict, Tuple
|
|
@@ -121,32 +122,40 @@ def load_all_proposals() -> List[Tuple[str, Dict]]:
|
|
| 121 |
# CHUNKING
|
| 122 |
# ============================================================================
|
| 123 |
|
| 124 |
-
def chunk_by_paragraphs(text: str, max_size: int = MAX_CHUNK_SIZE) -> List[Tuple[str, int, int]]:
|
| 125 |
"""
|
| 126 |
Split text by paragraphs, combining small ones to reach max_size.
|
| 127 |
|
| 128 |
Parses === PAGE N === markers before removing them so that each chunk
|
| 129 |
-
carries the page range it spans.
|
|
|
|
|
|
|
| 130 |
|
| 131 |
Args:
|
| 132 |
text: Input text
|
| 133 |
max_size: Maximum chunk size in characters
|
| 134 |
|
| 135 |
Returns:
|
| 136 |
-
List of (chunk_text, page_start, page_end) tuples.
|
| 137 |
page_start/page_end are 0 when no page markers are present.
|
|
|
|
|
|
|
| 138 |
"""
|
| 139 |
import re
|
| 140 |
|
| 141 |
-
# Parse page markers to build (page_num, paragraph_text)
|
| 142 |
lines = text.split('\n')
|
| 143 |
current_page = 0
|
| 144 |
has_pages = False
|
| 145 |
-
tagged_paragraphs = [] # list of (page_num, paragraph_text)
|
| 146 |
|
| 147 |
# Accumulate lines into paragraphs, tracking which page each belongs to
|
| 148 |
current_para_lines = []
|
| 149 |
current_para_page = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
| 150 |
|
| 151 |
for line in lines:
|
| 152 |
page_match = re.match(r'^=== PAGE (\d+) ===$', line.strip())
|
|
@@ -155,11 +164,12 @@ def chunk_by_paragraphs(text: str, max_size: int = MAX_CHUNK_SIZE) -> List[Tuple
|
|
| 155 |
if current_para_lines:
|
| 156 |
para_text = '\n'.join(current_para_lines).strip()
|
| 157 |
if para_text:
|
| 158 |
-
tagged_paragraphs.append((current_para_page, para_text))
|
| 159 |
current_para_lines = []
|
| 160 |
current_page = int(page_match.group(1))
|
| 161 |
current_para_page = current_page
|
| 162 |
has_pages = True
|
|
|
|
| 163 |
continue
|
| 164 |
|
| 165 |
if not line.strip():
|
|
@@ -167,63 +177,71 @@ def chunk_by_paragraphs(text: str, max_size: int = MAX_CHUNK_SIZE) -> List[Tuple
|
|
| 167 |
if current_para_lines:
|
| 168 |
para_text = '\n'.join(current_para_lines).strip()
|
| 169 |
if para_text:
|
| 170 |
-
tagged_paragraphs.append((current_para_page, para_text))
|
| 171 |
current_para_lines = []
|
| 172 |
current_para_page = current_page
|
| 173 |
else:
|
| 174 |
if not current_para_lines:
|
| 175 |
current_para_page = current_page
|
|
|
|
| 176 |
current_para_lines.append(line)
|
| 177 |
|
|
|
|
|
|
|
| 178 |
# Flush last paragraph
|
| 179 |
if current_para_lines:
|
| 180 |
para_text = '\n'.join(current_para_lines).strip()
|
| 181 |
if para_text:
|
| 182 |
-
tagged_paragraphs.append((current_para_page, para_text))
|
| 183 |
|
| 184 |
if not tagged_paragraphs:
|
| 185 |
if text.strip():
|
| 186 |
-
return [(text.strip(), 0, 0)]
|
| 187 |
return []
|
| 188 |
|
| 189 |
# If we got very few paragraphs, try splitting by single newlines
|
| 190 |
-
if len(tagged_paragraphs) < 3 and sum(len(p) for _, p in tagged_paragraphs) > max_size * 2:
|
| 191 |
# Re-split: each line becomes a paragraph (keeping page tags)
|
| 192 |
new_tagged = []
|
| 193 |
-
for page, para in tagged_paragraphs:
|
|
|
|
| 194 |
for sub_line in para.split('\n'):
|
| 195 |
-
|
| 196 |
-
if
|
| 197 |
-
new_tagged.append((page,
|
|
|
|
| 198 |
if new_tagged:
|
| 199 |
tagged_paragraphs = new_tagged
|
| 200 |
|
| 201 |
-
# Combine paragraphs into chunks, tracking page ranges
|
| 202 |
-
chunks = [] # list of (text, page_start, page_end)
|
| 203 |
current_chunk = ""
|
| 204 |
chunk_page_start = tagged_paragraphs[0][0] if tagged_paragraphs else 0
|
| 205 |
chunk_page_end = chunk_page_start
|
|
|
|
| 206 |
|
| 207 |
-
for page, para in tagged_paragraphs:
|
| 208 |
if current_chunk and len(current_chunk) + len(para) + 2 > max_size:
|
| 209 |
-
chunks.append((current_chunk.strip(), chunk_page_start, chunk_page_end))
|
| 210 |
current_chunk = para
|
| 211 |
chunk_page_start = page
|
| 212 |
chunk_page_end = page
|
|
|
|
| 213 |
else:
|
| 214 |
if current_chunk:
|
| 215 |
current_chunk += "\n\n" + para
|
| 216 |
else:
|
| 217 |
current_chunk = para
|
| 218 |
chunk_page_start = page
|
|
|
|
| 219 |
chunk_page_end = page
|
| 220 |
|
| 221 |
if current_chunk.strip():
|
| 222 |
-
chunks.append((current_chunk.strip(), chunk_page_start, chunk_page_end))
|
| 223 |
|
| 224 |
# Filter out very small chunks (unless it's the only chunk)
|
| 225 |
if len(chunks) > 1:
|
| 226 |
-
chunks = [(c, ps, pe) for c, ps, pe in chunks if len(c) >= MIN_CHUNK_SIZE]
|
| 227 |
|
| 228 |
# If we still have no chunks, just split by size
|
| 229 |
if not chunks and text.strip():
|
|
@@ -231,12 +249,12 @@ def chunk_by_paragraphs(text: str, max_size: int = MAX_CHUNK_SIZE) -> List[Tuple
|
|
| 231 |
for i in range(0, len(clean_text), max_size):
|
| 232 |
chunk = clean_text[i:i+max_size].strip()
|
| 233 |
if chunk:
|
| 234 |
-
chunks.append((chunk, 0, 0))
|
| 235 |
|
| 236 |
return chunks
|
| 237 |
|
| 238 |
|
| 239 |
-
def chunk_document(text: str, metadata: Dict) -> List[Tuple[str, int, int]]:
|
| 240 |
"""
|
| 241 |
Chunk a document based on its size and structure.
|
| 242 |
|
|
@@ -249,14 +267,15 @@ def chunk_document(text: str, metadata: Dict) -> List[Tuple[str, int, int]]:
|
|
| 249 |
metadata: Document metadata (includes word_count, char_count)
|
| 250 |
|
| 251 |
Returns:
|
| 252 |
-
List of (chunk_text, page_start, page_end) tuples.
|
| 253 |
page_start/page_end are 0 when no page markers are present.
|
|
|
|
| 254 |
"""
|
| 255 |
char_count = len(text)
|
| 256 |
|
| 257 |
# For very short documents, keep them whole
|
| 258 |
if char_count < KEEP_WHOLE_THRESHOLD:
|
| 259 |
-
return [(text, 0, 0)] if text.strip() else []
|
| 260 |
|
| 261 |
# For longer documents, chunk by paragraphs
|
| 262 |
return chunk_by_paragraphs(text, MAX_CHUNK_SIZE)
|
|
@@ -297,7 +316,6 @@ def lookup_start_time(chunk_text: str, full_text: str, offsets: List[Dict]) -> i
|
|
| 297 |
return 0
|
| 298 |
|
| 299 |
# Binary search for the largest offset <= pos
|
| 300 |
-
import bisect
|
| 301 |
offset_values = [o["offset"] for o in offsets]
|
| 302 |
idx = bisect.bisect_right(offset_values, pos) - 1
|
| 303 |
if idx < 0:
|
|
@@ -436,7 +454,7 @@ def build_vector_database():
|
|
| 436 |
|
| 437 |
print(f"\n Processing: {candidate} - {title}")
|
| 438 |
|
| 439 |
-
# Chunk the document (returns list of (text, page_start, page_end))
|
| 440 |
chunk_tuples = chunk_document(text, metadata)
|
| 441 |
print(f" Created {len(chunk_tuples)} chunks")
|
| 442 |
|
|
@@ -444,14 +462,19 @@ def build_vector_database():
|
|
| 444 |
print(f" ⚠ No chunks created, skipping")
|
| 445 |
continue
|
| 446 |
|
| 447 |
-
# Separate text from page info
|
| 448 |
chunks = [ct[0] for ct in chunk_tuples]
|
| 449 |
page_ranges = [(ct[1], ct[2]) for ct in chunk_tuples]
|
|
|
|
| 450 |
|
| 451 |
# Create embeddings for all chunks
|
| 452 |
embeddings = model.encode(chunks, show_progress_bar=False)
|
| 453 |
print(f" Generated embeddings: {embeddings.shape}")
|
| 454 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 455 |
# Prepare metadata for each chunk
|
| 456 |
chunk_metadatas = []
|
| 457 |
chunk_ids = []
|
|
@@ -471,11 +494,12 @@ def build_vector_database():
|
|
| 471 |
print(f" chunk {i}: {topic} → {primary}"
|
| 472 |
f"{' (+' + secondary_topics + ')' if secondary_topics else ''}")
|
| 473 |
|
| 474 |
-
# Look up timestamp for video transcripts
|
| 475 |
-
ts_offsets = metadata.get('_timestamp_offsets')
|
| 476 |
start_time = 0
|
| 477 |
if ts_offsets:
|
| 478 |
-
|
|
|
|
|
|
|
| 479 |
|
| 480 |
# Create rich metadata for each chunk
|
| 481 |
chunk_meta = {
|
|
|
|
| 12 |
python build_vector_db.py
|
| 13 |
"""
|
| 14 |
|
| 15 |
+
import bisect
|
| 16 |
import json
|
| 17 |
from pathlib import Path
|
| 18 |
from typing import List, Dict, Tuple
|
|
|
|
| 122 |
# CHUNKING
|
| 123 |
# ============================================================================
|
| 124 |
|
| 125 |
+
def chunk_by_paragraphs(text: str, max_size: int = MAX_CHUNK_SIZE) -> List[Tuple[str, int, int, int]]:
|
| 126 |
"""
|
| 127 |
Split text by paragraphs, combining small ones to reach max_size.
|
| 128 |
|
| 129 |
Parses === PAGE N === markers before removing them so that each chunk
|
| 130 |
+
carries the page range it spans. Also tracks each chunk's character
|
| 131 |
+
offset in the original *text* so callers can map chunks back to
|
| 132 |
+
positions (e.g. for timestamp lookup) without reverse-searching.
|
| 133 |
|
| 134 |
Args:
|
| 135 |
text: Input text
|
| 136 |
max_size: Maximum chunk size in characters
|
| 137 |
|
| 138 |
Returns:
|
| 139 |
+
List of (chunk_text, page_start, page_end, char_offset) tuples.
|
| 140 |
page_start/page_end are 0 when no page markers are present.
|
| 141 |
+
char_offset is the position in *text* where the chunk's first
|
| 142 |
+
paragraph began.
|
| 143 |
"""
|
| 144 |
import re
|
| 145 |
|
| 146 |
+
# Parse page markers to build (page_num, paragraph_text, char_offset) triples
|
| 147 |
lines = text.split('\n')
|
| 148 |
current_page = 0
|
| 149 |
has_pages = False
|
| 150 |
+
tagged_paragraphs = [] # list of (page_num, paragraph_text, char_offset)
|
| 151 |
|
| 152 |
# Accumulate lines into paragraphs, tracking which page each belongs to
|
| 153 |
current_para_lines = []
|
| 154 |
current_para_page = 0
|
| 155 |
+
current_para_offset = 0 # char offset of the first line in current paragraph
|
| 156 |
+
|
| 157 |
+
# Running character position in the original text
|
| 158 |
+
line_offset = 0
|
| 159 |
|
| 160 |
for line in lines:
|
| 161 |
page_match = re.match(r'^=== PAGE (\d+) ===$', line.strip())
|
|
|
|
| 164 |
if current_para_lines:
|
| 165 |
para_text = '\n'.join(current_para_lines).strip()
|
| 166 |
if para_text:
|
| 167 |
+
tagged_paragraphs.append((current_para_page, para_text, current_para_offset))
|
| 168 |
current_para_lines = []
|
| 169 |
current_page = int(page_match.group(1))
|
| 170 |
current_para_page = current_page
|
| 171 |
has_pages = True
|
| 172 |
+
line_offset += len(line) + 1 # +1 for the \n lost in split
|
| 173 |
continue
|
| 174 |
|
| 175 |
if not line.strip():
|
|
|
|
| 177 |
if current_para_lines:
|
| 178 |
para_text = '\n'.join(current_para_lines).strip()
|
| 179 |
if para_text:
|
| 180 |
+
tagged_paragraphs.append((current_para_page, para_text, current_para_offset))
|
| 181 |
current_para_lines = []
|
| 182 |
current_para_page = current_page
|
| 183 |
else:
|
| 184 |
if not current_para_lines:
|
| 185 |
current_para_page = current_page
|
| 186 |
+
current_para_offset = line_offset
|
| 187 |
current_para_lines.append(line)
|
| 188 |
|
| 189 |
+
line_offset += len(line) + 1 # +1 for the \n lost in split
|
| 190 |
+
|
| 191 |
# Flush last paragraph
|
| 192 |
if current_para_lines:
|
| 193 |
para_text = '\n'.join(current_para_lines).strip()
|
| 194 |
if para_text:
|
| 195 |
+
tagged_paragraphs.append((current_para_page, para_text, current_para_offset))
|
| 196 |
|
| 197 |
if not tagged_paragraphs:
|
| 198 |
if text.strip():
|
| 199 |
+
return [(text.strip(), 0, 0, 0)]
|
| 200 |
return []
|
| 201 |
|
| 202 |
# If we got very few paragraphs, try splitting by single newlines
|
| 203 |
+
if len(tagged_paragraphs) < 3 and sum(len(p) for _, p, _ in tagged_paragraphs) > max_size * 2:
|
| 204 |
# Re-split: each line becomes a paragraph (keeping page tags)
|
| 205 |
new_tagged = []
|
| 206 |
+
for page, para, offset in tagged_paragraphs:
|
| 207 |
+
sub_offset = offset
|
| 208 |
for sub_line in para.split('\n'):
|
| 209 |
+
stripped = sub_line.strip()
|
| 210 |
+
if stripped and len(stripped) > 30:
|
| 211 |
+
new_tagged.append((page, stripped, sub_offset))
|
| 212 |
+
sub_offset += len(sub_line) + 1 # +1 for \n
|
| 213 |
if new_tagged:
|
| 214 |
tagged_paragraphs = new_tagged
|
| 215 |
|
| 216 |
+
# Combine paragraphs into chunks, tracking page ranges and char offsets
|
| 217 |
+
chunks = [] # list of (text, page_start, page_end, char_offset)
|
| 218 |
current_chunk = ""
|
| 219 |
chunk_page_start = tagged_paragraphs[0][0] if tagged_paragraphs else 0
|
| 220 |
chunk_page_end = chunk_page_start
|
| 221 |
+
chunk_char_offset = tagged_paragraphs[0][2] if tagged_paragraphs else 0
|
| 222 |
|
| 223 |
+
for page, para, offset in tagged_paragraphs:
|
| 224 |
if current_chunk and len(current_chunk) + len(para) + 2 > max_size:
|
| 225 |
+
chunks.append((current_chunk.strip(), chunk_page_start, chunk_page_end, chunk_char_offset))
|
| 226 |
current_chunk = para
|
| 227 |
chunk_page_start = page
|
| 228 |
chunk_page_end = page
|
| 229 |
+
chunk_char_offset = offset
|
| 230 |
else:
|
| 231 |
if current_chunk:
|
| 232 |
current_chunk += "\n\n" + para
|
| 233 |
else:
|
| 234 |
current_chunk = para
|
| 235 |
chunk_page_start = page
|
| 236 |
+
chunk_char_offset = offset
|
| 237 |
chunk_page_end = page
|
| 238 |
|
| 239 |
if current_chunk.strip():
|
| 240 |
+
chunks.append((current_chunk.strip(), chunk_page_start, chunk_page_end, chunk_char_offset))
|
| 241 |
|
| 242 |
# Filter out very small chunks (unless it's the only chunk)
|
| 243 |
if len(chunks) > 1:
|
| 244 |
+
chunks = [(c, ps, pe, co) for c, ps, pe, co in chunks if len(c) >= MIN_CHUNK_SIZE]
|
| 245 |
|
| 246 |
# If we still have no chunks, just split by size
|
| 247 |
if not chunks and text.strip():
|
|
|
|
| 249 |
for i in range(0, len(clean_text), max_size):
|
| 250 |
chunk = clean_text[i:i+max_size].strip()
|
| 251 |
if chunk:
|
| 252 |
+
chunks.append((chunk, 0, 0, i))
|
| 253 |
|
| 254 |
return chunks
|
| 255 |
|
| 256 |
|
| 257 |
+
def chunk_document(text: str, metadata: Dict) -> List[Tuple[str, int, int, int]]:
|
| 258 |
"""
|
| 259 |
Chunk a document based on its size and structure.
|
| 260 |
|
|
|
|
| 267 |
metadata: Document metadata (includes word_count, char_count)
|
| 268 |
|
| 269 |
Returns:
|
| 270 |
+
List of (chunk_text, page_start, page_end, char_offset) tuples.
|
| 271 |
page_start/page_end are 0 when no page markers are present.
|
| 272 |
+
char_offset is the position in *text* where the chunk begins.
|
| 273 |
"""
|
| 274 |
char_count = len(text)
|
| 275 |
|
| 276 |
# For very short documents, keep them whole
|
| 277 |
if char_count < KEEP_WHOLE_THRESHOLD:
|
| 278 |
+
return [(text, 0, 0, 0)] if text.strip() else []
|
| 279 |
|
| 280 |
# For longer documents, chunk by paragraphs
|
| 281 |
return chunk_by_paragraphs(text, MAX_CHUNK_SIZE)
|
|
|
|
| 316 |
return 0
|
| 317 |
|
| 318 |
# Binary search for the largest offset <= pos
|
|
|
|
| 319 |
offset_values = [o["offset"] for o in offsets]
|
| 320 |
idx = bisect.bisect_right(offset_values, pos) - 1
|
| 321 |
if idx < 0:
|
|
|
|
| 454 |
|
| 455 |
print(f"\n Processing: {candidate} - {title}")
|
| 456 |
|
| 457 |
+
# Chunk the document (returns list of (text, page_start, page_end, char_offset))
|
| 458 |
chunk_tuples = chunk_document(text, metadata)
|
| 459 |
print(f" Created {len(chunk_tuples)} chunks")
|
| 460 |
|
|
|
|
| 462 |
print(f" ⚠ No chunks created, skipping")
|
| 463 |
continue
|
| 464 |
|
| 465 |
+
# Separate text from page/offset info
|
| 466 |
chunks = [ct[0] for ct in chunk_tuples]
|
| 467 |
page_ranges = [(ct[1], ct[2]) for ct in chunk_tuples]
|
| 468 |
+
char_offsets = [ct[3] for ct in chunk_tuples]
|
| 469 |
|
| 470 |
# Create embeddings for all chunks
|
| 471 |
embeddings = model.encode(chunks, show_progress_bar=False)
|
| 472 |
print(f" Generated embeddings: {embeddings.shape}")
|
| 473 |
|
| 474 |
+
# Pre-compute timestamp offset list once per document
|
| 475 |
+
ts_offsets = metadata.get('_timestamp_offsets')
|
| 476 |
+
ts_offset_values = [o["offset"] for o in ts_offsets] if ts_offsets else []
|
| 477 |
+
|
| 478 |
# Prepare metadata for each chunk
|
| 479 |
chunk_metadatas = []
|
| 480 |
chunk_ids = []
|
|
|
|
| 494 |
print(f" chunk {i}: {topic} → {primary}"
|
| 495 |
f"{' (+' + secondary_topics + ')' if secondary_topics else ''}")
|
| 496 |
|
| 497 |
+
# Look up timestamp for video transcripts using char_offset
|
|
|
|
| 498 |
start_time = 0
|
| 499 |
if ts_offsets:
|
| 500 |
+
idx = bisect.bisect_right(ts_offset_values, char_offsets[i]) - 1
|
| 501 |
+
if idx >= 0:
|
| 502 |
+
start_time = ts_offsets[idx]["seconds"]
|
| 503 |
|
| 504 |
# Create rich metadata for each chunk
|
| 505 |
chunk_meta = {
|