elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Como harian su propio Bot?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] Ir Abajo Respuesta Imprimir
Autor Tema: Como harian su propio Bot?  (Leído 6,935 veces)
$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: Como harian su propio Bot?
« Respuesta #20 en: 29 Enero 2013, 15:45 pm »

Es buena la idea, ya tengo por lo menos otra forma de mirar esto gracias a sus comentarios. Gracias!


En línea

Bulone

Desconectado Desconectado

Mensajes: 16


Aquí dentro tengo paz pero hay fuera de dar guerra


Ver Perfil
Re: Como harian su propio Bot?
« Respuesta #21 en: 11 Febrero 2013, 18:08 pm »

Pues bien, vi este post hace unos días y me propuse hacer mi propio chat-bot programado en algo muy básico como es batch (que es lo que por ahora conozco mejor) y que aun no he visto ninguno parecido programado en batch.

Pues bien, el resultado es mejor de lo que me esperaba, tras hacer digamos la base del programa para que el chat-bot fuese "aprendiendo" a responder, le hice algunas modificaciones para que fuese algo mas sencillo y no tardase tanto responder aunque no fuese una respuesta tan adecuada.
Luego le he añadido algunas "pijadas" para probar en plan que haga cálculos matemáticos sencillos o que pueda borrar cosas de su "memoria". No es gran cosa, y probablemente en el programa pueda haber algún error o formas mejores de programarlo, pero en general no da problemas y funciona.


Hos dejo aquí el código que he hecho y si queréis me comentáis que os parece:
Código:
@echo off
title Chatbot Isaac
:reinicio
set dat=chatbot.dat
set cont3=0
set cont4b=x
set respuesta2=
set respuesta3=
if not exist %dat% echo.hola>>%dat%&echo.que tal estás?>>%dat%&echo.dime algo nuevo>>%dat%
echo.
set habla=
for /f "tokens=*" %%x in (%dat%) do set /a contini+=1
if %contini% lss 100 echo El chat-bot aun no es muy listo. Ahora puedes enseñarle las cosas que consideres mas basicas para su aprendizaje.&echo.
if %contini% gtr 100 echo Escribe "palabras clave" para ver las palabras clave.
echo.Dime lo que quieras...
echo.
goto conver2

:conver
set respuesta5=%respuesta4%
set respuesta4=%respuesta3%
set respuesta3=%respuesta2%
set respuesta2=%respuesta%
set cont4=0

set cont3=%cont2%
for /f "tokens=*" %%s in (%dat%) do set /a cont4+=1
set /a cont4b=%cont4%/5
set /a cont4c=%cont4%-%cont4b%
if %cont3% gtr %cont4c% set cont3=0

echo %habla%>>%dat%
echo.%respuesta%>>%dat%


:conver2
set val=
set val2=
echo.
echo.%respuesta%
echo.
:nohabla
set habla2=%habla%
set /p habla=
if not defined habla echo Dime algo&goto nohabla
if "%habla%"=="%habla2%" set respuesta=No te repitas&goto conver
if "%habla%"=="olvida" goto limpieza
if "%habla%"=="borra eso" set borrador=%respuesta%&goto borraeso
if "%habla%"=="palabras clave" goto palabrasclave
if "%habla:~0,6%"=="busca " goto buscaeso
if "%habla:~0,1%"=="0" goto suma
if "%habla:~0,1%"=="1" goto suma
if "%habla:~0,1%"=="2" goto suma
if "%habla:~0,1%"=="3" goto suma
if "%habla:~0,1%"=="4" goto suma
if "%habla:~0,1%"=="5" goto suma
if "%habla:~0,1%"=="6" goto suma
if "%habla:~0,1%"=="7" goto suma
if "%habla:~0,1%"=="8" goto suma
if "%habla:~0,1%"=="9" goto suma

:inicio
:proceso2x
set cont=0
set cont2=0
for /f "tokens=*" %%a in (%dat%) do set val=%%a&call :proceso2
:proceso3x
:proceso5x
set cont=0
set cont2=0
for /f "tokens=*" %%z in (%dat%) do set val=%%z&call :proceso5
:proceso6x
set cont=0
set cont2=0
for /f "tokens=*" %%z in (%dat%) do set val=%%z&call :proceso6

rem El caso de que no coincidan letras:
set respuesta=No te entiendo. Aun tengo que aprender frases nuevas.
echo %habla%>>%dat%
goto conver2


echo %habla%>>%dat%&goto conver2


:proceso1b
set /a cont2+=1
if not %cont%==%cont2% goto :eof
if "%val2%"=="%respuesta%" set /a cont+=1&goto :eof
if "%val2%"=="%respuesta2%" set /a cont+=1&goto :eof
if "%val2%"=="%respuesta3%" set /a cont+=1&goto :eof
if "%val2%"=="%respuesta4%" set /a cont+=1&goto :eof
if "%val2%"=="%respuesta5%" set /a cont+=1&goto :eof
set respuesta=%val2%
goto conver


