Se irá comentando el desarrollo de una aplicación capaz de realizar análisis sintáctico y morfológico del castellano.
lunes, 28 de noviembre de 2011
Ya se guardan las cadenas en disco
Como se iba a programar desde cero, se pensó usar bases de dados. Se han visto ciertos factores que no nos terminaba de convencer.
La aplicación pretende tener todos los datos en memoria, todos. Sólo se guarda en disco para cuando la aplicación se finalice y poder recuperarlos después. La estructura de datos pretende realizar las búsquedas lo más rápido posible y las lecturas a disco son muy lentas. Por lo que tener una base de datos a la que no se le realizarán consultas parece un poco innecesario.
El código anterior guardaba los datos en distintos archivos con extensión '.dat'. Se ha seguido el mismo camino. De modo secuencial, se leen y guardan los datos. Cada tipo de 'cadena' tiene asociado su archivo '.dat'. A la hora de guardar, sólo se guardarán las listas de cadenas que hayan añadido o modificado alguna cadena.
Es un poco tosco a la hora de guardar, pero se pretende que la aplicación no se apague, sino que periódicamente guarde los cambios, pero que siga en marcha.
Otro factor importante es que no nos obliga a tener MySql instalado.
Otra cosa más, cada tipo de cadena tiene asociado un array de bytes con toda la información, pero cada tipo es de un tamaño diferente. Cada tipo tiene unos campos, si usáramos tablas, debería de crear para cada tipo una tabla, por lo que la base de esta nueva estructura resultaría inútil. Otra opción sería una única tabla con los siguientes campos: index, tipo, array de bytes. Por lo que nos obliga a añadir el campo index en las cadenas. No nos convence.
En resumen, se ha añadido el código para poder leer y escribir las cadenas añadidas a la estructura.
Se agradecen los comentarios.
viernes, 18 de noviembre de 2011
Implementado el tipo Natural y el Ordinal
Dado un Ordinal como por ejemplo 'décimo tercero', que también puede escribirse como 'decimotercero' y sus correspondientes cifras (o abreviaciones) como '13º' o '13ro.' como se viene haciendo en la actualidad, o '13.º' que es como debería de escribirse. Nuestra aplicación acepta cualquiera de las formas. A partir de una, genera las otras y las inserta en la estructura, junto con su género, número y función. De esta forma, da lo mismo que pongamos '13º' o 'decimotercero', va a saber que nos referimos a lo mismo.
Como es lógico, se han quedado implementados los métodos para pasar de Ordinal a Natural y de Natural a Ordinal. No se comentó antes, pero también están los métodos para pasar de Romano a Natural y de Natural a Romano.
El rango de los ordinarios es del 1 al 1000 y 1000000, los más comunes. Según se vea se implementarán más.
Tipos de cadenas que almacena
- Adjetivos (sin terminar).
- Adjetivos Determinados.
- Adverbios
- Adverbios terminados en 'mente'.
- Artículos.
- Cardinales.
- Complementos de Adjetivo.
- Complementos de Adverbio.
- Complementos del Verbo.
- Demostrativos.
- Determinantes.
- Locuciones Adverbiales.
- Números Enteros.
- Números Fraccionarios (sin terminar).
- Números Reales.
- Números Romanos.
- Posesivos.
- Pronombres.
jueves, 13 de octubre de 2011
Reconocimiento de nuevos tipos.
- Enteros: "123" (+- 9 trillones)
- Reales: "123.123"
- Romanos: "XI" (desde 1 hasta 9 trillones)
Y otros que no los reconoce aún, pero que son funcones que realizan otros tipos como:
- Complementos del verbo.
- Complementos del adjetivo.
- Complementos del adverbio.
Cambio en la estructura de datos.
sábado, 1 de octubre de 2011
Recursos gramaticales
Como ya tenemos nuestros años, no resulta tan inmediato el acordarse de todas las reglas gramaticales, morfología, sintaxis, etc.
Hemos buscado por la red y hemos encontrado unos recursos muy valiosos. Explican muy bien lo que son los artículos, sustantivos, adjetivos... y sus funciones.
viernes, 30 de septiembre de 2011
Seguimos avanzando
y seguimos trabajando. Hace tiempo que no publicamos nada, pero eso no significa que el proyecto esté paralizado. Al contrario, ha sufrido unos cambios muy importantes:
- Representación por Html:
- Reconocimiento de 'verbos':
- Reconocimiento de 'sustantivos':
Código fuente:
GR
miércoles, 25 de mayo de 2011
Consulta al diccionario online de kalipedia
- Una palabra puede tener más de una definición, pues es capaz de identificar cada una de las definiciones.
- Para cada definición averigua si se trata de un Sustantivo, Adjetivo, Verbo, Preposición, Locución, etc.
- Aún falta por reconocer los géneros y números. Pero ya queda menos.
domingo, 22 de mayo de 2011
Problema con la interpretación del html
La solución más inmediata ha sido que la aplicación genera un archivo sh. Simplemente es un comando de consola de linux que se conecta a la página, hace la consulta y devuelve en forma de String toda la información.
Pegas:
- Necesita de la aplicación html2text de Linux.
- Ahora sólo corre la aplicación para Linux.
Este es el script:
#!/bin/bash
curl -s \"http://www.kalipedia.com/diccionarios/lengua-espanola/$1\" | html2text
Si a alguien se le ocurre algo, estamos abiertos a cualquier sugerencia!!!
Seguimos avanzando!!
La aplicación, dada una palabra, es capaz de hacer una consulta a www.kalipedia.com e informarse de qué tipo se trata: sustantivo, adjetivo, infinitivo, etc.
Por ahora, las consultas son muy restrictivas, deben de ser en singular y en masculino. En este sólo nos interesa el tipo y no la o las definiciones que pueda tener.
Estas restricciones tienen fácil solución o por lo menos para la mayoría de las palabras ya que es casi inmediato saber el masculino de una palabra o el singular, salvo excepciones que deberán ser manejadas con cuidado.
Vamos paso a paso y haciendo bien las cosas.
viernes, 20 de mayo de 2011
Arreglado!!!
Despues de luchar para reparar Windows, opté por formatear y reinstalar. Pero como me esperaba, seguía mal funcionando el teclado. Instalé ccleaner, igual... y buscando actualizaciones para la bios, leo por ahí que tras la actualización, se debe desconectar de la corriente y quitarle la batería unos 20 segundos. Pienso, que no tendría que tener ninguna lógica ya que la bios sigue alimentada con una pila de botón, pero no pierdo nada.
Pues sorpresa!! ha funcionado!! como digo, no le veo la lógica. Que me lo expliquen!! jejejejeje
Ahora toca rescatar Suse en el menú del inicial (ese que da elegir entre windows y linux) ya que linux está intacto y seguimos con el programita.
¿Atacado por un Craker?¿Un virus?
Ayer empecé a notar que el portátil no respondía correctamente. Tengo Windows 7 y OpenSuse 11.4. Normalmente trabajo en Linux. Noté que las teclas Fn y Ctrl se habían alternado, al igual que Ins y Supr. e incluso que ya no funcionaba el click directamente sobre el touchpad. Pensé se habrá cambiado la distribución del teclado. Compruebo la distribución... está OK. Reinicio y sigue igual. ¿Y en Windows?
sorpresa!!! tampoco funciona!!! reinicio Windows. Fallo en windows, inicia la autoreparación. No consigue reparar. Windows muerto.
A través de SystemRescueCD rescato la aplicación y compruebo... tampoco funciona el teclado ni el touchpad del portátil. Supongo que será cosa de la BIOS.
Mal rollo. OKIBN0508 es mi computadora, por si alguien me echa una mano.
Solucionado el problema de las tildes en los verbos
Cuando en InputStreamReader se le indicaba la forma de interpretar el contenido. Inicialmente estaba en 'ISO-8859-1', se ha cambiado a UTF-8 y ahora todo perfecto!.
Para más información de los InputStreamReader:
http://download.oracle.com/javase/1.4.2/docs/api/java/io/InputStreamReader.html
y para los estándares:
http://download.oracle.com/javase/1.4.2/docs/api/java/nio/charset/Charset.html
jueves, 19 de mayo de 2011
Corrigiendo algunos fallos
Y el fallo de los acentos, se cree que es en la clase wordreference, puesto que los sustantivos acentuados se guardan y leen correctamente, por lo tanto debe de ser cuando son conjugados los verbos obteniendo la información de www.wordreference.com. Mañana intentaremos que se quede listo.
Se está añadiendo el comando #listar, que despliega un menú preguntando que estructura se desea mostrar en pantalla. De esa manera se pretende saber qué palabras hay en memoria, si sus propiedades son las correctas, etc.
JavaDoc se sigue lógicamente desarrollando, pero aún no está a la par con el resto del código.
miércoles, 18 de mayo de 2011
Modificación de las estructuras y nombre de algunos paquetes
Hemos modificado la estructura y nombre de los paquetes. Al empezar a documentar, nos hemos dado cuenta que no estaba bien estructurado. Esperamos que ahora sea más fácil de encontrar las clases. Se ha seguido documentando.
Código fuente
Me he decidido por colgar el código que llevamos hasta ahora. Es poca cosa y aún casi sin JavaDoc, pero por si alguien quiere empezar a verlo.
Espero que sepan ser responsables con el código.
Generando el JavaDoc
martes, 17 de mayo de 2011
Presentaión del Proyecto
¡Qué cabeza tengo! Normalmente se empieza por la presentación del proyecto, no directamente a saco con el diccionario online, jejeje. Pues ahí va:
Puede sonar a ciencia ficción, pero siempre me ha llamado la atención el cómo una máquina podría llegar razonar. Resalto lo de RAZONAR. Una máquina hace lo que se le ha enseñado. Pero ¿podría aprender sola? ¿podría hacer una traducción por ejemplo y que no fuese palabra por palabra, como viene haciéndose, sino que tuviera en cuenta la escena y aplique una traducción u otra según el caso?
He visto muchas películas ¿eh?, sí, pero por algo hay que empezar. La base es reconocer el lenguaje del usuario. En este caso castellano. Luego ya después será todo lo demás. Pero para ahora está bien.
En el instituto la asignatura 'Lengua Castellana' me llevaba por el camino de la amargura. La dichosa sintaxis, análisis morfológico y tal y tal. ¡Y mira por donde ahora programando sobre ello! Me decía la profesora "no hay ningún programa que lo haga por tí, el castellano es tan complejo, se puede interpretar las palabras de tantas formas, que es imposible" ¿pero por qué no? Habrá que intentarlo.
El proyecto consta de varias fases:
- 1ª Fase: Identificar palabra por palabra que es: adverbio, verbo, sustantivo, etc. Saber su género, número, tiempo verbal si se trata de un verbo... Para ello se debe conectar a ciertos diccionarios online.
- 2ª Fase: Interpretar la información de la fase primera para realizar el análisis morfológico y sintáctico propiamente dicho.
- 3ª Fase: Representar los análisis al usuario de forma explicativa, razonada y de forma clara y fácil.
Lógicamente estas fases se dividirán en más, según se programe y se razone más profundamente.
Como es fácil de suponer, estamos en la fase 1ª. Tiene implementados los adverbios, pronombres (personales, demostrativos, posesivos, etc.), vagamente los sustantivos (aún no consulta a Internet y pregunta al usuario, si se trata de un sustantivo automáticamente sabe el género y el número, a no ser que se trate de alguna excepción o sustantivo propio) y los verbos. Ahora mismo, cuando en cuenta una palabra que no conoce realiza varias consultas a http://www.wordreference.com/ y si se trata de un verbo memoriza todo el verbo conjugado. El verbo no hace falta que esté en infitivo para realizar la consulta.
El siguiente punto a implementar es la consulta a Internet de las palabras desconocidas y no preguntar al usuario. Ya iremos comentando como va la cosa.
El que quiera saber más, para eso está este blog!! animarse!!
Otra cosa, se está desarrollando en java.
¿Qué diccionario online usar?
En el punto actual de desarrollo, GR consulta a la página www.WordReference.com sobre las conjugaciones de los verbos. Esta página me pereció muy completa y de fácil lectura (sobre todo a la hora de programar su lectura, me refiero).
¿Y el resto de palabras? Inicialmente pensé en http://www.rae.es/ pero hasta a mí me cuesta entender a veces lo que dice, con tantas abreviaciones.
Me decanto por www.kalipedia.com, tiene una sección de diccionarios online muy interesante. La información la muestra de forma más fácil lectura.
Estamos abiertos a sugerencias!! si alguien se le ocurre otra, está a tiempo, antes de empezar a programar.
Welcome al Proyecto GR
Siendo consciente de la herramienta que supone Internet para los programadores, hago uso de este blog para ir comentando el desarrollo del Proyecto GR.
El Proyecto GR se trata de una aplicación tiene como meta más inmediata, reconocer la gramática de la lengua española. Esa asignatura del instituto que tantos problemas me dio para aprobarla.
La aplicación está recién iniciada casi. Por lo que ahora es fácil engancharse por si algún desarrollador aburrido quiere interesarse.
Decir, que no se busca lucro. Si alguna vez llega a algo no se venderá.
En la actualidad somos dos en el Proyecto. Mi nombre es P.José S. Olmos, Olmos en el futuro, y mi compañero ... primero tengo que preguntar si quiere que se sepa su nombre o si prefiere ser el desarrollador anónimo jejeje.
Ya iré comentando lo que está ya programado, fases del desarrollo, problemas encontrados, cómo se resuelven y tal y tal.
Un saludo. Olmos


