elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Alguna idea para plantear este problema?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Alguna idea para plantear este problema?  (Leído 1,580 veces)
estudianteuv

Desconectado Desconectado

Mensajes: 10


Ver Perfil
¿Alguna idea para plantear este problema?
« en: 4 Marzo 2019, 21:08 pm »

Hola, tengo que elaborar un programa que "Analizar si una frase capturada por el usuario está bien escrita en español." es decir; si el usuario escribe "El coche es azul", es correcto, pero si escribe "El azul es coche", es incorrecto.

No se me ha ocurrido mucho, OJO. No tengo que usar apunteros, ni recursividad (ya que no se ha visto en el curso), ni archivos, solo es el uso de cadenas y todo lo demás, a excepción de lo antes mencionado...

¿Alguna idea?


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: ¿Alguna idea para plantear este problema?
« Respuesta #1 en: 4 Marzo 2019, 21:16 pm »

Imagino que tendrás algunas restricciones o limitaciones no? Algo del tipo:
Código:
<sujeto> + <verbo> + (<complementos>) -> Correcto
<sujeto> + <verbo transitivo> + <complementos> -> Correcto
<verbo no personal> + (<complementos>) -> Correcto
Ya que sino con la complejidad que tiene nuestro lenguaje que no sigue una estructura tan definida como por ejemplo el inglés y varían mucho las terminaciones tanto de número como de género, tendrías un problema excesivamente grande y complejo... :-X


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
estudianteuv

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: ¿Alguna idea para plantear este problema?
« Respuesta #2 en: 4 Marzo 2019, 22:26 pm »

Sí, claro tengo que tomar en cuenta esas limitaciones y restricciones que mencionas... Pero... ¿Cómo validar? No aterrizo mi idea.
En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: ¿Alguna idea para plantear este problema?
« Respuesta #3 en: 4 Marzo 2019, 22:37 pm »

Tienes que crear conjuntos ya sea usando los contenedores de la STL (set por ejemplo) para agrupar ahí todas las posibilidades de cada tipo de palabra, te pongo un ejemplo:
Código:
set pronombres_personales = {yo, tu, el, ...}
Y luego puedes crear relaciones:
Código:
set sustantivos_masculino_singular = {coche, perro, ...}
<el> + <sustantivos_masculino_singular> -> Correcto
<la> + <sustantivos_masculino_singular> -> Incorrecto
Y esto lo puedes ir extendiendo todo lo que quieras o según las limitaciones que te hayan impuesto que como las desconozco pues te he puesto un par de ejemplos sencillos para darte una idea. Suerte :-X
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Serapis
Colaborador
***
Conectado Conectado

Mensajes: 3.350


Ver Perfil
Re: ¿Alguna idea para plantear este problema?
« Respuesta #4 en: 5 Marzo 2019, 00:51 am »

Más o menos como te dice YreX-DwX.
Sin embargo considero que es demasiado complejo para un estudiante.

Además si no está acotado como te han señalado, la complejidad de sale de madre para un 'ejercicio'... realmente es un problema que podría llevar más de un año (varias personas), pués se está pidiendo nada más ni nada menos que analizar semánticamente si una frase es un idioma humano es válida.

De hecho tan solo recoger y categorizar cada palabra del dicionario ya llevaría un tiempo enorme. Ahora bien si se dispone de ese diccionario, la cosa cambia y podría ser asumible.

- Lo primero es un análisis léxico, para obtener los tokens (palabras al caso), determinar si existen en ese diccionario o no, y en caso de que existan asignarles el atributo correspondiente (nombre verbo, adjetivo), etc... Este análisis es el más sencillo. Aunque en español se complica, ya que aunque tengas una buena lista por ejemplo de verbos, como estén conjugados, nuevamente se complica...
- Luego le toca un análisis sintáctico, para comprobar que la frase es admisible: "pajaro un tengo" no es válido, aun cuando cada token es válido. El español admite muchas formas de ordenar las frases con el simple propósito de dar énfasis a alguna parte, lo que complica en exceso dicho análisis... es preciso especificar todas las formas válidas de ordenar nombres artículos, verbos, pronombres, etc...
Me encanta la famosa frase:
     Del salón | en el ángulo oscuro, | de su dueño | tal vez | olvidada, | silenciosa | y | cubierta de polvo, | hallábase | el arpa.
Esta frase ni más  ni menos ejemplifica la complejidad por cuento está expuesta en orden inverso a como la diríamos normalmente:
     El arpa | se hallaba | cubierta de polvo | y | silenciosa, | olvidada | tal vez | de su dueño | en el ángulo oscuro | del salón.
- Finalmente el análisis semántico, aún es un problema en fase de resolución, por la explosión combinatoria del lenguaje humano. Si un lenguaje de programacion apenas tiene entre unas decenas y unas centenas de palabras reservadas, y resulta complejo, cuanto más el lengueja humano que rondan por encima de las 100.000 palabras sin contar variaciones de sus accidentes: número, género, tiempo, etc...
Es decir una frase como la que ponías: "El azul es coche" que señalabas es fácil de resolver desde el analizador sintáctico, pero la frase: "El perro es azul" "el perro come coches", son sintácticamente correcta, exige el análisis semántico... y ahí es donde radica la complejidad... no hay definición-reglas aplicables (que el sentdo común del conocimiento humano) sobre si los perros pueden o no ser azules, y sobre si pueden o no comer coches...

En definitiva, o tienes algunas severas restricciones del tipo: Utilizar solo estos elementos y como máximo 1 de cada tipo: 'articulo, nombre, verbo, adjetivo.  ...o no me creo que sea un ejercicio que te haya mandado ningún profesor, salvo que sea "el profesor chiflado" (I.E. el genial Cantinflas).
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿alguna idea para esto?
Programación Visual Basic
tosferina 0 1,515 Último mensaje 30 Enero 2006, 20:48 pm
por tosferina
DB me tira este error... .alguna idea? =S
Bases de Datos
XXXXXX 2 2,625 Último mensaje 14 Mayo 2010, 20:17 pm
por XXXXXX
Alguna Idea de este codigo batch??
Scripting
xBart 2 2,721 Último mensaje 16 Abril 2011, 21:11 pm
por SuperDraco
¿Alguna idea para una aplicación web? « 1 2 »
Foro Libre
Hearts 13 16,460 Último mensaje 27 Noviembre 2012, 18:17 pm
por RENE9008
Alguna idea para salir de este FOR y printear un mensaje?.. en C
Programación C/C++
RGT 1 1,676 Último mensaje 1 Abril 2015, 06:58 am
por RGT
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines