ıllı Internet y Tecnologías de la Información (2018)

internet, Hosting, dominios, seo, antivirus, banco de imágenes, páginas web, tiendas online

[Enciclopedia Online Gratuita] Diccionario de Internet y Tecnologías de la Información y la Comunicación (TIC):

ıllı Analizador sintáctico wiki: info, historia y vídeos

videos internet

salud  Analizador sintáctico 


Un analizador sintáctico (o bien parser) es un programa informático que examina una cadena de símbolos conforme a las reglas de una gramática formal. El término procede del latín pars, que significa parte (del alegato). Generalmente hace una parte de un compilador, en tal caso, convierte una entrada en un árbol sintáctico de derivación.


El análisis sintáctico transforma el texto de entrada en otras estructuras (generalmente árboles), que son más útiles para el siguiente análisis y atrapan la jerarquía tácita de la entrada. Un analizador léxico crea tokens de una secuencia de caracteres de entrada y son estos tokens los que son procesados por el analizador sintáctico para edificar la estructura de datos, por poner un ejemplo un árbol de análisis o bien árboles de sintaxis abstracta.


El análisis sintáctico asimismo es un estado inicial del análisis de oraciones de lenguaje natural. Es utilizado para producir diagramas de lenguajes que utilizan flexión gramatical, como los idiomas romances o bien el latín.Los lenguajes frecuentemente reconocidos por los analizadores sintácticos son los lenguajes libres de contexto. Cabe apreciar que hay una justificación formal que establece que los lenguajes libres de contexto son aquellos identificables por un robot de pila, de tal modo que todo analizador sintáctico que reconozca un lenguaje libre de contexto es equivalente en capacidad computacional a un robot de pila.


Los analizadores sintácticos fueron extensivamente estudiados a lo largo de los años mil novecientos setenta, detectándose abundantes patrones de funcionamiento en ellos, cosa que dejó la creación de programas generadores de analizadores sintáticos desde una especificación de la sintaxis del lenguaje en forma Backus-Naur por poner un ejemplo, como yacc, GNU bison y javaCC.


Algunos sistemas de traducción o bien procesamiento de idioma natural son léxicamente analizados por programas informáticos. Las oraciones no son sencillamente analizables debido a la carga de vaguedad que existe en la estructura del idioma humano. Para procesar el idioma humano los estudiosos deben ya antes ponerse conforme en la gramática a usar y esta resolución está influida por criterios lingüísticos y computacionales, por servirnos de un ejemplo ciertos sistemas de análisis utilizan gramáticas léxico-funcionales. Mas por lo general el análisis de gramáticas de este género es un NP-completo.


El «Head-driven phrase structure grammar» es otro formalismo que ha sido popular en la comunidad, mas los sacrificios en investigación se han centrado en algoritmos menos complejos como el de Penn Treebank. El análisis ligero «Shallow parsing» se encarga solo de hallar los componentes primordiales de la oración como nombres o bien verbos. Otra estrategia popular para eludir la polémica lingüística es la gramática de dependencias.


La mayoría de los analizadores modernos son por lo menos en parte estadísticos, esto desea decir que se fundamentan en unos datos de adiestramiento que han sido analizados a mano. Este enfoque deja al sistema reunir información sobre la frecuencia con que ocurren ciertas construcciones en un contexto concreto. Ciertos de estos enfoques han incluido gramáticas libres de contexto probabilísticas, sistemas de máxima entropía y redes neuronales.


Los sistemas más triunfantes emplean estadísticas léxicas, esto es consiguen la categoría gramatical de las palabras, estos sistemas son frágiles debido a que acaban por tener una cantidad excesiva de factores y por último requieren simplificaciones.


Los algoritmos de análisis de idioma natural no se pueden fundamentar en gramáticas que tengan unas buenas peculiaridades como se hace con las gramáticas diseñadas, por poner un ejemplo para los lenguajes de programación. Ciertos formalismos gramaticales son realmente difíciles de examinar computacionalmente, con lo que, por norma general se emplea una aproximación libre de contexto aun si la estructura en sí no es libre de contexto para conseguir una primera simplificación.


Los algoritmos que emplean gramáticas libres de contexto se acostumbran a fundamentar en alguna variación del algoritmo Cocke-Younger-Kasami (CYK) y heurística para la poda de análisis inútiles. En cualquier caso ciertos enfoques sacrifican la velocidad por la precisión utilizando, por poner un ejemplo, versiones lineales del algoritmo «shift-reduce». Enfoques últimamente desarrollados emplean un algoritmo que produce de múltiples análisis y otro que elige la opción mejor.


El empleo más frecuente de los analizadores sintácticos es como una parte de la fase de análisis de los compiladores. De forma que deben examinar el código fuente del lenguaje. Los lenguajes de programación tienden a fundamentarse en gramáticas libres de contexto, debido a que se pueden redactar analizadores veloces y eficaces para estas.


