CAAD
http://foro.caad.es/

[SPAC] PUBLICADO: Verbos-gramática VS objeto-acción
http://foro.caad.es/viewtopic.php?f=15&t=4534
Página 1 de 1

Autor:  Invitado [ 17 Ene 2011 11:26 ]
Asunto:  [SPAC] PUBLICADO: Verbos-gramática VS objeto-acción

Artículo publicado
-------------------

El artículo "Verbos-gramática VS objeto-acción" ha sido validado por
Jenesis.

** Verbos-gramática VS objeto-acción **
por Jenesis el Lunes 17 de enero de 2011

Mi experiencia con AGE ha ido creciendo junto a mi aventura y ahora mismo
mi código es un compendio de como hacer la misma cosa de varios modos
diferentes, unas bastante más efectivas que otras. Pero aunque lo que voy
a decir no sea muy consecuente con lo que realmente he hecho en AGE, espero
que explique el concepto de objeto en AGE, tal como yo lo veo.

A pesar de que es algo que ya contemplan algunos parsers de hoy en día,
me gustaría profundizar un poco en los conceptos "verbo" y "acción",
tanto desde la perspectiva real, como de su aplicación en la programación
de conversacionales.

En el lenguaje real, un verbo aplicado a diferentes objetos no siempre
presupone la misma acción sobre (...)

-} http://spac.caad.es/spip.php?article253

Autor:  jenesis [ 17 Ene 2011 13:07 ]
Asunto:  Re: [SPAC] PUBLICADO: Verbos-gramática VS objeto-acción

He vuelto a tener que aprobar el mensaje, parece que el usuario SPAC sigue sin ser reconocido por el foro. Estaré alerta para aprobar futuros anuncios de publicaciones en el webzine, pero si alguien ve que su artículo no sale aquí anunciado, que me avise.

Saludos
Jenesis

Autor:  dddddd [ 17 Ene 2011 13:26 ]
Asunto:  Re: [SPAC] PUBLICADO: Verbos-gramática VS objeto-acción

Muy bueno jenesis. Unos ejemplos excelentes para ilustrar un importante tema.

Autor:  dddddd [ 19 Ene 2011 07:47 ]
Asunto:  Re: [SPAC] PUBLICADO: Verbos-gramática VS objeto-acción

Pongo un pseudo-python para ilustrar un comentario. En spac no lo consigo darle formato.

Código:
class Caballo():
    def asociar_accion(contexto_parser):
        # llamada por el parser
        if (contexto_parser.str_verbo == 'montar'):
            # informamos de las acciones posibles para ese verbo
            # podremos usar el contexto que nos da el parser (CD, CI, etc.)
            if (contexto.tal == cual and ....):
                # hay contexto suficiente, una única UA
                UAs = (UA_poner_encima)
            (...)   
            else:
                # no hay contexto suficiente, informamos de todas las opciones
                UAs = (UA_poner_encima, UA_acto_sexual) #lista en python
            return UAs

    def acc_poner_encima(contexto_accion):
    # llamada por el parser
        (...)

    def acc_acto_sexual(contexto_accion):
        (...)

Autor:  jenesis [ 19 Ene 2011 08:33 ]
Asunto:  Re: [SPAC] PUBLICADO: Verbos-gramática VS objeto-acción

dddddd escribió:
Pongo un pseudo-python para ilustrar un comentario. En spac no lo consigo darle formato.


Sí, es otra de las florituras del SPIP.
El día que se me hinchen las narices os digo dónde va a ir a parar el SPIP y todas sus manías... aunque me cueste 6 meses pasar todo su contenido al nuevo CMS... :evil:

Autor:  joruiru [ 19 Ene 2011 09:45 ]
Asunto:  Re: [SPAC] PUBLICADO: Verbos-gramática VS objeto-acción

Pues ya que estamos con el nuevo portal..... :roll:

Autor:  Johan Paz [ 19 Ene 2011 13:06 ]
Asunto:  Re: [SPAC] PUBLICADO: Verbos-gramática VS objeto-acción

dddddd escribió:
Pongo un pseudo-python para ilustrar un comentario. En spac no lo consigo darle formato.

Código:
class Caballo():
    def asociar_accion(contexto_parser):
        # llamada por el parser
        if (contexto_parser.str_verbo == 'montar'):
            # informamos de las acciones posibles para ese verbo
            # podremos usar el contexto que nos da el parser (CD, CI, etc.)
            if (contexto.tal == cual and ....):
                # hay contexto suficiente, una única UA
                UAs = (UA_poner_encima)
            (...)   
            else:
                # no hay contexto suficiente, informamos de todas las opciones
                UAs = (UA_poner_encima, UA_acto_sexual) #lista en python
            return UAs

    def acc_poner_encima(contexto_accion):
    # llamada por el parser
        (...)

    def acc_acto_sexual(contexto_accion):
        (...)


