Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 23 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
## Tutorial-Chatterbot ##

Tutorial de como crear su propio chat bot paso a paso y se detallan las especificaciones de como personalizarlo para distintos usos
s
Tutorial de como crear su propio chat bot paso a paso y se detallan las especificaciones de como personalizarlo para distintos usos.

# Requisitos previos: #
Para poder utilizar chatterbot hay que instalar:

Expand Down Expand Up @@ -38,13 +38,13 @@ Para Windows (32-bit binary installation)

# Entrenamiento:

Antes de crear alguna instancia del bot este necesita una base de datos con la cual procesar las frases que se le entreguen.
Antes de crear alguna instancia del bot, este necesita una base de datos con la cual procesar las frases que se le entreguen.

Para este objetivo la libreria chatterbot ofrece cuatro metodos de entrenamiento:

1) ListTrainer

Este método consiste en hacer entrenar al bot en base a una lista donde cada elemento es una frase de una conversacion y se rige segun un orden donde el elemento en la posicion i+1 corresponde a la respuesta a la frase en la posicion i. En otras palabras, la lista que recibe el bot es una secuencia de frases ordenadas secuencialmente que forman una sola conversacion. Cabe destacar que el bot puede recibir más de una lista para entrenar.
Este método consiste en hacer entrenar al bot en base a una lista donde cada elemento es una frase de una conversación y se rige segun un orden donde el elemento en la posición i+1 corresponde a la respuesta a la frase en la posición i. En otras palabras, la lista que recibe el bot es una secuencia de frases ordenadas secuencialmente que forman una sola conversacion. Cabe destacar que el bot puede recibir más de una lista para entrenar.

Ejemplo:
```python
Expand All @@ -66,12 +66,12 @@ chatterbot.train([
"El sistema se ha caido, intente mas tarde",
"rayos"])
```
Tambien es posible agregar una lista con una frase que este en otra conversacion, de esta forma el bot puede responder dos cosas distintas al mismo input
También es posible agregar una lista con una frase que este en otra conversación, de esta forma el bot puede responder dos cosas distintas al mismo input


2) ChatterBotCorpusTrainer

Este entre al bot con una base de datos que viene en la libreria chatterbot (se les conoce como Corpus) de algun idioma especifico
Este entrena al bot con una base de datos que viene en la libreria chatterbot (se les conoce como Corpus) de algún idioma especifico


> from chatterbot.trainers import ChatterBotCorpusTrainer
Expand All @@ -83,7 +83,7 @@ chatterbot.set_trainer(ChatterBotCorpusTrainer)
"chatterbot.corpus.english"
)

Si no se desea entrenar al bot con todo el corpus esta la posibilidad de solamente
Si no se desea entrenar al bot con todo el corpus está la posibilidad de solamente

chatterbot.train(
"chatterbot.corpus.english.greetings",
Expand All @@ -92,24 +92,24 @@ chatterbot.train(

3) UbuntuCorpusTrainer

Este entrenador entrena automaticamente al bot utilizando un data set que posee casi un millon de conversaciones, sin embargo se encuentra en idioma ingles.
Este entrenador enseña automaticamente al bot utilizando un data set que posee casi un millon de conversaciones, sin embargo se encuentra en idioma ingles.

4) TwitterTrainer

Permite entrenar con tweets de Twitter



Para seleccionar el entrenador es posible agregarlo como parametro al bot al momento de isntanciarlo en vez de utilizar el metodo "set trainer"
Para seleccionar el entrenador es posible agregarlo como parametro al bot al momento de instanciarlo en vez de utilizar el método "set trainer"

>chatbot = ChatBot(
'Ejemplo',
trainer='chatterbot.trainers.ChatterBotCorpusTrainer'
)

Para ver el source del codigo de este ultimo entrenador ingrese al siguiente link http://chatterbot.readthedocs.io/en/stable/training.html
Para ver el source del codigo de este último entrenador ingrese al siguiente link http://chatterbot.readthedocs.io/en/stable/training.html

Ademas de utilizar estos entrenadores tambien es posible entrenar a tu chatbot mediante inputs manuales:
Ademas de utilizar estos entrenadores también es posible entrenar a tu chatbot mediante inputs manuales:
> chatbot = ChatBot("alumno")

> while True:
Expand All @@ -122,8 +122,8 @@ Ademas de utilizar estos entrenadores tambien es posible entrenar a tu chatbot m

# Definiendo el contenedor del bot:

Por defecto, si no se especifica que tipo de archivo contendra la base de datos del bot este por defecto guardara todo en un archivo database.db.
Si se desea optar por otro tipo de almacenaje se debe especificar en los parametros del bot el tipo de almacenaje y el archivo donde se guardaran los datos antes de entrenarlo:
Por defecto, si no se especifica que tipo de archivo contendrá la base de datos del bot, este por defecto guardará todo en un archivo database.db.
Si se desea optar por otro tipo de almacenaje, se debe especificar en los parametros del bot el tipo de almacenaje y el archivo donde se guardarán los datos antes de entrenarlo:

