Foro de elhacker.net

Foros Generales => Foro Libre => Mensaje iniciado por: Ori-chan en 9 Diciembre 2014, 23:06 pm



Título: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: Ori-chan en 9 Diciembre 2014, 23:06 pm
Estoy intentando realizar una fórmula para hacer oraciones simples en Español de manera que se pueda pasar a código sin problemas y, añadiendo una base de datos con determinantes, verbos, sustantivos, etc, cualquier programa pueda hacer frases perfectamente correctas (Sin sentido, pero correctas).


De momento llevo hecho el sujeto y un poco de el total, os pongo la fórmula y os explico.
Código:
Sujeto:
((Preposición) + ([Artículo / Determinante] (+ Adjetivo Calificativo)) + Sustantivo (+ Adjetivo Calificativo)) ((Preposición) Pronombre)

Oración simple (Empezada e incompleta):
(verbo +) (Sujeto (+ ["y" / "de"] + Sujeto)) ((Pronombre) + verbo)

Lo que está entre " [] " significa que puedes elegir una de las opciones que están separadas por  " / "
Lo que está entre " () " significa que puedes ponerlo o no en la oración.



EJEMPLO 1: Sujeto

Primero empezamos poniendo un sujeto
Citar
hacker
Luego decidimos añadirle un artículo o un determinante a la izquierda
Citar
Un hacker
Y acompañarlo con un Adjetivo calificativo
Citar
Un gran hacker
También queremos ponerle una preposición
Citar
A un gran hacker
Y por último le añadimos otro adjetivo calificativo a la derecha
Citar
A un gran hacker español


EJEMPLO 2: Sujeto

Ahora queremos hacer otro sujeto, pero esta vez mas simple, así que ponemos un pronombre
Citar
yo
Y lo acompañamos de una preposición (Si el pronombre era "yo" lo cambiamos por "mi", si era "tu" lo cambiamos por "ti").
Citar
A mi


EJEMPLO 3: Oración simple

Una vez tenemos el sujeto vamos a intentar empezar una oración simple.
Podríamos no poner el sujeto, pero lo vamos a poner, y va a ser el que he hecho antes.
Citar
A un gran hacker español
Como lo podemos acompañar de "y" y añadirle otro sujeto, lo hacemos
Citar
A un gran hacker y a mi
Ahora le juntamos a la frase un pronombre y un verbo y voilá, hasta aquí he llegado.
Citar
A un gran hacker y a mi nos robaron





Me gustaría que corrigierais los errores que encontreis, y ya si podeis os agradecería que me ayudarais a avanzar un poco en la fórmula.
Tened en cuenta que hay 8 clases de pronombres, eso si que puede llegar a liar. Y que mi media de lengua es 4, por lo tanto habrán muchos errores.


Título: Re: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: ivancea96 en 10 Diciembre 2014, 11:42 am
Yo no olvidaría los sintagmas. El sujeto se puede componer de uno o más sintagmas. Ordenándolo por sintagmas, complementos, atributo y etc, creo que podría quedar mejor.

Algo como:

SN = Sintagma Nominal

Sujeto = <SN> + [ [',' + <SN> + [',' + <SN> + [...]] ] + <conjunción> + <SN> ]

Luego, claro, habría que definir todos los posibles sintagmas y tal.