A mi esa alternativa me parece simplemente mal, en seudo-python (por manejarse igual) para mi debería ser algo como:

1. Los objetos sólo deberían interactuar entre ellos y con lo que has llamado 'acciones universales' (no sé porqué universales cuando lo puedes llamar simplemente 'evento' o 'acciones'), así aprox.:

Código:
class Caballo():

    def acc_poner_encima(contexto_accion):
    # llamada por el parser
        (...)

    def acc_acto_sexual(contexto_accion):
        (...)


2. pero.... esto es en realidad mala idea porque en muchas ocasiones no querrás 'interceptar' completamente la acción, así que yo lo veo más bien como:

Código:
class Caballo():

    before_acc_poner_encima = {fun1,fun2}
    before_acc_acto_sexual = {fun3}
    after_acc_poner_encima = {}
    after_acc_acto_sexual = {}

    def fun1(contexto_accion):
        (...retorna algo que indica si debe seguir o no...)

    def fun2(contexto_accion):
        (...)

    def fun3(contexto_accion):
        (...)


3. Si Caballo hereda de algo llamado 'Objeto' que tenga funcioncioncillas de esas predefinidas se simplifica así:

class Caballo(General.Objeto):

before_acc_poner_encima = {fun1,fun2}
before_acc_acto_sexual = {fun3}

def fun1(contexto_accion):
(...retorna algo que indica si debe seguir o no...)

def fun2(contexto_accion):
(...)

def fun3(contexto_accion):
(...)
[/code]

4. La sintaxis no debería estar 'incrustada' en el caballo, sino en el parser del jugador, así:

Código:
import gramatica from Gramatica.Jugador
import rules, actions from World;

class Parser.Jugador(General.Parser):

    def parser(input):
        (...separa el input, le aplica el vocabulario, sustituye pronombres, analiza sn...)
        return contexto_parser

    def asociar_accion(contexto_parser):
        matches = gramatica.match(contexto_parser)
        for( match in matches)
               # verificar objetos por unas reglas del mundo
               for( object in match.objects )
                      # marcamos que aún es válido
                      match.still(rules.visility(object))
                      match.still(rules.whatever(object))
                      (...)
                      # o incluso
                      for( rule in rules.toBeApplied )
                             match.still( rules( rule, object) )
                      (...)
              # Descartados matches de objetos no usables
              # Aplicamos otros descartes contextuales
              (...)
              # Aplicamos una priorización/desambiguación
              (...)

       # Aqui ya tenemos un 'match' seleccionado llamado 'match_selected'
       # Dejamos ahora que cada objeto opine sobre la acción
       for( object in match_selected.objects )
           if object.before( match_selected.action, match_selected.role(object) )
               (...esto puede interceptar la acción... hay que tratar los resultados, etc...)

        # Finalmente llamamos a la 'acción' definida en general
        if actions[match_selected.action].do( match_selected )
               (... de nuevo tratamiento de errores, etc...)

        # Ahora aplicar las reacciones y luego los afters
        for ( object in player.location.objects )
                object.react( match_selected )

        for ( object in match_selected.objects )
           if object.after( match_selected.action, match_selected.role(object) )
               (...esto puede interceptar la acción... hay que tratar los resultados, etc...)
        (...)


5. En la clase genérica 'Objeto' tendrías:

Código:
class Objeto():

    def before(action, role):
          (...invocación de la before_acc_adecuada...)

   
    def after(action, role):
          (...invocación de la before_acc_adecuada...)


Complicadillo, ¿no?

Pues la gracia es que si le añades un poco de 'azucar' sintático peculiar se llama Inform.

En mi blog, cuando pueda os completo la imagen de lo que le falta al Inform.

Autor:  dddddd [ 19 Ene 2011 13:54 ]
Asunto:  Re: [SPAC] PUBLICADO: Verbos-gramática VS objeto-acción

Johan Paz escribió:
lo que has llamado 'acciones universales' (no sé porqué universales cuando lo puedes llamar simplemente 'evento' o 'acciones')


Por distinguir claramente el concepto. Verbo, acción, evento... están demasiado sobrecargadas en el hilo.

Autor:  dddddd [ 27 Ene 2011 17:36 ]
Asunto:  Re: [SPAC] PUBLICADO: Verbos-gramática VS objeto-acción

Johan Paz escribió:
2. pero.... esto es en realidad mala idea porque en muchas ocasiones no querrás 'interceptar' completamente la acción, así que yo lo veo más bien como:


Era un ejemplo simplificado, centrado en el asunto del artículo, por eso no se desarrolla en ese sentido. Estamos de acuerdo: normalmente se necesitan "before", "after" o equivalentes...

Página 1 de 1 Todos los horarios son UTC + 1 hora
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/