>chatbot = ChatBot(
'Ejemplo almacen',
Expand All @@ -135,29 +135,29 @@ Si se desea optar por otro tipo de almacenaje se debe especificar en los paramet

# Instanciando el Bot:

Una vez entrenado el bot ahora lo instanciaremos para poder hablar con el.
Una vez entrenado el bot ahora lo instanciaremos para poder hablar con él.

Es bastante importante que agreguemos un parametro llamado Read_only=True, ya que con esto el bot dejara de aprender los inputs que reciba y solamente procesará la frase que recibio y entregará una respuesta.
Es bastante importante que agreguemos un parámetro llamado Read_only=True, ya que con esto el bot dejará de aprender los inputs que reciba y solamente procesará la frase que recibió y entregará una respuesta.

El bot que se instancie puede recibir distintos parametros, lo cual lo hace bastante personalizable, pero el más básico es:

```python
from chatterbot import ChatBot
chatbot = ChatBot("Samuel Simplesco", read_only=True)```

Este bot tomara una base de datos predefinida (database.db) ya que ninguna fue especificada en los parametros.
Este bot tomará una base de datos predefinida (database.db) ya que ninguna fue especificada en los parametros.

Ahora, para darle un input y obtener una respuesta se utiliza el metodo .get_response(string). Este metodo entega un string, a menos que el parametro output_format del bot sea distinto a 'text'.
Ahora, para darle un input y obtener una respuesta se utiliza el metodo .get_response(string). Este método entega un string, a menos que el parámetro output_format del bot sea distinto a 'text'.
```python
entrada = input("Ingrese frase")
respuesta = chatbot.get_response(entrada)
print(respuesta)```

# Creando tus propias clases:

Como ya se menciono antes esta libreria es bastante versatil y personalizable, principalmente porque permite crear tus propios adaptadores logicos, metodos de almacenamiento, metodo de entrenamiento, basicamente puedes hace run bot desde cero.
Como ya se menciono antes esta libreria es bastante versatil y personalizable, principalmente porque permite crear tus propios adaptadores lógicos, métodos de almacenamiento, método de entrenamiento, básicamente puedes hace run bot desde cero.

Para esto basta con crear tu clase que herede de e implemente los metodos básicos de esa clase. He aqui un ejemplo al crear un adaptador logico propio:
Para esto basta con crear tu clase que herede e implemente los metodos básicos de esa clase. He aqui un ejemplo al crear un adaptador logico propio:

```python
from chatterbot.logic import LogicAdapter
Expand Down Expand Up @@ -194,19 +194,19 @@ class MyLogicAdapter(LogicAdapter):

```

De la misma forma se pueden crear StorageAdapter, Trainers, entre otros. Para ver como se componen cada clase y que metodos deben ser implementados se debe ingresar al github https://github.com/gunthercox/ChatterBot y ver el codigo de cada clase .
De la misma forma se pueden crear StorageAdapter, Trainers, entre otros. Para ver como se componen cada clase y qué métodos deben ser implementados se debe ingresar al github https://github.com/gunthercox/ChatterBot y ver el código de cada clase .



# Instrucciones para el tutorial:

En la carpeta Tutorial se encuentran dos archivos .py, con uno de estos es posible entrenar de forma rapida un chatbot mediante el entrenador ChatterBotCorpusTrainer o entrenar un bot con ListTrainer. Con el otro es posible hablar con cualquiera de los dos bots mediante la consola de python.
En la carpeta Tutorial se encuentran dos archivos .py, con uno de estos es posible entrenar de forma rápida un chatbot mediante el entrenador ChatterBotCorpusTrainer o entrenar un bot con ListTrainer. Con el otro es posible hablar con cualquiera de los dos bots mediante la consola de python.

Para seleccionar cada uno se deben seguir las isntrucciones indicadas en los mismos archivos

Si aparecen advertencias indeseadas en la consola, ya sean por el JsonFileStorageAdapter o por la libreria nltk siga estas instrucciones:

Para evitar el warning de JsonFileStorageAdapter debe agregar el keyword silence_performance_warning=True entre los parametros del bot.
Para evitar el warning de JsonFileStorageAdapter debe agregar el keyword silence_performance_warning=True entre los parámetros del bot.

```python
chatbot = ChatBot(
Expand All @@ -219,7 +219,7 @@ chatbot = ChatBot(
database='./db_tutorial_esp.json')```
Este mensaje aparece pues se recomienda no utilizar json para procesos demasiado grandes.

Para evitar los mensajes de la libreria la primera vez que corra su codigo debe poseer los permisos de la libreria, y para esto agregue las siguientes lineas de codigo al inicio de su programa, pero para las proximas ocasiones en que lo corra borrelas.
Para evitar los mensajes de la libreria la primera vez que corra su codigo debe poseer los permisos de la librería, y para esto agregue las siguientes lineas de codigo al inicio de su programa, pero para las próximas ocasiones en que lo corra bórrelas.

```python
import ssl
Expand Down