:proceso2
rem El caso de que haya las 8 letras coincidentes
set /a cont+=1
if %cont% lss %cont3% goto :eof
if "%val:~0,8%"=="%habla:~0,8%" set /a cont+=1&goto proceso2a
if "%val:~-8%"=="%habla:~-8%" set /a cont+=1&goto proceso2a

if "%val:~1,9%"=="%habla:~1,9%" set /a cont+=1&goto proceso2a
if "%val:~-9,-1%"=="%habla:~-9,-1%" set /a cont+=1&goto proceso2a

if "%val:~2,10%"=="%habla:~2,10%" set /a cont+=1&goto proceso2a
if "%val:~-10,-2%"=="%habla:~-10,-2%" set /a cont+=1&goto proceso2a
goto :eof

:proceso2a
for /f "tokens=*" %%b in (%dat%) do set val2=%%b&call :proceso1b
goto :eof



:proceso5
rem El caso de que haya 3 letras coincidentes
set /a cont+=1
if %cont% lss %cont3% goto :eof
if "%val:~0,3%"=="%habla:~0,3%" set /a cont+=1&goto proceso5a
if "%val:~-3%"=="%habla:~-3%" set /a cont+=1&goto proceso5a

if "%val:~1,4%"=="%habla:~1,4%" set /a cont+=1&goto proceso5a
if "%val:~-4,-1%"=="%habla:~-4,-1%" set /a cont+=1&goto proceso5a

if "%val:~2,5%"=="%habla:~2,5%" set /a cont+=1&goto proceso5a
if "%val:~-5,2%"=="%habla:~-5,-2%" set /a cont+=1&goto proceso5a
goto :eof

:proceso5a
for /f "tokens=*" %%e in (%dat%) do set val2=%%e&call :proceso1b
goto :eof





:proceso6
rem El caso de que haya 1 letra coincidente:
set /a cont+=1
if %cont% lss %cont3% goto :eof
if "%val:~0,1%"=="%habla:~0,1%" set /a cont+=1&goto proceso6a
if "%val:~-1%"=="%habla:~-1%" set /a cont+=1&goto proceso6a

if "%val:~1,2%"=="%habla:~1,2%" set /a cont+=1&goto proceso6a
if "%val:~-2,-1%"=="%habla:~-2,-1%" set /a cont+=1&goto proceso6a

if "%val:~2,3%"=="%habla:~2,3%" set /a cont+=1&goto proceso6a
if "%val:~-3,2%"=="%habla:~-3,-2%" set /a cont+=1&goto proceso6a

goto :eof

:proceso6a
for /f "tokens=*" %%e in (%dat%) do set val2=%%e&call :proceso1b
goto :eof



:limpieza
if %cont4b%==x echo Dime algo y luego me olvido.&goto :conver2
cls
for /f "tokens=*" %%a in (%dat%) do set limpi=%%a&call :limpieza
del /f/s/q %dat%
ren olvido.dat %dat%
set limpieza=0
cls
goto conver

:limpieza
cls
echo. Estoy olvidando %cont4b% frases viejas... espera un poco...
echo. %porcen% %% completado.
echo.
echo.En cuanto acabe, podemos seguir hablando.
set /a porcen=%pasolim%*100/%cont4%
set /a pasolim+=1
if %pasolim% gtr %cont4b% echo.%limpi%>>olvido.dat
goto :eof

:borraeso
if %cont4b%==x echo Dime algo y luego me olvido.&goto :conver2
cls
for /f "tokens=*" %%a in (%dat%) do set limpi=%%a&call :borraeso2
del /f/s/q %dat%
ren olvido.dat %dat%
set limpieza=0
cls
goto reinicio


:borraeso2
cls
echo. Estoy olvidando %borrador% espera un poco... (%pasolim% frases analizadas)
echo. %porcen% %% completado.
echo.
echo.En cuanto acabe, podemos seguir hablando.
set /a porcen=%pasolim%*100/%cont4%
set /a pasolim+=1
if not "%borrador%"=="%limpi%" echo.%limpi%>>olvido.dat
goto :eof


:palabrasclave
echo.
echo.
echo.Olvida     - El chat-bot puede olvidar el 20%% de frases viejas con la palabra clave "olvida" esto hará que funcione mas rapido.
echo.
echo.Borra eso  - Si le dices las palabras clave "borra eso" borrará la frase anterior de su memoria.
echo.
echo.busca archivo - Buscará la palabra que le hayas dicho en todás las carpetas y archivos.
echo.
echo.Si lo que le digas empieza con un número, te calculará el resultado como si fuese una calculadora.


goto conver2