Las gramáticas libres de contexto tienen una expresividad limitada y solo pueden expresar un conjunto limitado de lenguajes. Informalmente la razón de esto es que la memoria de un lenguaje de este género es limitada, la gramática no puede rememorar la presencia de una construcción en una entrada arbitrariamente larga y esto es preciso en un lenguaje en el que por servirnos de un ejemplo una variable he de ser declarada antes que pueda ser referida. Las gramáticas más complejas no pueden ser analizadas de forma eficaz. Por tales razones es común crear un analizador permisivo para una gramática libre de contexto que admite un superconjunto del lenguaje (admite ciertas construcciones inválidas), tras el análisis inicial las construcciones incorrectas pueden ser filtradas.


Normalmente es simple acotar una gramática libre de contexto que admita todas y cada una de las construcciones de un lenguaje mas al contrario es casi imposible edificar una gramática libre de contexto que acepte solo las construcciones deseadas. En todo caso la mayor parte de analizadores no son construidos a mano sino más bien utilizando generadores automáticos.


Visión general del proceso


El siguiente caso prueba un caso común de análisis de un lenguaje de programación con 2 niveles de gramática, léxica y sintáctica.


El primer estado es la generación de tokens o bien análisis léxico, en este proceso la cadena de entrada se parte en símbolos con significado definidos por una gramática de expresiones regulares, por poner un ejemplo un programa calculadora con la próxima entrada: "12*(3+4)^2", la dividiría en los próximos tokens doce, *, (, tres, +, cuatro, ), ^ y dos, cada uno de ellos de estos símbolos tiene un significado en el contexto de la expresión aritmética. El analizador contendrá reglas para apuntar que los símbolos *, +, ^, ( y ) señalan el inicio de un nuevo token, de tal modo que otros tokens que carecerían de sentido como doce o bien trece no se producirán.


El siguiente estado es el análisis sintáctico lo que significa revisar que los tokens forman una expresión válida, esto se hace generalmente utilizando una gramática libre de contexto que define recursivamente componentes que pueden aparecer en una expresión y el orden en que estos deben aparecer. Las reglas que definen un lenguaje de programación no siempre y en toda circunstancia se pueden expresar utilizando solamente una gramática libre de contexto, por poner un ejemplo la validación de tipos y la declaración adecuada de identificadores. Estas reglas pueden expresarse formalmente utilizando gramáticas de atributos.


La fase final es el análisis semántico, que trabaja en las implicaciones de la expresión ya ratificada y efectúa las actuaciones pertinentes. En el caso de la calculadora, la acción es valorar la expresión. Un compilador por contra producirá código. Las gramáticas de atributos pueden ser utilizadas asimismo para delimitar estas acciones.


Análisis de dependencias

Diferencia entre un árbol de dependencia y un árbol de constituyentes

Otro procedimiento para efectuar análisis sintáctico o bien parsing es usando gramáticas de dependencias, que brotan como una opción alternativa a las estructuras de oraciones. En general estas gramáticas definen una relación de dependencia entre cada elemento de una construcción (en general son oraciones mas asimismo pueden ser solo oraciones) y su "cabeza" (o bien head ) . Estos elementos pueden ser palabras, tokens, lemmas o bien aun signos de puntuación. De manera adicional se llama a un factor 0 o bien "raíz"(root) a la cabeza del constituyente primordial, normalmente el verbo primordial de la oración. Es esencial no confundir dependencias con constituyentes, puesto que las relaciones de dependencia producen pares únicos y ordenados.


Los criterios para determinar la cabeza H de un dependiente D en una construcción C son los siguientes:


1. H determina la categoría sintáctica de C y H puede sustituir a C.


2. H determina la categoría semántica de C; D detalla a H.


3. H es obligatoria; D puede ser opcional.


4. H elige a D y determina si D es obligatoria.


5. La manera de D depende d H (agreement or government).


6. La situación linear de D es detallada respecto a H.


Sin embargo estos criterios pueden producir contradicciones o bien inconsistencias con criterios morfológicos o bien semánticos y no siempre y en todo momento es claro si los dependientes son opcionales o bien no.

Ejemplo de un análisis de dependencias en inglés

La labor de los analizadores de dependencias es, dada una oración, determinar las cabezas y el género de dependencia de cada uno de ellos de los elementos. El beneficio de usar este género de análisis es que se pueden eludir determinados inconvenientes en lenguajes con orden de palabras poco riguroso. Hay muchas formas diferentes de clasificar los modelos de dependencias mas CoNLL (Conference on Computational Natural Language Learning) ha creado un formato para empleo universal en análisis sintácticos de dependencias: CoNLL-U


Los resultados de los últimos sistemas en diferentes pruebas de análisis sintáctico han sido compilados en el lugar de la labor compartida (shared task), en el dos mil diecisiete la labor consistió en crear un analizador plurilingüe, esto es capaz de examinar diferentes idiomas.


  ELIGE TU TEMA DE INTERÉS: 


autoayuda.es   Internet y Tecnologias 

Está aquí: Inicio > [ INTERNET ] > ıllı Analizador sintáctico wiki: info, historia y vídeos

Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Ver políticas