Java - Negar una frase

 
Vista:

Negar una frase

Publicado por Julio David (3 intervenciones) el 01/10/2019 17:23:56
Buenas. Tengo una duda. Tengo que hacer un programa que permita al usuario introducir una oracion pero que el tenga la opcion de una vez introducirla la pueda negar. ¿Como puedo hacer que el usuario ya habiendo introducido la frase pueda con una opcion negarla?

Ej:

-Usuario introduce: "La computadora esta caliente"
(Que se imprima esto es opcional)

-Usuario selecciona la opcion para negar

-Se imprima: "La computadora no esta caliente"
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 1.692
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Negar una frase

Publicado por Kabuto (421 intervenciones) el 01/10/2019 21:32:27
Esto es más complicado de lo que aparentemente parece, pues tienes que hacer que la computadora entienda el lenguaje humano...

Se puede hacer algo básico y simple, pero aún así necesitarías crear "diccionarios". Estos diccionarios pueden ser simples arrays de String: uno que contenga SUSTANTIVOS(computadora, coche, perro, persona, día, noche, hoy, ayer, mañana...)..obviamente la lista sería inmensa y no puedes aspirar a contenerlos todos.
Otro que contenga VERBOS y sus conjugaciones(soy, eres, somos, estoy, estamos, estaremos, estaré, estarás, juego, jugaré, bailo, bailas, como, bebo, salto,...).. de nuevo la lista sería inmensa.

Con estos diccionarios, se puede intentar hacer un simplista análisis sintáctico de la frase. Buscando el SUSTANTIVO localizamos el sujeto de la oración y con el VERBO tendríamos el predicado.
Con esto, decidimos donde poner el NO para negar el predicado

Vamos a probar a hacerlo buscando únicamente el VERBO, y poniéndole delante un NO

Ejemplos:

"Estoy cansado".

"Estoy" sería el VERBO, le ponemos delante un "no"

"No estoy cansado"

*******
"Hoy vengo a cenar"

Tenemos dos VERBOS: "vengo" y "cenar".
"Cenar" aquí en realidad es un complemento, no es el verbo que realiza la acción, que es "vengo".
Como humanos sabemos distinguirlo. La máquina no, pero podemos decirle que el primer VERBO que encuentre será el que ha de considerar como el "verbo predicativo" (el que denota una acción) y por tanto negarlo.
Esto puede servir para la mayoría de las veces

"Hoy no vengo a cenar"

*********
"Mi madre me hizo el arroz"

Aquí tenemos un solo verbo "hizo", pero si lo negamos como hasta ahora, poniéndole un NO delante, la frase no queda bien.

"Mi madre me no hizo el arroz"

Esto ocurre porque tenemos un PRONOMBRE PERSONAL, el "me".
En este caso, el NO tiene que ir delante del PRONOMBRE y no del VERBO.
Por tanto se necesitaría otro DICCIONARIO de PRONOMBRES para localizarlos y según si acompañan al VERBO predicativo o no, pues el "NO" lo pondremos en un sitio u otro.

"Mi madre no me hizo el arroz"

**************

Y podemos encontrar multitud de casos en los que no va a funcionar con simplemente poner un NO delante del verbo predicativo.

Así que en realidad, para conseguir lo que quieres hacer, lo primero es que TÚ mismo aprendas como hacer el análisis sintáctico de una oración.
Y teniendo ese conocimiento, ya se puede poner uno a pensar que lógica hay que seguir para transmitir ese conocimiento a la máquina.

Las máquinas son estúpidas, solo pueden saber lo que tú puedas enseñarle. Por eso primero has de adquirir tú el conocimiento que quieras transmitirle a la máquina.


Hacer que una máquina entienda bien el lenguaje humano, como ya he dicho, es muy complicado y es de hecho uno de los retos actuales en robótica, IA, etc...

Puedes hacer algo simple como he explicado, crear diccionarios de verbos, pronombres... buscar coincidencias y poner un NO donde corresponda.

Y a base de ir probando multitud de frases, cuando te encuentres alguna que la negación ha fallado, pues modificas el código para que contemple esta nueva posibilidad.

Pero bueno, si el programa que te piden ya está previsto que va a recibir oraciones de construcción sencilla, como la que has puesto de ejemplo, tan solo "bastaría" con localizar VERBOS en la oración y ponerle un NO delante
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 616
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Negar una frase

Publicado por Rodrigo (150 intervenciones) el 02/10/2019 03:59:40
Otra opcion es crear un string que sea la concatenacion de

"No es cierto que" + lo que se ingreso.

:)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar