Necesito opinión y colaboración: Fórmula de las oraciones simples.

Iniciado por Ori-chan, 9 Diciembre 2014, 23:06 PM

0 Miembros y 1 Visitante están viendo este tema.

Ori-chan

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.


ivancea96

#11
Bueno, conjugar no es más que "lexema+MMT+MNP" (la vocal temática la incluyo en el de modo y tiempo)

Carloswaldo

#12
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 (sql) [Seleccionar]
select p.pronombre || ' ' || r.raiz || c.conjugacion
FROM raiz_verbos r
INNER JOIN tipos_conjugacion t ON r.id_tipo_conjugacion = t.id_tipo
INNER JOIN conjugaciones c ON c.id_tipo_conjugacion = t.id_tipo
INNER JOIN tiempos ON c.id_tiempo = tiempos.id_tiempo
INNER JOIN personas p ON c.id_persona = p.id_persona
WHERE r.infinitivo = 'amar'
AND tiempos.tiempo='Presente Indicativo'
AND p.persona = 'Segunda Plural';


Resultando en:


   ?column?    
----------------
vosotros amáis
(1 fila)


Así, si quiero agregar otro verbo solo hago

Código (sql) [Seleccionar]
insert into raiz_verbos (raiz, id_tipo_conjugacion, infinitivo) values ('abale', 1, 'abalear');

Y ya tengo la conjugación:

Código (sql) [Seleccionar]
select p.pronombre || ' ' || r.raiz || c.conjugacion
FROM raiz_verbos r
INNER JOIN tipos_conjugacion t ON r.id_tipo_conjugacion = t.id_tipo
INNER JOIN conjugaciones c ON c.id_tipo_conjugacion = t.id_tipo
INNER JOIN tiempos ON c.id_tiempo = tiempos.id_tiempo
INNER JOIN personas p ON c.id_persona = p.id_persona
WHERE r.infinitivo = 'abalear'
AND tiempos.tiempo='Presente Indicativo'
AND p.persona = 'Segunda Plural';



    ?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.

Ori-chan

Creo que tendré que aprender a usar esto. Porque no entiendo una pta m*****.


ivancea96

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)

Ori-chan

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.


ivancea96

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.

Binary_Death

#17
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.

BigByte

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?
¿Eres de Zaragoza y necesitas Ordenador? ¿El que tienes te va lento? ¿Has tenido infección de malware? ¡¡No te preocupes, yo te lo arreglo!!
(Zaragoza, España)

http://www.bigbyte.webnode.es

patilanz

Esta pagina hace algo parecido:
http://www.mystilus.com/Analizador_morfosintactico

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

Saludos