verbo simple presente preguntas para palabras oraciones niños need interrogativos interrogativas interrogativa ingles indirectos indirectas forma exclamativas español enunciativas enunciados ejercicios ejemplos directas convertir con animales java algorithm nlp data-mining text-processing

java - simple - palabras interrogativas en español



¿Cómo saber si una oración es una pregunta(interrogativa)? (3)

¿Existe una biblioteca / algoritmo Java de código abierto para encontrar si un fragmento de texto es una pregunta o no?
Estoy trabajando en un sistema de respuesta de preguntas que necesita analizar si el texto ingresado por el usuario es una pregunta.
Creo que el problema probablemente puede resolverse mediante el uso de bibliotecas NLP de código abierto, pero es obviamente más complicado que la simple parte del etiquetado de voz. Entonces, si alguien puede decirle el algoritmo utilizando un biblioteca de PNL de código abierto existente, eso también sería bueno.
También avíseme si conoce una biblioteca / kit de herramientas que usa la minería de datos para resolver este problema. Aunque será difícil obtener datos suficientes para fines de capacitación, podré usar datos de intercambio de pila para la capacitación.


Eche un vistazo a Link Grammar Parser Es un analizador multilingüe basado en el concepto de pares de enlaces de palabras relacionadas en la oración. Está escrito en C, pero también tiene una interfaz Java JNI.


En un análisis sintáctico de una pregunta, la estructura correcta estará en la forma de:

(SBARQ (WH+ (W+) ...) (SQ ...* (V+) ...*) (?))

Por lo tanto, al utilizar cualquiera de los analizadores sintácticos disponibles, un árbol con un nodo SBARQ con una SQ incorporada (opcionalmente) será un indicador de la entrada como una pregunta. El nodo WH + (WHNP / WHADVP / WHADJP) contiene la pregunta derivada (quién / qué / cuándo / dónde / por qué / por qué) y el SQ contiene la frase invertida.

es decir:

(SBARQ (WHNP (WP What)) (SQ (VBZ is) (NP (DT the) (NN question))) (. ?))

Por supuesto, tener muchas cláusulas anteriores causará errores en el análisis (que pueden solucionarse), al igual que las preguntas realmente mal escritas. Por ejemplo, el título de este post "¿Cómo saber si una oración es una pregunta?" tendrá un SBARQ, pero no un SQ.


Muchas preguntas / solicitudes de información se plantean en la forma gramatical de una declaración; por ejemplo, "me gustaría saber quién robó mi bicicleta".

Me gustaría abandonar toda esperanza de determinar a partir de su estructura si la entrada del usuario es una pregunta, y simplemente asumir que es una pregunta, a menos que no sea una pregunta inequívoca. Podría adoptar un enfoque interactivo e iterativo para que el sistema pueda refinar su "comprensión" de la entrada del usuario:

User: I would like to know how many angels fit on the head of a pin. System: Do you have a question about angels? User: Yes. System: Do you want to know if angels are fit? User: No. System: Do you want to know if angels have heads? User: Possibly. System: Do you want to know if angels have pins? User: No. System: Do you want to know if angels are numerous? User: No. System: Do you want to know the dimensions of an angel? User: Yes. System: Do you mean angels in paintings? User: No. System: Do you mean angels in myth and religious writing? User: Yes. System: Angels are metaphysical beings. User: I hear that Pennsylvania was founded by William Penn. Is that true? System: Do you have a question about hearing? User: No. System: Do you have a question about Pennsylvania? User: Yes. System: Pennsylvania was founded by William Penn. User: When? System: 1682. User: What does the name mean? System: What name? User: Pennsylvania! System: Do you want to know the meaning of Pennsylvania? User: Yes. System: Pennsylvania means Penn''s Woods.