<commit_before>{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# NLP and TM Módulo 4 \n",
    "## Taller 2: recurrent neural networks\n",
    "\n",
    "**Nombres:**\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Cargue el modelo de RNN entrenado con la Biblia: https://github.com/lin99/NLPTM-2016/blob/gh-pages/4.Docs/grnn_best.tar"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. Calculando la siguiente palabra más probable\n",
    "\n",
    "Construya una función que calcule la palabra, que con alta probailidad, puede seguir a otra. Formalmente, dada una palabra $w_i$ se debe calcular $w_{i+1}$: \n",
    "\n",
    "$$ w_{i+1} = \\arg \\max_{w_{i+1}} P(w_{i+1}|w_i) $$\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def next_word(word):\n",
    "    # Su código aquí\n",
    "    return ''"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Explique claramente como es su estrategia. Pruebe la función con diferentes ejemplos. Discuta los resultados."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. Jugando al ahorcado\n",
    "\n",
    "Diseñe una función que sea capaz de encontrar los caracteres faltantes en una palabra. La función deber funcionar de la siguiente manera:\n",
    "\n",
    "```\n",
    ">>> hangman('_al_br_')\n",
    "'palabra'\n",
    "\n",
    ">>> hangman('_erp__nt_')\n",
    "'serpiente'\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def hangman(word):\n",
    "    ### Su código debe ir aquí\n",
    "    return ''"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Explique claramente como es su estrategia. Pruebe la función con diferentes ejemplos. Discuta los resultados."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. Probando un modelo alternativo\n",
    "\n",
    "Cargue el modelo de RNN entrenado con un conjunto de datos alternativo: https://github.com/lin99/NLPTM-2016/blob/gh-pages/4.Docs/reg1_best.tar.\n",
    "\n",
    "Genere texto con el modelo y trate de determinar con qué tipo de datos se entrenó originalmente el modelo.\n",
    "\n",
    "Pruebe las funciones del punto 1 y 2 con el nuevo modelo. Discuta los resultados. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "**Nota:** no olvide incluir los nombres de los integrantes del grupo (máximo 2) en el encabezado del notebook. Remita el notebook al siguiente *file request* de Dropbox: https://www.dropbox.com/request/k4GFiKHjl8OuE9sCiq1N."
   ]
  }
 ],<commit_msg>Update to assign2<commit_after>{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# NLP and TM Módulo 4 \n",
    "## Taller 2: recurrent neural networks\n",
    "\n",
    "**Nombres:**\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Cargue el modelo de RNN entrenado con la Biblia: https://github.com/lin99/NLPTM-2016/blob/gh-pages/4.Docs/grnn_best.tar"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. Calculando la siguiente palabra más probable\n",
    "\n",
    "Construya una función que calcule la palabra, que con alta probailidad, puede seguir a otra. Formalmente, dada una palabra $w_i$ se debe calcular $w_{i+1}$: \n",
    "\n",
    "$$ w_{i+1} = \\arg \\max_{w_{i+1}} P(w_{i+1}|w_i) $$\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def next_word(word):\n",
    "    # Su código aquí\n",
    "    return ''"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Explique claramente como es su estrategia. Pruebe la función con diferentes ejemplos. Discuta los resultados."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. Jugando al ahorcado\n",
    "\n",
    "Diseñe una función que sea capaz de encontrar los caracteres faltantes en una palabra. La función deber funcionar de la siguiente manera:\n",
    "\n",
    "```\n",
    ">>> hangman('_al_br_')\n",
    "'palabra'\n",
    "\n",
    ">>> hangman('_erp__nt_')\n",
    "'serpiente'\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def hangman(word):\n",
    "    ### Su código debe ir aquí\n",
    "    return ''"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Explique claramente como es su estrategia. Pruebe la función con diferentes ejemplos. Discuta los resultados."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. Probando un modelo alternativo\n",
    "\n",
    "Cargue el modelo de RNN entrenado con un conjunto de datos alternativo: https://github.com/lin99/NLPTM-2016/blob/gh-pages/4.Docs/reg1_best.tar.\n",
    "\n",
    "Genere texto con el modelo y trate de determinar con qué tipo de datos se entrenó originalmente el modelo.\n",
    "\n",
    "Pruebe las funciones del punto 1 y 2 con el nuevo modelo. Discuta los resultados.\n",
    "\n",
    "Cuando cargue el archivo de texto de entrenamiento utilice el siguiente código:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Load training file to get vocabulary\n",
    "text_file = 'reg1.txt' # input file\n",
    "with codecs.open(text_file, 'r', 'utf-8') as f:\n",
    "    data = f.read()\n",
    "chars = [u'\\u0432', u'\\u1293', u'\\u2014', u'\\u2018', u'\\u201c', u'\\U00061ba1', u' ', u'$', u'(', u',', u'\\xaf', u'\\\\', u'\\u03b1', u'0', u'\\xb3', u'4', u'\\xb7', u'8', u'\\xbb', u'\\u203c', u'\\xbf', u'@', u'\\u9839', u'\\xd7', u'\\u263b', u'\\u05e1', u'`', u'\\xe3', u'd', u'\\xe7', u'h', u'l', u'\\xef', u'p', u'\\xf3', u't', u'x', u'\\ufffd', u'|', u'\\ufeff', u'\\u2003', u'j', u'\\u200b', u'\\U000ee28c', u'\\u2013', u'\\xa0', u'#', u\"'\", u'\\xa8', u'+', u'/', u'\\xb0', u'3', u'\\xb4', u'7', u';', u'?', u'\\U00065ca1', u'\\u044b', u'\\u2022', u'[', u'_', u'\\u0161', u'\\xe0', u'c', u'\\U00061b65', u'\\xe4', u'g', u'\\xe8', u'k', u'\\u2026', u'\\xec', u'o', u's', u'\\u0434', u'\\xf4', u'w', u'{', u'\\xfc', u'\\U00061285', u'\\u2030', u'\\n', u'\\ud299', u'\\xa1', u'\"', u'&', u'\\xa9', u'*', u'\\xad', u'.', u'\\xb1', u'2', u'6', u':', u'\\xbd', u'>', u'\\u0436', u'\\u2663', u'\\u2665', u'^', u'\\xe1', u'b', u'f', u'\\xe9', u'\\u266a', u'\\xed', u'n', u'\\xf1', u'r', u'v', u'\\xf9', u'z', u'\\xfd', u'\\u266b', u'~', u'\\t', u'\\u2113', u'\\x92', u'\\u2019', u'\\u201d', u'!', u'\\u9ba0', u'\\xa2', u'%', u'\\u1ba4', u')', u'\\xaa', u'-', u'\\U0006192f', u'\\xae', u'1', u'5', u'9', u'\\xba', u'=', u'\\u0441', u'\\u0430', u'\\U000ee825', u']', u'a', u'\\xe2', u'e', u'i', u'\\xea', u'm', u'q', u'\\xf2', u'u', u'\\u92a8', u'y', u'\\xfa', u'}']\n",
    "vocab_size = len(chars)\n",
    "char_to_ix = {ch: i for i, ch in enumerate(chars)}\n",
    "ix_to_char = {i: ch for i, ch in enumerate(chars)}\n",
    "print \"Total number of chars:\", len(data)\n",
    "print \"Vocabulary size:\", vocab_size"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "**Nota:** no olvide incluir los nombres de los integrantes del grupo (máximo 2) en el encabezado del notebook. Remita el notebook al siguiente *file request* de Dropbox: https://www.dropbox.com/request/k4GFiKHjl8OuE9sCiq1N."
   ]
  }
 ],
{'fraction_non_alphanumeric': 0.23386484434320426, 'fraction_numerical': 0.03366236395849152, 'mean_word_length': 2.750830564784053, 'pattern_counts': {'":': 82, '<': 3, '<?xml version=': 0, '>': 16, 'https://': 6, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '726255', 'n_tokens_mistral': 3515, 'n_tokens_neox': 3335, 'n_words': 779}