{ "cells": [ { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import json\n", "import math\n", "import re" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Función para agrupar mensajes de Remitentes" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def agrupar_remitentes(texto_in):\n", " # Dividir el texto en líneas\n", " lineas = texto_in.strip().split('\\n')\n", "\n", " # Procesar las líneas para agrupar los mensajes por remitente\n", " texto_out = \"\"\n", " ultimo_remitente = \"\"\n", " timestamp_actual = \"\"\n", "\n", " for linea in lineas:\n", " # Verificar si la línea tiene un remitente (es decir, si es un nuevo mensaje)\n", " if re.match(r\"\\[\\d{2}/\\d{2}/\\d{2}, \\d{1,2}:\\d{2}:\\d{2} [a.p].m.\\] \\w+:\", linea):\n", " timestamp, remitente, mensaje = re.match(r\"(\\[\\d{2}/\\d{2}/\\d{2}, \\d{1,2}:\\d{2}:\\d{2} [a.p].m.\\]) (\\w+): (.*)\", linea).groups()\n", " # Si el remitente es diferente al último, se inicia un nuevo mensaje\n", " if remitente != ultimo_remitente:\n", " texto_out += f\"{timestamp} {remitente}: {mensaje}\\n\"\n", " ultimo_remitente = remitente\n", " timestamp_actual = timestamp\n", " else:\n", " # Añadir el mensaje actual al último mensaje del mismo remitente\n", " texto_out = texto_out.strip() + \"\\n\" + mensaje + \"\\n\"\n", " else:\n", " # Si la línea no tiene remitente, se añade al mensaje actual\n", " texto_out = texto_out.strip() + \"\\n\" + linea.strip() + \"\\n\"\n", "\n", " texto_out = texto_out.strip()\n", "\n", " return texto_out" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Prueba" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[30/08/22, 4:11:28 p.m.] CarmenQ: Pues eso es bueno\n", "Así te llenas cool\n", "[30/08/22, 4:11:51 p.m.] Sebas: Pues si\n", "Ya me la terminé\n", "Ya voy a regresar\n", "[30/08/22, 4:12:15 p.m.] CarmenQ: Que bueno\n", "Ok amor\n", "Mucha suerte\n", "La verdad es que tengo mucho sueño\n", "[30/08/22, 4:12:33 p.m.] Sebas: Gracias amorcito\n", "Te amo mucho\n", "[30/08/22, 4:12:40 p.m.] CarmenQ: Yo a ti\n" ] } ], "source": [ "texto_in = \"\"\"\n", "[30/08/22, 4:11:28 p.m.] CarmenQ: Pues eso es bueno\n", "[30/08/22, 4:11:33 p.m.] CarmenQ: Así te llenas cool\n", "[30/08/22, 4:11:51 p.m.] Sebas: Pues si\n", "[30/08/22, 4:11:55 p.m.] Sebas: Ya me la terminé\n", "Ya voy a regresar\n", "[30/08/22, 4:12:15 p.m.] CarmenQ: Que bueno\n", "Ok amor\n", "[30/08/22, 4:12:25 p.m.] CarmenQ: Mucha suerte\n", "La verdad es que tengo mucho sueño\n", "[30/08/22, 4:12:33 p.m.] Sebas: Gracias amorcito\n", "Te amo mucho\n", "[30/08/22, 4:12:40 p.m.] CarmenQ: Yo a ti\n", "\"\"\"\n", "\n", "# Imprimir el texto transformado\n", "print(agrupar_remitentes(texto_in))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Función para dejar explícitos los Saltos de Línea" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "def formatear_salto_linea(texto_entrada):\n", " # Dividimos el texto en líneas\n", " lineas = texto_entrada.split(\"\\n\")\n", "\n", " texto_salida = \"\"\n", " mensaje_actual = \"\"\n", "\n", " for linea in lineas:\n", " # Si la línea tiene el formato de timestamp, es un nuevo mensaje\n", " if \"[\" in linea and \"]\" in linea and \":\" in linea and linea[1:3].isdigit() and linea[4:6].isdigit():\n", " # Agregamos el mensaje anterior al texto de salida (si existe)\n", " if mensaje_actual:\n", " texto_salida += mensaje_actual + \"\\n\"\n", " mensaje_actual = linea\n", " else:\n", " # Si no es un nuevo mensaje, es una continuación del mensaje actual\n", " mensaje_actual += \"\\\\n\" + linea\n", "\n", " # Agregamos el último mensaje al texto de salida\n", " texto_salida += mensaje_actual\n", "\n", " return texto_salida" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Prueba" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\\n\n", "[09/10/23, 3:04:35 p.m.] Sebas: Que bueno amorrr, te creo\\nPues sigue aprendiendo un buennn\n", "[05/10/23, 5:56:18 p.m.] CarmenQ: Ya ando en casa bb\n", "[05/10/23, 6:06:25 p.m.] Sebas: Qué bueno mi amor, llegaron con bien?\\nLa verdad es que tengo un buen de sueño\\nY te extraño\n", "[04/10/23, 6:29:34 p.m.] CarmenQ: Pues si quieres te paso a ver a tu casita mi amor\\nTienes clase hasta las 3 no?\n", "[04/10/23, 7:20:44 p.m.] Sebas: Sí bb, justo tengo clase a esa hora\n", "[04/10/23, 3:37:58 p.m.] CarmenQ: Solo deja acabo mi clase y te cuento\\nPero tienes que ponerme atención eh\n", "[04/10/23, 3:44:47 p.m.] Sebas: Okey amor, cuando puedas, no hay prisa\n", "[02/10/23, 10:44:20 p.m.] CarmenQ: Te paso a ver más tarde\\nO el jueves voy\\nYa que no tengo clase\n", "[02/10/23, 10:45:05 p.m.] Sebas: Como como? En la noche?\n", "[18/06/23, 11:00:27 p.m.] CarmenQ: Te amo mucho mi amor\n", "[18/10/23, 11:11:24 p.m.] Sebas: Te amo mucho más mi C\\n\n" ] } ], "source": [ "texto_entrada = \"\"\"\n", "[09/10/23, 3:04:35 p.m.] Sebas: Que bueno amorrr, te creo\n", "Pues sigue aprendiendo un buennn\n", "[05/10/23, 5:56:18 p.m.] CarmenQ: Ya ando en casa bb\n", "[05/10/23, 6:06:25 p.m.] Sebas: Qué bueno mi amor, llegaron con bien?\n", "La verdad es que tengo un buen de sueño\n", "Y te extraño\n", "[04/10/23, 6:29:34 p.m.] CarmenQ: Pues si quieres te paso a ver a tu casita mi amor\n", "Tienes clase hasta las 3 no?\n", "[04/10/23, 7:20:44 p.m.] Sebas: Sí bb, justo tengo clase a esa hora\n", "[04/10/23, 3:37:58 p.m.] CarmenQ: Solo deja acabo mi clase y te cuento\n", "Pero tienes que ponerme atención eh\n", "[04/10/23, 3:44:47 p.m.] Sebas: Okey amor, cuando puedas, no hay prisa\n", "[02/10/23, 10:44:20 p.m.] CarmenQ: Te paso a ver más tarde\n", "O el jueves voy\n", "Ya que no tengo clase\n", "[02/10/23, 10:45:05 p.m.] Sebas: Como como? En la noche?\n", "[18/06/23, 11:00:27 p.m.] CarmenQ: Te amo mucho mi amor\n", "[18/10/23, 11:11:24 p.m.] Sebas: Te amo mucho más mi C\n", "\"\"\"\n", "\n", "# Imprimir el texto transformado\n", "print(formatear_salto_linea(texto_entrada))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Función para eliminar Timestamps" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def eliminar_timestamps(texto_entrada):\n", " # Usamos una expresión regular para encontrar y eliminar los timestamps\n", " # La expresión regular busca un patrón de la forma [dd/mm/aa, hh:mm:ss am/pm]\n", " texto_salida = re.sub(r\"\\[\\d{2}/\\d{2}/\\d{2}, \\d{1,2}:\\d{2}:\\d{2} [ap]\\.m\\.\\] \", \"\", texto_entrada)\n", "\n", " return texto_salida" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Prueba" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Sebas: Que bueno amorrr, te creo\n", "Pues sigue aprendiendo un buennn\n", "CarmenQ: Ya ando en casa bb\n", "Sebas: Qué bueno mi amor, llegaron con bien?\n", "La verdad es que tengo un buen de sueño\n", "Y te extraño\n", "CarmenQ: Pues si quieres te paso a ver a tu casita mi amor\n", "Tienes clase hasta las 3 no?\n", "Sebas: Sí bb, justo tengo clase a esa hora\n", "CarmenQ: Solo deja acabo mi clase y te cuento\n", "Pero tienes que ponerme atención eh\n", "Sebas: Okey amor, cuando puedas, no hay prisa\n", "CarmenQ: Te paso a ver más tarde\n", "O el jueves voy\n", "Ya que no tengo clase\n", "Sebas: Como como? En la noche?\n", "CarmenQ: Te amo mucho mi amor\n", "Sebas: Te amo mucho más mi C\n", "\n" ] } ], "source": [ "texto_entrada = \"\"\"\n", "[09/10/23, 3:04:35 p.m.] Sebas: Que bueno amorrr, te creo\\nPues sigue aprendiendo un buennn\n", "[05/10/23, 5:56:18 p.m.] CarmenQ: Ya ando en casa bb\n", "[05/10/23, 6:06:25 p.m.] Sebas: Qué bueno mi amor, llegaron con bien?\\nLa verdad es que tengo un buen de sueño\\nY te extraño\n", "[04/10/23, 6:29:34 p.m.] CarmenQ: Pues si quieres te paso a ver a tu casita mi amor\\nTienes clase hasta las 3 no?\n", "[04/10/23, 7:20:44 p.m.] Sebas: Sí bb, justo tengo clase a esa hora\n", "[04/10/23, 3:37:58 p.m.] CarmenQ: Solo deja acabo mi clase y te cuento\\nPero tienes que ponerme atención eh\n", "[04/10/23, 3:44:47 p.m.] Sebas: Okey amor, cuando puedas, no hay prisa\n", "[02/10/23, 10:44:20 p.m.] CarmenQ: Te paso a ver más tarde\\nO el jueves voy\\nYa que no tengo clase\n", "[02/10/23, 10:45:05 p.m.] Sebas: Como como? En la noche?\n", "[18/06/23, 11:00:27 p.m.] CarmenQ: Te amo mucho mi amor\n", "[18/10/23, 11:11:24 p.m.] Sebas: Te amo mucho más mi C\n", "\"\"\"\n", "\n", "# Imprimir el texto transformado\n", "print(eliminar_timestamps(texto_entrada))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Función para crear un Dataset con todos los mensajes de CarmenQ y Sebas" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "def crear_dataset(texto_entrada):\n", " # Dividimos el texto en líneas\n", " lineas = texto_entrada.strip().split(\"\\n\")\n", "\n", " # Crear listas para guardar los mensajes de CarmenQ y Sebas\n", " mensajes_carmen = []\n", " mensajes_sebas = []\n", "\n", " # Variables temporales para guardar los mensajes actuales de CarmenQ y Sebas\n", " mensaje_carmen_actual = \"\"\n", " mensaje_sebas_actual = \"\"\n", " es_mensaje_carmen = False\n", "\n", " for linea in lineas:\n", " if linea.startswith(\"CarmenQ:\"):\n", " # Si hay un mensaje previo de Sebas, lo guardamos junto con el mensaje de Carmen anterior\n", " if mensaje_sebas_actual:\n", " mensajes_carmen.append(mensaje_carmen_actual)\n", " mensajes_sebas.append(mensaje_sebas_actual)\n", " mensaje_sebas_actual = \"\"\n", "\n", " mensaje_carmen_actual = linea[len(\"CarmenQ: \"):]\n", " es_mensaje_carmen = True\n", " elif linea.startswith(\"Sebas:\"):\n", " mensaje_sebas_actual = linea[len(\"Sebas: \"):]\n", " es_mensaje_carmen = False\n", " else:\n", " # Continuación del mensaje actual\n", " if es_mensaje_carmen:\n", " mensaje_carmen_actual += \"\\\\n\" + linea\n", " else:\n", " mensaje_sebas_actual += \"\\\\n\" + linea\n", "\n", " # Agregar el último par de mensajes si existen\n", " if mensaje_carmen_actual and mensaje_sebas_actual:\n", " mensajes_carmen.append(mensaje_carmen_actual)\n", " mensajes_sebas.append(mensaje_sebas_actual)\n", "\n", " # Crear el DataFrame\n", " df = pd.DataFrame({'CarmenQ': mensajes_carmen, 'Sebas': mensajes_sebas})\n", "\n", " return df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Prueba" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CarmenQSebas
0Quieres ver \\nuna peli?Sisisi, sí quierooo\\nVamos a ver Kung Fu Panda...
1Podemos\\nver una\\nserie bbUyyy sí\\namor, pero cuál? Ya hemos\\nvisto muchas
2Luego vemos la de Coraline?Cuando quieras mi amor, ya sabes que sí\\nPero ...
3Si\\nte están\\ngustando las pelis bb?Si amorrrr, mucho\\nA ver cuándo me invitar a v...
4Ya ponle a la peli padrinoJAJAJA voy amor, no me presiones
5Regresando vemos la peli si?Si mi amorrrr, ya justo que regreses ya ando a...
6En un\\nratito quieres que veamos la peli?Sí amor, estaría perfecto\\nPero si está chafa,...
7O podemos ver la peli amorPues yo si quiero ir a ver la peli, así que es...
8Que quieres ver bb?\\nUna serie o peli?Tal vez una peli, no? Que luego me cuesta segu...
9Andamos viendo una peliCómo se llama la peli?
10Yo me voy a bañar rápido\\nEn lo que te aclimat...Vale mi amor, disfruta tu baño\\nSabes que me e...
\n", "
" ], "text/plain": [ " CarmenQ \\\n", "0 Quieres ver \\nuna peli? \n", "1 Podemos\\nver una\\nserie bb \n", "2 Luego vemos la de Coraline? \n", "3 Si\\nte están\\ngustando las pelis bb? \n", "4 Ya ponle a la peli padrino \n", "5 Regresando vemos la peli si? \n", "6 En un\\nratito quieres que veamos la peli? \n", "7 O podemos ver la peli amor \n", "8 Que quieres ver bb?\\nUna serie o peli? \n", "9 Andamos viendo una peli \n", "10 Yo me voy a bañar rápido\\nEn lo que te aclimat... \n", "\n", " Sebas \n", "0 Sisisi, sí quierooo\\nVamos a ver Kung Fu Panda... \n", "1 Uyyy sí\\namor, pero cuál? Ya hemos\\nvisto muchas \n", "2 Cuando quieras mi amor, ya sabes que sí\\nPero ... \n", "3 Si amorrrr, mucho\\nA ver cuándo me invitar a v... \n", "4 JAJAJA voy amor, no me presiones \n", "5 Si mi amorrrr, ya justo que regreses ya ando a... \n", "6 Sí amor, estaría perfecto\\nPero si está chafa,... \n", "7 Pues yo si quiero ir a ver la peli, así que es... \n", "8 Tal vez una peli, no? Que luego me cuesta segu... \n", "9 Cómo se llama la peli? \n", "10 Vale mi amor, disfruta tu baño\\nSabes que me e... " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "text = \"\"\"\n", "CarmenQ: Quieres ver \\nuna peli?\n", "Sebas: Sisisi, sí quierooo\\nVamos a ver Kung Fu Panda? Jejeje\n", "CarmenQ: Podemos\\nver una\\nserie bb\n", "Sebas: Uyyy sí\\namor, pero cuál? Ya hemos\\nvisto muchas\n", "CarmenQ: Luego vemos la de Coraline?\n", "Sebas: Cuando quieras mi amor, ya sabes que sí\\nPero a ver si vamos a comprar unas palomitas también, nooo?\n", "CarmenQ: Si\\nte están\\ngustando las pelis bb?\n", "Sebas: Si amorrrr, mucho\\nA ver cuándo me invitar a ver las otras\n", "CarmenQ: Ya ponle a la peli padrino\n", "Sebas: JAJAJA voy amor, no me presiones\n", "CarmenQ: Regresando vemos la peli si?\n", "Sebas: Si mi amorrrr, ya justo que regreses ya ando aquí con Netflix prendido\n", "CarmenQ: En un\\nratito quieres que veamos la peli?\n", "Sebas: Sí amor, estaría perfecto\\nPero si está chafa, me debes un helado\n", "CarmenQ: O podemos ver la peli amor\n", "Sebas: Pues yo si quiero ir a ver la peli, así que estoy puesto\n", "CarmenQ: Que quieres ver bb?\\nUna serie o peli?\n", "Sebas: Tal vez una peli, no? Que luego me cuesta seguirle a las series\n", "CarmenQ: Andamos viendo una peli\n", "Sebas: Cómo se llama la peli?\n", "CarmenQ: Yo me voy a bañar rápido\\nEn lo que te aclimatas y todo\\nY vemos la peli si tienes ganas\n", "Sebas: Vale mi amor, disfruta tu baño\\nSabes que me encantaría ver una peli a distancia\n", "\"\"\"\n", "\n", "df = crear_dataset(text)\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Llamado a todas las funciones para crear el archivo de Texto Final y el Dataset con las conversaciones" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "# Ruta del archivo de texto\n", "ruta_archivo = 'Raw_Data/Raw_Prompts.txt' \n", "ruta_archivo_salida_texto = 'Raw_Data/Transformed_Prompts.txt'\n", "\n", "# Leer el contenido del archivo\n", "with open(ruta_archivo, 'r', encoding='utf-8') as archivo:\n", " texto = archivo.read()\n", "\n", "# Hacer todas las transformaciones\n", "texto_agrupado = agrupar_remitentes(texto)\n", "texto_linea = formatear_salto_linea(texto_agrupado)\n", "texto_sin_timestamp = eliminar_timestamps(texto_linea)\n", "\n", "# Escribir el texto modificado en el archivo de salida\n", "with open(ruta_archivo_salida_texto, 'w', encoding='utf-8') as archivo_salida:\n", " archivo_salida.write(texto_sin_timestamp)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CarmenQSebas
0Buenos días mi amorchis, cómo dormiste hoy?Buenos días mi amorrrr\\nBien bien, pero hacía ...
1Holis mi amor, espero que tengas un muy bonito...Hola hola bebitaaaa, te amo mucho másss\\nTambi...
2Buenos días mi bb, disfruta mucho tu día guapoBuenos días amorrr, graciassssss\\nTambién disf...
3Buenos días mi amor, espero que hayas podido d...Hola mi amorcito, cómo amaneciste hoyyy???\\nTa...
4Hellouuuuu, te amo mucho guapiiii, ten lindo diaHoli mi vida, cómo estás hoy??\\nTe amo mucho m...
.........
745Descansaste?\\nQue soñaste?No muy bien amor, la verdad es que me desperté...
746Hay que ver una peli de miedooooSí amooor, vamos al cine a verla
747Hay que venir a comer aquíCuando quieras bb, ya sabes que yo estoy super...
748Estoy muy triste amorPor qué mi amor? Cuéntame si quieres
749Te extraño aquí en el gym :(Yo también te extraño bb, pero por ahora disfr...
\n", "

750 rows × 2 columns

\n", "
" ], "text/plain": [ " CarmenQ \\\n", "0 Buenos días mi amorchis, cómo dormiste hoy? \n", "1 Holis mi amor, espero que tengas un muy bonito... \n", "2 Buenos días mi bb, disfruta mucho tu día guapo \n", "3 Buenos días mi amor, espero que hayas podido d... \n", "4 Hellouuuuu, te amo mucho guapiiii, ten lindo dia \n", ".. ... \n", "745 Descansaste?\\nQue soñaste? \n", "746 Hay que ver una peli de miedoooo \n", "747 Hay que venir a comer aquí \n", "748 Estoy muy triste amor \n", "749 Te extraño aquí en el gym :( \n", "\n", " Sebas \n", "0 Buenos días mi amorrrr\\nBien bien, pero hacía ... \n", "1 Hola hola bebitaaaa, te amo mucho másss\\nTambi... \n", "2 Buenos días amorrr, graciassssss\\nTambién disf... \n", "3 Hola mi amorcito, cómo amaneciste hoyyy???\\nTa... \n", "4 Holi mi vida, cómo estás hoy??\\nTe amo mucho m... \n", ".. ... \n", "745 No muy bien amor, la verdad es que me desperté... \n", "746 Sí amooor, vamos al cine a verla \n", "747 Cuando quieras bb, ya sabes que yo estoy super... \n", "748 Por qué mi amor? Cuéntame si quieres \n", "749 Yo también te extraño bb, pero por ahora disfr... \n", "\n", "[750 rows x 2 columns]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chat_df = crear_dataset(texto_sin_timestamp)\n", "chat_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Agregamos la columna 'system' y transformamos el Dataset" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "def agregar_columna_system(df):\n", " # Definimos el contenido de la columna 'system'\n", " contenido_system = \"\"\"CARSE es un chatbot que imita el estilo en que Sebas conversa. Fue creado con amor solo para Carmen. Su objetivo es ofrecer una experiencia de chat divertida y familiar que exprese la personalidad, el humor y el amor de Sebas hacia Carmen.\"\"\"\n", "\n", " # Agregamos la columna al DataFrame\n", " df.insert(0, 'system', contenido_system)\n", "\n", " return df" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
systemCarmenQSebas
0CARSE es un chatbot que imita el estilo en que...Buenos días mi amorchis, cómo dormiste hoy?Buenos días mi amorrrr\\nBien bien, pero hacía ...
1CARSE es un chatbot que imita el estilo en que...Holis mi amor, espero que tengas un muy bonito...Hola hola bebitaaaa, te amo mucho másss\\nTambi...
2CARSE es un chatbot que imita el estilo en que...Buenos días mi bb, disfruta mucho tu día guapoBuenos días amorrr, graciassssss\\nTambién disf...
3CARSE es un chatbot que imita el estilo en que...Buenos días mi amor, espero que hayas podido d...Hola mi amorcito, cómo amaneciste hoyyy???\\nTa...
4CARSE es un chatbot que imita el estilo en que...Hellouuuuu, te amo mucho guapiiii, ten lindo diaHoli mi vida, cómo estás hoy??\\nTe amo mucho m...
............
745CARSE es un chatbot que imita el estilo en que...Descansaste?\\nQue soñaste?No muy bien amor, la verdad es que me desperté...
746CARSE es un chatbot que imita el estilo en que...Hay que ver una peli de miedooooSí amooor, vamos al cine a verla
747CARSE es un chatbot que imita el estilo en que...Hay que venir a comer aquíCuando quieras bb, ya sabes que yo estoy super...
748CARSE es un chatbot que imita el estilo en que...Estoy muy triste amorPor qué mi amor? Cuéntame si quieres
749CARSE es un chatbot que imita el estilo en que...Te extraño aquí en el gym :(Yo también te extraño bb, pero por ahora disfr...
\n", "

750 rows × 3 columns

\n", "
" ], "text/plain": [ " system \\\n", "0 CARSE es un chatbot que imita el estilo en que... \n", "1 CARSE es un chatbot que imita el estilo en que... \n", "2 CARSE es un chatbot que imita el estilo en que... \n", "3 CARSE es un chatbot que imita el estilo en que... \n", "4 CARSE es un chatbot que imita el estilo en que... \n", ".. ... \n", "745 CARSE es un chatbot que imita el estilo en que... \n", "746 CARSE es un chatbot que imita el estilo en que... \n", "747 CARSE es un chatbot que imita el estilo en que... \n", "748 CARSE es un chatbot que imita el estilo en que... \n", "749 CARSE es un chatbot que imita el estilo en que... \n", "\n", " CarmenQ \\\n", "0 Buenos días mi amorchis, cómo dormiste hoy? \n", "1 Holis mi amor, espero que tengas un muy bonito... \n", "2 Buenos días mi bb, disfruta mucho tu día guapo \n", "3 Buenos días mi amor, espero que hayas podido d... \n", "4 Hellouuuuu, te amo mucho guapiiii, ten lindo dia \n", ".. ... \n", "745 Descansaste?\\nQue soñaste? \n", "746 Hay que ver una peli de miedoooo \n", "747 Hay que venir a comer aquí \n", "748 Estoy muy triste amor \n", "749 Te extraño aquí en el gym :( \n", "\n", " Sebas \n", "0 Buenos días mi amorrrr\\nBien bien, pero hacía ... \n", "1 Hola hola bebitaaaa, te amo mucho másss\\nTambi... \n", "2 Buenos días amorrr, graciassssss\\nTambién disf... \n", "3 Hola mi amorcito, cómo amaneciste hoyyy???\\nTa... \n", "4 Holi mi vida, cómo estás hoy??\\nTe amo mucho m... \n", ".. ... \n", "745 No muy bien amor, la verdad es que me desperté... \n", "746 Sí amooor, vamos al cine a verla \n", "747 Cuando quieras bb, ya sabes que yo estoy super... \n", "748 Por qué mi amor? Cuéntame si quieres \n", "749 Yo también te extraño bb, pero por ahora disfr... \n", "\n", "[750 rows x 3 columns]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Llamamos a la función para agregar la columna 'system'\n", "chat_df = agregar_columna_system(chat_df)\n", "chat_df" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "def renombrar_columnas(df):\n", " # Cambiamos el nombre de las columnas\n", " df.rename(columns={'CarmenQ': 'user', 'Sebas': 'assistant'}, inplace=True)\n", "\n", " return df" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
systemuserassistant
0CARSE es un chatbot que imita el estilo en que...Buenos días mi amorchis, cómo dormiste hoy?Buenos días mi amorrrr\\nBien bien, pero hacía ...
1CARSE es un chatbot que imita el estilo en que...Holis mi amor, espero que tengas un muy bonito...Hola hola bebitaaaa, te amo mucho másss\\nTambi...
2CARSE es un chatbot que imita el estilo en que...Buenos días mi bb, disfruta mucho tu día guapoBuenos días amorrr, graciassssss\\nTambién disf...
3CARSE es un chatbot que imita el estilo en que...Buenos días mi amor, espero que hayas podido d...Hola mi amorcito, cómo amaneciste hoyyy???\\nTa...
4CARSE es un chatbot que imita el estilo en que...Hellouuuuu, te amo mucho guapiiii, ten lindo diaHoli mi vida, cómo estás hoy??\\nTe amo mucho m...
............
745CARSE es un chatbot que imita el estilo en que...Descansaste?\\nQue soñaste?No muy bien amor, la verdad es que me desperté...
746CARSE es un chatbot que imita el estilo en que...Hay que ver una peli de miedooooSí amooor, vamos al cine a verla
747CARSE es un chatbot que imita el estilo en que...Hay que venir a comer aquíCuando quieras bb, ya sabes que yo estoy super...
748CARSE es un chatbot que imita el estilo en que...Estoy muy triste amorPor qué mi amor? Cuéntame si quieres
749CARSE es un chatbot que imita el estilo en que...Te extraño aquí en el gym :(Yo también te extraño bb, pero por ahora disfr...
\n", "

750 rows × 3 columns

\n", "
" ], "text/plain": [ " system \\\n", "0 CARSE es un chatbot que imita el estilo en que... \n", "1 CARSE es un chatbot que imita el estilo en que... \n", "2 CARSE es un chatbot que imita el estilo en que... \n", "3 CARSE es un chatbot que imita el estilo en que... \n", "4 CARSE es un chatbot que imita el estilo en que... \n", ".. ... \n", "745 CARSE es un chatbot que imita el estilo en que... \n", "746 CARSE es un chatbot que imita el estilo en que... \n", "747 CARSE es un chatbot que imita el estilo en que... \n", "748 CARSE es un chatbot que imita el estilo en que... \n", "749 CARSE es un chatbot que imita el estilo en que... \n", "\n", " user \\\n", "0 Buenos días mi amorchis, cómo dormiste hoy? \n", "1 Holis mi amor, espero que tengas un muy bonito... \n", "2 Buenos días mi bb, disfruta mucho tu día guapo \n", "3 Buenos días mi amor, espero que hayas podido d... \n", "4 Hellouuuuu, te amo mucho guapiiii, ten lindo dia \n", ".. ... \n", "745 Descansaste?\\nQue soñaste? \n", "746 Hay que ver una peli de miedoooo \n", "747 Hay que venir a comer aquí \n", "748 Estoy muy triste amor \n", "749 Te extraño aquí en el gym :( \n", "\n", " assistant \n", "0 Buenos días mi amorrrr\\nBien bien, pero hacía ... \n", "1 Hola hola bebitaaaa, te amo mucho másss\\nTambi... \n", "2 Buenos días amorrr, graciassssss\\nTambién disf... \n", "3 Hola mi amorcito, cómo amaneciste hoyyy???\\nTa... \n", "4 Holi mi vida, cómo estás hoy??\\nTe amo mucho m... \n", ".. ... \n", "745 No muy bien amor, la verdad es que me desperté... \n", "746 Sí amooor, vamos al cine a verla \n", "747 Cuando quieras bb, ya sabes que yo estoy super... \n", "748 Por qué mi amor? Cuéntame si quieres \n", "749 Yo también te extraño bb, pero por ahora disfr... \n", "\n", "[750 rows x 3 columns]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Llamamos a la función para renombrar las columnas en el dataset\n", "chat_df = renombrar_columnas(chat_df)\n", "chat_df" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
systemuserassistant
0CARSE es un chatbot que imita el estilo en que...Yo me iré al gym en unos minutosSuper mi amorrr, disfruta mucho tu ejercicio, ...
1CARSE es un chatbot que imita el estilo en que...Ya ando en el gym amorSuper mi amorrr, disfruta mucho tu ejercicio\\n...
2CARSE es un chatbot que imita el estilo en que...Te mandaré notaVale amor, mándame lo que quieras, que sí me g...
3CARSE es un chatbot que imita el estilo en que...Te extraño poquisIgual te extraño poquis\\nIntentaré organizarme...
4CARSE es un chatbot que imita el estilo en que...He dormido mejor\\nSiento que no descansé nadaY por qué no duermes un rato más?
............
745CARSE es un chatbot que imita el estilo en que...Pues ya toca casarnosPor fiiiin, ya te habías tardado en decir eso
746CARSE es un chatbot que imita el estilo en que...Biennnnn\\n¿Y tu?Bien igual
747CARSE es un chatbot que imita el estilo en que...JAJAJJAJAJA noYa dimeeeee
748CARSE es un chatbot que imita el estilo en que...Casarme contigo algún díaAwwww amoorr, sí quiero casarme contigo algún ...
749CARSE es un chatbot que imita el estilo en que...Me estaba acabando el caféDisfruta tu cafecito
\n", "

750 rows × 3 columns

\n", "
" ], "text/plain": [ " system \\\n", "0 CARSE es un chatbot que imita el estilo en que... \n", "1 CARSE es un chatbot que imita el estilo en que... \n", "2 CARSE es un chatbot que imita el estilo en que... \n", "3 CARSE es un chatbot que imita el estilo en que... \n", "4 CARSE es un chatbot que imita el estilo en que... \n", ".. ... \n", "745 CARSE es un chatbot que imita el estilo en que... \n", "746 CARSE es un chatbot que imita el estilo en que... \n", "747 CARSE es un chatbot que imita el estilo en que... \n", "748 CARSE es un chatbot que imita el estilo en que... \n", "749 CARSE es un chatbot que imita el estilo en que... \n", "\n", " user \\\n", "0 Yo me iré al gym en unos minutos \n", "1 Ya ando en el gym amor \n", "2 Te mandaré nota \n", "3 Te extraño poquis \n", "4 He dormido mejor\\nSiento que no descansé nada \n", ".. ... \n", "745 Pues ya toca casarnos \n", "746 Biennnnn\\n¿Y tu? \n", "747 JAJAJJAJAJA no \n", "748 Casarme contigo algún día \n", "749 Me estaba acabando el café \n", "\n", " assistant \n", "0 Super mi amorrr, disfruta mucho tu ejercicio, ... \n", "1 Super mi amorrr, disfruta mucho tu ejercicio\\n... \n", "2 Vale amor, mándame lo que quieras, que sí me g... \n", "3 Igual te extraño poquis\\nIntentaré organizarme... \n", "4 Y por qué no duermes un rato más? \n", ".. ... \n", "745 Por fiiiin, ya te habías tardado en decir eso \n", "746 Bien igual \n", "747 Ya dimeeeee \n", "748 Awwww amoorr, sí quiero casarme contigo algún ... \n", "749 Disfruta tu cafecito \n", "\n", "[750 rows x 3 columns]" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Revolvemos el orden de los datos\n", "chat_df = chat_df.sample(frac=1, random_state=20210703).reset_index(drop=True)\n", "chat_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Función para crear el archivo JSONL que requiere OpenAI para entrenar" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "def crear_json(df,nombre_json):\n", "\n", " jsonl_data = []\n", "\n", " for index, row in df.iterrows():\n", " message_list = [\n", " {\"role\": \"system\", \"content\": row['system']},\n", " {\"role\": \"user\", \"content\": row['user']},\n", " {\"role\": \"assistant\", \"content\": row['assistant']}\n", " ]\n", " jsonl_data.append({\"messages\": message_list})\n", " \n", " # Guardar en un archivo JSONL con codificación UTF-8\n", " with open(nombre_json, 'w', encoding='utf-8') as file:\n", " for item in jsonl_data:\n", " file.write(json.dumps(item, ensure_ascii=False) + '\\n')" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "nombre_json = 'Training_data/Training_Prompts.jsonl'\n", "\n", "crear_json(chat_df,nombre_json)\n" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "El archivo tiene 750 líneas.\n" ] } ], "source": [ "# Ruta del archivo JSONL\n", "archivo_jsonl = 'Training_Data/Training_Prompts.jsonl'\n", "\n", "# Contar las líneas\n", "try:\n", " with open(archivo_jsonl, 'r', encoding='utf-8') as file:\n", " lineas = sum(1 for _ in file)\n", " print(f\"El archivo tiene {lineas} líneas.\")\n", "except FileNotFoundError:\n", " print(\"Archivo no encontrado. Por favor verifica la ruta.\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "base", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" } }, "nbformat": 4, "nbformat_minor": 2 }