Contenidos
Analizador de oraciones simples
análisis de dependencia – procesamiento del lenguaje natural
Estoy escribiendo un analizador sintáctico muy básico (sobre todo para entender mejor cómo funcionan) que toma la entrada de un usuario de unas pocas palabras seleccionadas, detecta si la estructura de la frase está bien o no está bien, y emite el resultado. La gramática es:
Como nota añadida, estoy en un ejercicio del capítulo 6 de Programming: Practice and Principles Using C++ así que prefiero usar la sintaxis del lenguaje que ya he aprendido, así que cualquier cosa que entre en la categoría de programación avanzada probablemente no sea muy útil. (El ejercicio dice específicamente que no hay que usar tokens, así que no cuentes con ellos).
Última edición: En el grupo público del libro hice la misma pregunta y Bjarne Stroustrup comentó que había puesto la solución del ejercicio en línea. Básicamente, hizo que la entrada se leyera en la función de la frase y utilizó sentencias if para devolver verdadero o falso. Sin embargo, él no utilizó artículos, así que el mío era mucho más complejo. Supongo que si he aprendido algo de este ejercicio es que cuando se trata de una gran cantidad de entrada de usuario, tokenización es la clave (de lo que sé hasta ahora.) Aquí está mi código por ahora. Puede que vuelva a él más tarde porque todavía tiene muchos fallos y básicamente sólo devuelve si la frase está bien y no puede manejar cosas como (sustantivo, conjunción, frase), pero por ahora sigo adelante.
¿cómo interpretamos las frases? estrategias de análisis sintáctico
Estoy teniendo un problema en el que necesito analizar oraciones muy simples en parses BNF. Soy capaz de etiquetar los tokens con facilidad y tengo oraciones simples que funcionan. Sin embargo, hay varias situaciones en las que se puede aplicar una regla de reducción o se puede producir un desplazamiento y otra reducción. Por ejemplo:
Tengo una regla que reduce la conjunción sustantiva a una frase sustantiva, y otra regla que reduce la conjunción oracional a una frase compuesta. En “Jerry” parece que asume automáticamente que la frase es de la forma sustantivo verbo frase sustantiva, en contraposición a la frase de conjunción de oración, y lanza un error cuando encuentra “comió” ya que no hay ninguna regla de reescritura para NP VP NP VP.
Afortunadamente (o no), el cerebro humano no se limita al análisis sintáctico Knuthiano de izquierda a derecha, aunque los detalles de cómo analizamos las frases no están del todo claros. Es más, la mayoría de las lenguas humanas son realmente ambiguas y sólo el análisis semántico puede distinguir entre los múltiples análisis posibles. (En el lenguaje hablado, hay otras características lingüísticas, como la entonación, el espacio entre palabras y el énfasis, que también ayudan a guiar el análisis sintáctico. Estos rasgos no suelen transcribirse en el lenguaje escrito, pero éste puede procesarse de forma no lineal; el ojo puede releer o escanear por delante si es necesario).
7 – 2 fundamentos de los pcfg (parte 1)
Estoy teniendo un problema en el que necesito analizar oraciones muy simples en parses BNF. Soy capaz de etiquetar los tokens con facilidad y tener oraciones simples trabajando. Sin embargo, hay varias situaciones en las que se puede aplicar una regla de reducción o puede ocurrir un desplazamiento y otra reducción potencial. Por ejemplo:
Tengo una regla que reduce la conjunción sustantiva a una frase sustantiva, y otra regla que reduce la conjunción oracional a una frase compuesta. En “Jerry” parece que asume automáticamente que la frase es de la forma sustantivo verbo frase sustantiva, en contraposición a la frase de conjunción de oración, y lanza un error cuando encuentra “comió” ya que no hay ninguna regla de reescritura para NP VP NP VP.
Afortunadamente (o no), el cerebro humano no se limita al análisis sintáctico Knuthiano de izquierda a derecha, aunque los detalles de cómo analizamos las frases no están del todo claros. Es más, la mayoría de las lenguas humanas son realmente ambiguas y sólo el análisis semántico puede distinguir entre los múltiples análisis posibles. (En el lenguaje hablado, hay otras características lingüísticas, como la entonación, el espacio entre palabras y el énfasis, que también ayudan a guiar el análisis sintáctico. Estos rasgos no suelen transcribirse en el lenguaje escrito, pero éste puede procesarse de forma no lineal; el ojo puede releer o escanear por delante si es necesario).
compilación – tercera parte: análisis sintáctico
Mi pregunta es, ya que la oración debe estar en la forma np vp, ¿cuál es la np inicial aquí? ¿Es ‘Tengo’? No entiendo cómo encaja ‘Haber’ en el conjunto, ya que está antes del np inicial ‘Yo’ pero debería pertenecer con ‘visto’.
La oración será un CP en GG tradicional: [CP [C tener] [IP he visto al hombre]]. Tenga en cuenta que los árboles de constituyentes representan la topología de la oración y no las relaciones gramaticales. En el ejemplo que nos ocupa, “have” y “seen” son co-cabezas pero no aparecen contiguamente en la oración.
Entradas relacionadas
Bienvenid@, soy Patricia Gómez y te invito a leer mi blog de interés.