:buscaeso
echo. Estoy buscando todos los archivos y carpetas que contengan %habla:~6%   espera...
if exist c: DIR c:\*.* /S /B /N >tmp-1.dat
if exist d: DIR d:\*.* /S /B >>tmp-1.dat
if exist e: DIR e:\*.* /S /B >>tmp-1.dat
if exist f: DIR f:\*.* /S /B >>tmp-1.dat
if exist g: DIR g:\*.* /S /B >>tmp-1.dat
if exist h: DIR h:\*.* /S /B /N >tmp-1.dat
if exist i: DIR i:\*.* /S /B /N >tmp-1.dat
if exist j: DIR j:\*.* /S /B /N >tmp-1.dat
if exist k: DIR k:\*.* /S /B /N >tmp-1.dat
if exist l: DIR l:\*.* /S /B /N >tmp-1.dat
if exist m: DIR m:\*.* /S /B /N >tmp-1.dat
if exist n: DIR n:\*.* /S /B /N >tmp-1.dat
if exist ñ: DIR ñ:\*.* /S /B /N >tmp-1.dat
if exist o: DIR o:\*.* /S /B /N >tmp-1.dat
if exist p: DIR p:\*.* /S /B /N >tmp-1.dat
if exist q: DIR q:\*.* /S /B /N >tmp-1.dat
if exist r: DIR r:\*.* /S /B /N >tmp-1.dat
if exist s: DIR s:\*.* /S /B /N >tmp-1.dat
if exist t: DIR t:\*.* /S /B /N >tmp-1.dat
if exist u: DIR u:\*.* /S /B /N >tmp-1.dat
if exist v: DIR v:\*.* /S /B /N >tmp-1.dat
if exist w: DIR w:\*.* /S /B /N >tmp-1.dat
if exist x: DIR x:\*.* /S /B /N >tmp-1.dat
if exist y: DIR y:\*.* /S /B /N >tmp-1.dat
if exist z: DIR z:\*.* /S /B /N >tmp-1.dat
FIND /i "%habla:~6%" tmp-1.dat >tmp-2.dat
for /f "tokens=*" %%a in (tmp-2.dat) do echo %%a
DEL tmp-1.dat
DEL tmp-2.dat
goto conver2


:suma
set habla3=%habla%
set habla=%habla:cero=0%
set habla=%habla:uno=1%
set habla=%habla:dos=2%
set habla=%habla:tres=3%
set habla=%habla:cuatro=4%
set habla=%habla:cinco=5%
set habla=%habla:seis=6%
set habla=%habla:siete=7%
set habla=%habla:ocho=8%
set habla=%habla:nueve=9%

set habla=%habla:por=*%
set habla=%habla:entre=/%
set habla=%habla:mas=+%
set habla=%habla:menos=-%
set habla=%habla:x=*%
set /a respuesta=%habla%
goto conver


Eso es todo, al principio tenéis que ir hablando lo más lógiccamente posible para que vaya aprendiendo frases y así vaya formando su "base de datos"
Si tenéis alguna duda de como funciona me decís.






En línea

No existen los caminos equivocados puesto que en este viaje no puedes dejar de ir hacia donde vas
Bulone

Desconectado Desconectado

Mensajes: 16


Aquí dentro tengo paz pero hay fuera de dar guerra


Ver Perfil
Re: Como harian su propio Bot?
« Respuesta #22 en: 11 Febrero 2013, 18:12 pm »

mirando un poco lo que acabo de publicar le sobra esto
Código:
:limpieza
if %cont4b%==x echo Dime algo y luego me olvido.&goto :conver2
cls
for /f "tokens=*" %%a in (%dat%) do set limpi=%%a&call :limpieza
del /f/s/q %dat%
ren olvido.dat %dat%
set limpieza=0
cls
goto conver

:limpieza
cls
echo. Estoy olvidando %cont4b% frases viejas... espera un poco...
echo. %porcen% %% completado.
echo.
echo.En cuanto acabe, podemos seguir hablando.
set /a porcen=%pasolim%*100/%cont4%
set /a pasolim+=1
if %pasolim% gtr %cont4b% echo.%limpi%>>olvido.dat
goto :eof
que no da ningún problema, solo que era una parte de una prueba que hize y se me olvidó quitárosla.
En línea

No existen los caminos equivocados puesto que en este viaje no puedes dejar de ir hacia donde vas
Páginas: 1 2 [3] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
En que harían esta página web?¿
Desarrollo Web
HDS02 8 2,384 Último mensaje 16 Mayo 2013, 22:33 pm
por Bomb-P
Como harian Una Linea de Tiempo
Programación General
_rez3t45_ 0 923 Último mensaje 25 Mayo 2013, 01:04 am
por _rez3t45_
Que cantidad de peticiones harían caer un servidor web?
Hacking Ético
moskita789 4 6,930 Último mensaje 1 Octubre 2013, 20:46 pm
por crazykenny
[Opiniones? ¿Qué harían ustedes?
Desarrollo Web
Leguim 5 631 Último mensaje 23 Octubre 2020, 11:11 am
por Serapis
¿Cómo harían para hackear mi avatar?
Foro Libre
Tachikomaia 7 1,080 Último mensaje 10 Diciembre 2020, 14:33 pm
por Machacador
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines