Cuando dices ‘Compiladores’ y ‘PNL’, lo primero que me sorprende de inmediato es ‘ Analizador de lenguaje natural’.
Por lo tanto, le sugiero que cree un analizador / compilador de lenguaje natural para su proyecto.
En cuanto a la literatura / documentos de la Conferencia, se han realizado muchas investigaciones en este campo durante la última década.
- Si una placa base falla, ¿es posible iniciar el sistema informático o no?
- ¿Cuál es la mejor manera de aprender / enseñar AP Computer Science?
- ¿Es la inteligencia biológica una máquina de Turing, o más bien un superconjunto de máquinas de Turing?
- Si podemos navegar por los contenidos de Internet en el sandbox (como el navegador Chrome), ¿por qué necesitamos establecer otros valores?
- ¿Qué importancia tienen las ecuaciones diferenciales parciales para la robótica?
Como escribió que no sabe mucho sobre PNL, explicaré brevemente:
- ¿En qué se diferencia el análisis de los lenguajes de programación del lenguaje natural?
- Cómo puede usar los conceptos que aprende sobre el análisis de lenguajes de programación para crear un analizador de lenguaje natural.
En su curso de ‘Compiladores’, aprenderá sobre varias técnicas de análisis, divididas en términos generales en ‘Análisis de arriba hacia abajo’ y ‘Análisis de abajo hacia arriba’.
Las técnicas anteriores (de arriba abajo / de abajo hacia arriba) son técnicas generales. Sin embargo, en un curso general de ‘Compiladores’, se enseñan en el contexto de lenguajes de programación.
Los lenguajes de programación tienen una estructura / sintaxis fija. Entonces, si un compilador intenta analizar un lenguaje de programación, puede llegar a una respuesta determinista que diga ‘La sintaxis es correcta’ o ‘La sintaxis tiene errores y no se puede compilar’. Además, si la sintaxis es correcta, identificará correctamente la sintaxis. Por ejemplo: qué llaves se unen, qué expresión se ejecutará primero y cómo será el flujo del programa y demás.
Por lo tanto, el uso de estas técnicas para analizar lenguajes de programación suele ser sencillo. Según el idioma, puede definir un conjunto de reglas que debe seguir y luego seguir una serie de pasos para analizarlo.
Pero el lenguaje natural no tiene ninguna estructura fija. Considere un idioma natural, diga “inglés”. Considere la siguiente oración:
Tribunal para juzgar al acusado de disparos
Digamos que queremos entender esta oración. Puede tener al menos los siguientes significados:
- el tribunal intentará dispararle a un acusado
- el tribunal va a celebrar un juicio por un acusado de disparos
Entonces la afirmación es ambigua. Además, la interpretación depende de la “estructura” de la oración.
Puede tener al menos las siguientes dos estructuras:
1)
—————— Disparos (verbo) ————————-
El | El | El |
Juzgado (sustantivo) juzgado (verbo de apoyo) Demandado (sustantivo)
El | to (verbo de apoyo)
2)
——– Probar (verbo) —————————————–
El | El | El |
Tribunal (Sustantivo) a (verbo de apoyo) Demandado (Sustantivo)
El |
Disparos (adjetivo)
Ahora, si construye un analizador para esta oración, su trabajo es descubrir esta estructura. Pero digamos que mi analizador da Estructura 1. como respuesta y su analizador da Estructura 2. como respuesta. En ese caso, interpretaremos las declaraciones de manera diferente.
Pero ninguno de nosotros está equivocado. Ambas son interpretaciones legítimas.
Esa es la razón por la que los analizadores de lenguaje natural no son deterministas. Un analizador de NL no presentaría una estructura como respuesta. Más bien, trataría de observar todas las estructuras posibles (es posible un número exponencial de estructuras si considera las estructuras ‘correctas’ e ‘incorrectas’). Para todas esas estructuras, proporcionaría una confianza / probabilidad. La estructura con la mayor probabilidad generalmente se elige como la respuesta.
Nota: Vería las estructuras correctas e incorrectas porque en el lenguaje natural, además de definir algunas reglas muy estrictas, nada más se considera “incorrecto”. Porque una oración que no sigue todas las reglas de gramática sigue siendo una oración legítima hasta que transmite su significado.
Las técnicas de análisis del lenguaje natural a menudo utilizan enfoques de arriba hacia abajo / de abajo hacia arriba, pero:
- El uso es un poco más complejo. Por lo general, se basa en árboles en lugar de en pila / cola como en el caso de los lenguajes de programación
- Son probabilísticos y utilizan algunos conceptos de probabilidad.
Al final, diría que si no tiene antecedentes de PNL, puede llevarle un mes o incluso más lograr esto (si está escribiendo el analizador por su cuenta y no simplemente usando bibliotecas y API). También deberías ir a discutir con tu profesor antes de retomar esto.
Y simplemente visite scholar.google.com y busque ‘Análisis de lenguaje natural’ para obtener muchos buenos resultados.