{ "cells": [ { "cell_type": "code", "execution_count": 2, "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": 3, "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": 4, "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": 5, "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": 6, "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": 7, "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": 8, "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": 9, "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": 10, "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": 10, "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": 12, "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": 13, "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...
.........
665Dime algo bonitoHmmmm vemos. Deposítame 5 mil pesotes y va JAJ...
666Dime algo bonitoYo digo que tal vez el universo ha dicho que e...
667Oye dime algo bonitoDeja veo si ya me depositaste en mi cuenta y v...
668Oye dime algo bonitoAlgo bonito? Tuuuuu, mi C, estás hermosa\\nTeng...
669Oye dime algo bonitoSolo si veo un depósito en mi cuenta en menos ...
\n", "

670 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", "665 Dime algo bonito \n", "666 Dime algo bonito \n", "667 Oye dime algo bonito \n", "668 Oye dime algo bonito \n", "669 Oye dime algo bonito \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", "665 Hmmmm vemos. Deposítame 5 mil pesotes y va JAJ... \n", "666 Yo digo que tal vez el universo ha dicho que e... \n", "667 Deja veo si ya me depositaste en mi cuenta y v... \n", "668 Algo bonito? Tuuuuu, mi C, estás hermosa\\nTeng... \n", "669 Solo si veo un depósito en mi cuenta en menos ... \n", "\n", "[670 rows x 2 columns]" ] }, "execution_count": 13, "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": 14, "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": 15, "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...
............
665CARSE es un chatbot que imita el estilo en que...Dime algo bonitoHmmmm vemos. Deposítame 5 mil pesotes y va JAJ...
666CARSE es un chatbot que imita el estilo en que...Dime algo bonitoYo digo que tal vez el universo ha dicho que e...
667CARSE es un chatbot que imita el estilo en que...Oye dime algo bonitoDeja veo si ya me depositaste en mi cuenta y v...
668CARSE es un chatbot que imita el estilo en que...Oye dime algo bonitoAlgo bonito? Tuuuuu, mi C, estás hermosa\\nTeng...
669CARSE es un chatbot que imita el estilo en que...Oye dime algo bonitoSolo si veo un depósito en mi cuenta en menos ...
\n", "

670 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", "665 CARSE es un chatbot que imita el estilo en que... \n", "666 CARSE es un chatbot que imita el estilo en que... \n", "667 CARSE es un chatbot que imita el estilo en que... \n", "668 CARSE es un chatbot que imita el estilo en que... \n", "669 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", "665 Dime algo bonito \n", "666 Dime algo bonito \n", "667 Oye dime algo bonito \n", "668 Oye dime algo bonito \n", "669 Oye dime algo bonito \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", "665 Hmmmm vemos. Deposítame 5 mil pesotes y va JAJ... \n", "666 Yo digo que tal vez el universo ha dicho que e... \n", "667 Deja veo si ya me depositaste en mi cuenta y v... \n", "668 Algo bonito? Tuuuuu, mi C, estás hermosa\\nTeng... \n", "669 Solo si veo un depósito en mi cuenta en menos ... \n", "\n", "[670 rows x 3 columns]" ] }, "execution_count": 15, "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": 16, "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": 17, "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...
............
665CARSE es un chatbot que imita el estilo en que...Dime algo bonitoHmmmm vemos. Deposítame 5 mil pesotes y va JAJ...
666CARSE es un chatbot que imita el estilo en que...Dime algo bonitoYo digo que tal vez el universo ha dicho que e...
667CARSE es un chatbot que imita el estilo en que...Oye dime algo bonitoDeja veo si ya me depositaste en mi cuenta y v...
668CARSE es un chatbot que imita el estilo en que...Oye dime algo bonitoAlgo bonito? Tuuuuu, mi C, estás hermosa\\nTeng...
669CARSE es un chatbot que imita el estilo en que...Oye dime algo bonitoSolo si veo un depósito en mi cuenta en menos ...
\n", "

670 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", "665 CARSE es un chatbot que imita el estilo en que... \n", "666 CARSE es un chatbot que imita el estilo en que... \n", "667 CARSE es un chatbot que imita el estilo en que... \n", "668 CARSE es un chatbot que imita el estilo en que... \n", "669 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", "665 Dime algo bonito \n", "666 Dime algo bonito \n", "667 Oye dime algo bonito \n", "668 Oye dime algo bonito \n", "669 Oye dime algo bonito \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", "665 Hmmmm vemos. Deposítame 5 mil pesotes y va JAJ... \n", "666 Yo digo que tal vez el universo ha dicho que e... \n", "667 Deja veo si ya me depositaste en mi cuenta y v... \n", "668 Algo bonito? Tuuuuu, mi C, estás hermosa\\nTeng... \n", "669 Solo si veo un depósito en mi cuenta en menos ... \n", "\n", "[670 rows x 3 columns]" ] }, "execution_count": 17, "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": 18, "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...Tengo mucho sueño aúnAy amorcito, a ver si te echas a dormir en el ...
1CARSE es un chatbot que imita el estilo en que...Ay amor que frío hacePues que bueno, mínimo no estamos sudando
2CARSE es un chatbot que imita el estilo en que...Ya adivina\\nLo que se te ocurraEsque no se me ocurrió nada mas
3CARSE es un chatbot que imita el estilo en que...Biennnn, pero tengo sueño aúnSi tienes descanso, duerme
4CARSE es un chatbot que imita el estilo en que...Yo te amo massssssEso es mega feik eh
............
665CARSE es un chatbot que imita el estilo en que...Pues ya toca casarnosPor fiiiin, ya te habías tardado en decir eso
666CARSE es un chatbot que imita el estilo en que...Biennnnn\\n¿Y tu?Bien igual
667CARSE es un chatbot que imita el estilo en que...JAJAJJAJAJA noYa dimeeeee
668CARSE es un chatbot que imita el estilo en que...Casarme contigo algún díaAwwww amoorr, sí quiero casarme contigo algún ...
669CARSE es un chatbot que imita el estilo en que...Me estaba acabando el caféDisfruta tu cafecito
\n", "

670 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", "665 CARSE es un chatbot que imita el estilo en que... \n", "666 CARSE es un chatbot que imita el estilo en que... \n", "667 CARSE es un chatbot que imita el estilo en que... \n", "668 CARSE es un chatbot que imita el estilo en que... \n", "669 CARSE es un chatbot que imita el estilo en que... \n", "\n", " user \\\n", "0 Tengo mucho sueño aún \n", "1 Ay amor que frío hace \n", "2 Ya adivina\\nLo que se te ocurra \n", "3 Biennnn, pero tengo sueño aún \n", "4 Yo te amo massssss \n", ".. ... \n", "665 Pues ya toca casarnos \n", "666 Biennnnn\\n¿Y tu? \n", "667 JAJAJJAJAJA no \n", "668 Casarme contigo algún día \n", "669 Me estaba acabando el café \n", "\n", " assistant \n", "0 Ay amorcito, a ver si te echas a dormir en el ... \n", "1 Pues que bueno, mínimo no estamos sudando \n", "2 Esque no se me ocurrió nada mas \n", "3 Si tienes descanso, duerme \n", "4 Eso es mega feik eh \n", ".. ... \n", "665 Por fiiiin, ya te habías tardado en decir eso \n", "666 Bien igual \n", "667 Ya dimeeeee \n", "668 Awwww amoorr, sí quiero casarme contigo algún ... \n", "669 Disfruta tu cafecito \n", "\n", "[670 rows x 3 columns]" ] }, "execution_count": 18, "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": 19, "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": 20, "metadata": {}, "outputs": [], "source": [ "nombre_json = 'Training_data/Training_Prompts.jsonl'\n", "\n", "crear_json(chat_df,nombre_json)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Separación del File de entrenamiento en partes iguales" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "El archivo tiene 670 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": 23, "metadata": {}, "outputs": [], "source": [ "def dividir_jsonl(ruta_original, num_partes):\n", " # Leer el archivo original\n", " with open(ruta_original, 'r', encoding='utf-8') as file:\n", " lineas = file.readlines()\n", "\n", " # Calcular el tamaño de cada parte\n", " total_lineas = len(lineas)\n", " tamaño_parte = math.ceil(total_lineas / num_partes)\n", "\n", " # Dividir y guardar las partes\n", " for i in range(num_partes):\n", " parte = lineas[i*tamaño_parte:(i+1)*tamaño_parte]\n", " ruta_nueva = ruta_original.replace('.jsonl', f'_{i+1}.jsonl')\n", " with open(ruta_nueva, 'w', encoding='utf-8') as new_file:\n", " new_file.writelines(parte)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "dividir_jsonl('Training_Data/Training_Prompts.jsonl', 5)" ] }, { "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 }