PD: yo estoy usando la notación de Windows (http://technet.microsoft.com/en-us/library/cc771080.aspx) (desconozco si tiene nombre)

PD2: creo que sería conveniente hacer esto primero en inglés. El Español es un idioma muy complejo xD


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: Binary_Death en 10 Diciembre 2014, 14:03 pm
A ver, es perfectamente posible hacerlo, pero requiere un conocimiento de lingüística generativa bastante amplio para hacer algo decente.

Lo primero primerísimo de todo, es que debes estudiarte bien y entender la teoría de la X barra.
http://en.wikipedia.org/wiki/X-bar_theory

Eso te ayudará a entender cómo funciona cada sintagma, por ejemplo:
http://en.wikipedia.org/wiki/Determiner_phrase

Y te recomiendo en gran medida esta página para further information: http://primus.arts.u-szeged.hu/bese/contents.htm


Y otra cosa, no sabes dónde te estás metiendo, ya te aviso xD Probablemente esto sería trabajo de un lingüista profesional. Yo como conlanger amateur no me veo capaz de hacerlo bien  ;D


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: ivancea96 en 10 Diciembre 2014, 14:35 pm
Me entraron ganas de hacerlo. C++, clases, herencia, podría consegui algo básico, pero relativamente cuerdo xD
Claro, eligiendo palabras aleatoriamente xD

También haré una función para conjugar verbos, que es fácil pero engorroso (sin irregulares, claro jaja)


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: Ori-chan en 10 Diciembre 2014, 16:16 pm
No creo que sea tan difícil hacerlo. Voy a intentar hacerlo entero, pero de momento no encuentro dificultad alguna.

Me gusta lo de el sintagma nominal, ivancea96. Voy a intentar hacer lo que llevo de forma sintáctica para ver como queda.


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: ivancea96 en 10 Diciembre 2014, 16:17 pm
Yo estoy actualmente conjugando el verbo. Cuando lo acabe, lo paso por aquí, o por GitHub.


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: Carloswaldo en 10 Diciembre 2014, 18:50 pm
Me interesa mucho tu proyecto.

Hace un tiempo tuve una idea similar pero para implementarlo en un traductor. Últimamente se me vino a la cabeza hacer un herramienta CAT y cosas como estas podrían ser bastante útiles.

El español esta muy lleno de irregularidades como para hacer las cosas muy dinámicas, lo primero sería ir llenando la base de datos, pero no solo de palabras y sus funciones dentro de la oración, sino también, por ejemplo, de la conjugación de los verbos.


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: ivancea96 en 10 Diciembre 2014, 19:45 pm
Mi idea era conjugar verbos, que eso se hace fácil, y luego tener así como un archivo con verbos irregulares. (Claro, también un archivo con adjetivos, sustantivos, etc)

Pensé en guardar sólo lexemas, pero bueno, como cada palabra tiene sus cosas, va a ser complicadillo xd


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: Ori-chan en 10 Diciembre 2014, 20:59 pm
En la base de datos tendrían que haber cosas como genero y número y antónimos y sinónimos totales de la palabra en cuestión.


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: ivancea96 en 10 Diciembre 2014, 21:07 pm
Por haber, habrían muchas cosas. Por eso me estoy centrando de momento sólo en el verbo xD


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: Ori-chan en 10 Diciembre 2014, 21:30 pm
Cuando hagas el programa en C/C++ para conjugar no te olvides de hacer un algoritmo de manera que podamos pasarlo a otros lenguajes y opinar o mejorarlo los que no sabemos C.


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: ivancea96 en 10 Diciembre 2014, 21:45 pm
Bueno, conjugar no es más que "lexema+MMT+MNP" (la vocal temática la incluyo en el de modo y tiempo)


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: Carloswaldo en 10 Diciembre 2014, 22:20 pm
Esto es algo rápido que he hecho, una base de datos para procesar la conjugación de los verbos (está en PostgreSQL):

http://pastebin.com/NbNggcLN

Con ella puedo hacer consultas del tipo:

Código
  1. SELECT p.pronombre || ' ' || r.raiz || c.conjugacion
  2. FROM raiz_verbos r
  3. INNER JOIN tipos_conjugacion t ON r.id_tipo_conjugacion = t.id_tipo
  4. INNER JOIN conjugaciones c ON c.id_tipo_conjugacion = t.id_tipo
  5. INNER JOIN tiempos ON c.id_tiempo = tiempos.id_tiempo
  6. INNER JOIN personas p ON c.id_persona = p.id_persona
  7. WHERE r.infinitivo = 'amar'
  8. AND tiempos.tiempo='Presente Indicativo'
  9. AND p.persona = 'Segunda Plural';

Resultando en:

Código:
    ?column?    
----------------
 vosotros amáis
(1 fila)

Así, si quiero agregar otro verbo solo hago

Código
  1. INSERT INTO raiz_verbos (raiz, id_tipo_conjugacion, infinitivo) VALUES ('abale', 1, 'abalear');

Y ya tengo la conjugación:

Código
  1. SELECT p.pronombre || ' ' || r.raiz || c.conjugacion
  2. FROM raiz_verbos r
  3. INNER JOIN tipos_conjugacion t ON r.id_tipo_conjugacion = t.id_tipo
  4. INNER JOIN conjugaciones c ON c.id_tipo_conjugacion = t.id_tipo
  5. INNER JOIN tiempos ON c.id_tiempo = tiempos.id_tiempo
  6. INNER JOIN personas p ON c.id_persona = p.id_persona
  7. WHERE r.infinitivo = 'abalear'
  8. AND tiempos.tiempo='Presente Indicativo'
  9. AND p.persona = 'Segunda Plural';

Código:
     ?column?      
-------------------
 vosotros abaleáis
(1 fila)

Claro que casi que solo es el esqueleto, lo que faltaría es poblarla y luego ver qué lógica seguir con los verbos irregulares (sería una labor bien grande).

La ventaja de tenerlo en una base de datos es que es independiente del lenguaje y cualquiera podría contribuir.


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: Ori-chan en 10 Diciembre 2014, 22:23 pm
Creo que tendré que aprender a usar esto. Porque no entiendo una pta m*****.


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: ivancea96 en 10 Diciembre 2014, 22:46 pm
Por cierto, deduzco que la finalidad del programa final será generar frases aleatorias, porque otra cosa no le veo a un generador de frases xD
(Salvo IA, que va mucho más allá que las frases)


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: Ori-chan en 11 Diciembre 2014, 11:25 am
Es el primer paso de un gran proyecto que estoy haciendo. Es una IA un tanto diferente al resto, no espero que sea buena pero me apetecía hacerlo desde hace tiempo.
De momento solo tengo que hacer el generador de frases y luego ya sigo con el resto de los pasos. Como lo estoy llevando a cabo en mi tiempo libre tardaré mucho tiempo pero creo que merecerá la pena porque poco a poco daré a la comunidad herramientas y algoritmos que les pueden servir en sus programas.


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: ivancea96 en 11 Diciembre 2014, 17:05 pm
Dado que la difícultad del idioma Español es muy alta, dejaré esto jaja

Hacer un sintagma nominal, implica hacer adjetivales. Hacer adjetivales, implica hacer complementos de adjetivo. Etc etc etc. Por no decir, que no a todos los sustantivos se les puede poner todos los adjetivos. Además, hay que flexionar adjetivos. Trabajo muy largo.


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: Binary_Death en 15 Diciembre 2014, 18:50 pm
Dado un sintagma cualquiera, éste se proyecta sobre el siguiente nivel recibiendo un especificador, dependiendo la forma de éste del tipo de sintagma. A partir de aquí, el siguiente nivel se obtiene del anterior añadiendo un adjunto, y los sucesivos un número x de complementos (que puede no ser ninguno, dependiendo de los requerimientos del núcleo).

Algunos ejemplos:

Los coches

Un sintagma determinante (DP) cuyo núcleo es "Los" y recibe un complemento  que es "coches"

Todos los coches

En este caso el sintagma tiene un especificador que es "todos", y esto explica por qué "todos los coches" es correcto mientras que "los todos coches" no lo es. El hecho de que anteceda al núcleo de puede explicar por la tipología sintáctica del español, que es un idioma de núcleo final, pero no todos los idiomas son así. Nuestros amigos los euskaldun tienen un idioma donde el artículo va después del sustantivo.

Algunos coches
Todos algunos coches*

Por si fuera poco hay incompatibilidades lógicas que hacen que más allá de la gramática generativa puramente sintáctica, algunas combinaciones no tengan sentido.

Vamos a ver si ahora se comienza a ver la dificultad de lo planteado.

Por cierto, con el inglés tres cuartos de lo mismo. La gramática no es más simple en ningún idioma del mundo, sólo diferente. Diría que crear una tabla de flexiones nominales, adjetivales y verbales es el menor de los problemas.

A decir verdad, lo que el OP intenta hacer es bastante parecido a hacer que un ordenador cree una conlang xD Sólo que usando la gramática del español para ello.
Si crear una conlang ya es laborioso para una persona, programar algo capaz de crearla... es muy complicado y requiere conocimientos muy profundos de lingüística.

Como ya dije antes, entender cómo se forman las frases con sentido para los hablantes nativos es el problema tratado en la gramática generativa, una rama inmensa de la lingüística.

Favor de leer: http://es.wikipedia.org/wiki/Gram%C3%A1tica_generativa

¿Se puede hacer? Por supuesto, pero menuuuuudo trabajazo. Si de verdad estás convencido, ya dije antes, no sabes dónde te has metido amigo.


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: BigByte en 20 Diciembre 2014, 23:15 pm
igual es off topic total, pero... si todas las palabras y funciones sintacticas siguen unas reglas ¿no se podria aplicar esto para hacer un analizador sintactico? ayudaria MOGOLLON a los estudiantes de bachiller que van mal en sintaxis jejejejej. ejemplo, metes una oracion: el hacker es bueno, y te devuelve la oracion analizada

el    hacker   es bueno

--    ------     -- -------
det    N         N  sn/Atr
-----------    | ----------
sn/suj              sv/pn

llevo mucho tiempo queriendo hacer una cosas de estas... ¿Seria posible?


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: patilanz en 21 Diciembre 2014, 01:30 am
Esta pagina hace algo parecido:
http://www.mystilus.com/Analizador_morfosintactico

Si alguien consigue hacer algo pls publicar el código.

Saludos


Título: Re: Necesito opinión y colaboración: Fórmula de las oraciones simples.
Publicado por: Binary_Death en 21 Diciembre 2014, 01:51 am
igual es off topic total, pero... si todas las palabras y funciones sintacticas siguen unas reglas ¿no se podria aplicar esto para hacer un analizador sintactico? ayudaria MOGOLLON a los estudiantes de bachiller que van mal en sintaxis jejejejej. ejemplo, metes una oracion: el hacker es bueno, y te devuelve la oracion analizada

el    hacker   es bueno

--    ------     -- -------
det    N         N  sn/Atr
-----------    | ----------
sn/suj              sv/pn

llevo mucho tiempo queriendo hacer una cosas de estas... ¿Seria posible?

Yep, es posible, por supuesto. Bastante más fácil de lo planteado en el post original. Necesitas eso sí una buena base de datos que contenga la categoría gramatical de las palabras a analizar (bueno, y todo tipo de locuciones y demás), así que sigue siendo un buen trabajazo, pero sin duda mucho más (infinitamente más diría yo) sencillo que generar oraciones correctas desde cero.

De hecho por la red ya hay analizadores bastante decentes.