Re: tutorial findString
"stbval" <[email protected]>
| Newsgroups | gmane.education.small-land |
|---|---|
| Message-ID | <[email protected]> |
Respecto al "un morfo analizador lexicográfico dirigido por tabla de mosaicos" de Manuel me parece muy interesante porque contriburía a cubrir cierta laguna en Squeak para crear aplicaciones sobre lenguaje natural, lo que podría satisfacer a muchos docentes que imparten asiganturas 'de letras'. Respecto al buscador de cadenas de texto de Diego creo que 'match' parece el que más opciones tiene. Lo ideal sería que puieran buscarse palabras y expresiones de forma combinada sin recurrir a anidar cajas de pruebas (a partir de cierto número de anidamientos uno se pierde :)). No se si estoy abusando, pero estoy pensando en listas (ordenadas o no). Si el texto contiene [Platón, ética, justicia, idea, dualismo], quiero asociar un comentario de texto. Si el texto contiene [Platón, política, justicia social, idea, dialéctica], quiero asociar otro comentario. Es una manera de conectar Squeak con redes semánticas y el conocimiento que ellas generan. He experimentado con ellas a través de los mapas conceptuales en clase con los alumnos. El resultado ha sido muy satisfactorio. Lo que busco es dinamizar estas redes mediante Squeak. Saludos, Esteban --- In [email protected], Manuel Blanc <squeak@n...> wrote: > > On 15 Aug 2004, at 5:26 PM, Diego Gomez Deck wrote: > > [Esteban escribió:] > >> De todas las interesantes respuestas que he leído, me gusta > >> especialmente ésta: > >> > >> --- Diego Gomez Deck wrote: > >>> > >>> ¿Qué es lo que hace falta que el Squeak haga? > >>> > >> Llevo muy poco tiempo con Squeak y me gusta. Sin embargo, se nota muy > >> orientado a problemas de 'tipo ingeniero'. La mayoría de los guiones > >> prediseñados son 'avanza', 'rota', 'multiplica', etc. Pero creo que > >> hay mucha gente interesada en aplicaciones sobre lenguaje natural. En > >> concreto, mi carta a los reyes magos, consistiría en lo siguiente: > >> > >> 1.Un guión en la categoría texto para buscar una cadena de caracteres > >> en un texto. > > > > Esto es bastante fácil de hacer. Lo que me gustaría, antes de > > hacerlo, es que hagamos una pequeña carta a los reyes de que tipo de > > procesamiento de cadenas necesitamos (además, claro, del findString). > > > > Una primera lista que puede servir como inicio para la discusión > > puede ser: > > > > - contains (contiene): si el texto contiene otro texto. > > > > - containsWord: (buscar palabra) que buscaría Platón y no daría > > verdadero cuando esté la palabra "Platona". > > > > - startsWith (empieza con) > > > > - endsWith (termina con) > > > > - asUpperCase (como mayúsculas): devuelve una cadena pero con todos > > los caracteres en mayúsculas. Esto es útil para usar en combinación > > con las opciones de búsqueda, para que se encuentre con cualquier > > combinación de mayúsculas minúsculas. Ejemplo: > > > > texto asUpperCase startsWith: 'HABÍA UNA VEZ' > > > > En ese ejemplo, cualquier cadena que comience con 'había una vez' o > > 'HaBÍa uNa Vez' o 'HABÍA UNA VEZ' daría "verdadero". > > > > - asLowerCase (como minúsculas): idem al anterior, pero al revés. > > > > La otra opción, para evitar que tener que concatenar 2 opciones, es > > duplicar las funciones de búsqueda y hacerlas todas duplicadas (una > > que busque respetando mayúsculas/minúsculas y la otra que ignore esas > > diferencias). Ejm: endsWith y endsWithIgnoringCase, containsWord y > > containsWordIgnoringCase, etc. > > > > - match (coincide): Esta función permitiría comparaciones con > > caracteres 'comodín' (como el * del viejo DOS). Ejemplos de uso: > > > > '*pepe*' match: 'pepe' --> verdadero > > '*pepe*' match: 'pepa' --> false > > '*pepe*' match: 'xxx pepe yyy' --> verdadero > > 'pepe*' match: 'xxx pepe' --> false > > 'pepe*pepa' match: 'pepe ama a pepa' --> verdadero > > > > Esta última es interesante porque incluye a varias de las anteriores, > > ejemplo: > > > > 'pepe*' match: algo >>equivale a>> algo startsWidth: 'pepe'. > > '*pepe' match: algo >>equivale a>> algo endsWidth: 'pepe'. > > '*pepe*' match: algo >>equivale a>> algo contains: 'pepe'. > > > > Comentarios? > > > > > > Obsérvese que findString da positivo cuando encuentra > > 'Platón' y cuando encuentra 'Platona', lo que ¿quizás? es fácil de > > mejorar. > > > > Yo creo que con match: bastaría si se hiciera de la siguiente forma: > - Si no hay asteriscos presentes entonces funcionaría como > containsWord: > - con asteriscos a ambos lados funcionaría como contains: > - con asterisco al principio o al final funcionaria como endsWith: y > startsWith: respectivamente. > > Para hacer un "match" exacto eToys ya proporciona el metodo = (cosa que > esteban ya había descubierto) > > Con respecto a las mayusculas y minusculas, yo sugiero que se distinga > siempre entre ellas. > > [Nota técnica: si se necesitan ampliaciones en el futuro siempre se > pueden conseguir mejorando el lenguage de expresiones regulares (ej > '[Pp]ep[ea]' match: algo, reconoceria 'pepe', 'pepa', 'Pepe' y 'Pepa', > pero no 'pepi') en vez de añadiendo más métodos "asustantes" a eToys] > > > >> 2.Más efectos lógicos: me explico. Una "prueba" en un guión > >> corresponde a lo que en lenguaje natural llamamos un condicional: > >> > >> si encuentra la palabra clave 'Platón' muestra en la salida el texto > >> correspondiente > >> > >> Sin embargo, ¿hay una forma tan eficiente para activar un evento > >> cuando ocurra una conjunción de objetivos, por ejemplo, encuentre > >> "Platón" y "ética" ? > > > > Esto lo podés hacer hoy, anidando cajas de prueba. > > > >> ¿Existe una forma tan eficiente para activar un evento cuando ocurra > >> una disyunción de objetivos, por ejemplo "Platón" o "ética"? > > > > Esto se lograría con una caja de prueba detrás de otra caja de prueba. > > Yo sugeriría encontrar una forma alternativa que fuera menos engorrosa > cuando el problema sea real y no un mero ejemplo. > > [Nota técnica: estoy pensando un morfo "analizador lexicográfico > dirigido por tabla de mosaicos". A pesar del nombrecito seria muy fácil > de usar simplemente moviendo mosaicos a una tabla. Además tambien > podría ser de aplicación a morfos más gráficos. ¿Es razonable, Diego?]. > > Si hay interés, elaboro más la idea. > > Saludos > --Manolón ------------------------ Yahoo! Groups Sponsor --------------------~--> $9.95 domain names from Yahoo!. Register anything. http://us.click.yahoo.com/J8kdrA/y20IAA/yQLSAA/zCsqlB/TM --------------------------------------------------------------------~-> Visita nuestro sitio en http://www.small-land.org Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/small_land/ <*> To unsubscribe from this group, send an email to: [email protected] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/