viernes, 23 de abril de 2010

Habitantes de la Web semantica

La Web, tal y como se la conoce, es un espacio de información en el que cualquiera puede publicar documentos y ponerlos a disposición de todo el mundo, lo que ha supuesto una revolución en aplicaciones y nuevas formas de negocio tales como el comercio electrónico. La Web semántica es entendida como una Internet en la que las computadoras no sólo son capaces de presentar la información contenida en las páginas Web, como lo hacen ahora, sino que además pueden "entender" dicha información. La Web semántica es una extensión de la actual Web que permitirá encontrar, compartir y combinar la información más fácilmente. Actualmente la información presente en la Web se encuentra estructurada mediante lenguajes de marcas que únicamente describen la forma en que dicha información debe ser presentada al usuario por el navegador, pero no expresan nada sobre su significado, es decir, su semántica. El objetivo del proyecto de la Web semántica es que toda esta información sea comprensible no sólo por humanos, sino también por computadoras. Para conseguir esto se deberá codificar la semántica de los documentos Web mediante lenguajes de metadatos y ontologías, estas últimas definidas como representaciones compartidas de conocimiento en forma de taxonomías de conceptos relacionales y reglas de inferencia.

En la última década se ha producido una preocupación constante para que las páginas sean comprendidas por los usuarios a través del diseño pero poco se han preocupado para que las computadoras lo entendieran. La Web semántica propone superar las limitaciones de la Web actual mediante la introducción de un conjunto de descripciones explícitas del significado, la estructura interna y la estructura global de los contenidos y servicios disponibles en el servicio World Wide Web, promoviendo la separación de contenido y formato. Esta semántica permitirá que sus habitantes denominados agentes inteligentes, puedan “entender” el significado de los documentos, con lo que podrían asistir a usuarios en tareas como, por ejemplo, la recuperación de información o la gestión de su agenda.

En la práctica esto significa que las máquinas, entre las que se cuentan las computadoras personales o cualquier otro dispositivo conectado a Internet, podrán realizar, casi sin necesidad de intervención humana, infinidad de tareas que simplificarán la vida de las personas. La Web semántica, explican los autores, “no es una Web aparte sino una extensión de la actual en la que la información tiene un significado bien definido, posibilitando que las computadoras y las personas trabajen de manera cooperativa”. Así, lo que hasta ahora había sido básicamente “un medio de documentos para personas” pasará a ser un sistema de datos e información que se podrán procesar de manera automática.

Para explotar la Web semántica se necesita un lenguaje común con suficiente capacidad expresiva y de razonamiento para representar la semántica de las ontologías. Es necesario crear una ontología definida en formato de “descripción de recursos” y ubicada en la Web para determinar el significado contextual de una palabra por medio de la consulta a la ontología apropiada. De esta forma, agentes inteligentes y programas autónomos podrían rastrear la Web de forma automática y localizar, exclusivamente, las páginas que se refieran a la palabra buscada con el significado y concepto precisos con el que sea posible interpretar el término. Por lo tanto, para potenciar el uso de ontologías en la Web, se necesitan aplicaciones específicas de búsqueda de ontologías, que indiquen a los usuarios las ontologías existentes y sus características para utilizarlas en su sistema, como podría ser el uso del buscador semántico SWOOGLE.

En este sentido, se entiende por agente inteligente aquella entidad de software que habita la Web semántica, recoge, filtra y procesa la información contenida en la Web, realiza inferencias sobre dicha información e interactúa con el entorno sin necesidad de supervisión o control constante por parte del usuario. Las cualidades que tendría un agente inteligente ideal, según el investigador James A. Hendler, serían: (1) Comunicativo. El agente debe entender las necesidades, objetivos y preferencias del usuario para que éste pueda realizar su función correctamente. El agente también debe comunicarse con el entorno mediante representaciones compartidas de conocimiento, las ontologías. (2) Capaz. El agente no sólo debe proporcionar una información, sino también un servicio, es decir, debe tener capacidad para hacer cosas. Por ejemplo, si se precisa un artículo de revista y ésta es de pago, el agente debe ser capaz de encontrar el artículo, informar del precio, proporcionar el número de tarjeta de crédito, etc. (3) Autónomo. El agente, además de comunicarse, debe interactuar con el entorno, tomando decisiones y actuando por sí solo, limitando sus acciones según el nivel de autonomía permitida por el usuario. (4) Adaptativo. Debe ser capaz de aprender del entorno, las preferencias de usuarios, fuentes de información y de otros agentes.

La Web semántica debería ser capaz de procesar contenido, razonarlo y hacer deducciones lógicas a partir de éste, y cuando un usuario quiera, realizar todas estas acciones de forma automática. Un agente inteligente entiende lo que se pide, comprende el contenido de los sitios, valida si lo encontrado corresponde a lo pedido y deduce nueva información sobre la ya obtenida. Pero para realizar todas estas tareas es necesario estandarizar las funciones que aportan las distintas capas de la Web semántica: el alfabeto, las referencias, el lenguaje, el formato, las anotaciones sobre significados, los conceptos generales y las reglas y sistemas de deducción. La Web semántica se basa en la estandarización de todos sus datos, todo en la Web, páginas, servicios, etc., deben presentarse en el mismo formato, el cual puede ser comprendido por una nueva generación de agentes inteligentes que clasificarán la información de una manera más eficiente para devolver resultados más precisos ante una búsqueda o un pedido de información.

La idea es que los datos puedan ser utilizados y “comprendidos” por las computadoras sin necesidad de supervisión humana, de forma que los habitantes de la Web puedan ser diseñados para tratar la información situada en las páginas Web de manera semiautomática. Se trata de convertir la información en conocimiento, referenciando datos dentro de las páginas Web a metadatos con un esquema común consensuado sobre algún dominio. Los metadatos no sólo especificarán el esquema de datos que debe aparecer en cada instancia, sino que además podrán tener información adicional de cómo hacer deducciones con ellos, es decir, axiomas que podrán aplicarse en los diferentes dominios que trate el conocimiento almacenado. Con ello, se mejorará la búsqueda de información y se potenciará el desarrollo de aplicaciones, como el comercio electrónico, ya que las anotaciones de información seguirán un esquema común, y los buscadores Web compartirán con las anotaciones Web los mismos esquemas. Empresas que traten con clientes y proveedores, podrán intercambiar sus datos de productos siguiendo estos esquemas comunes consensuados.

Los agentes no sólo encontrarán la información de forma precisa, si no que podrán realizar inferencias automáticamente buscando información relacionada con la que se encuentra situada en las páginas, y con los requerimientos de la consulta indicada por el usuario. Por tanto, la Web semántica facilita que sean los agentes inteligentes quienes busquen, comparen y manejen la información de Internet para las personas. El papel del agente inteligente en el proceso de recuperación “semántica” de información no debe confundirse con la de un buscador inteligente. Un buscador inteligente se aprovecha del enriquecimiento semántico de los recursos Web para mejorar, principalmente en la precisión, la recuperación de información, aunque su funcionamiento se basará, como los actuales buscadores, en la previa indización de todos aquellos recursos susceptibles de ser recuperados.

En cambio, un agente inteligente recorrerá la Web a través de los enlaces entre recursos, hiperdocumentos, ontologías, en busca de aquella información que le sea solicitada, pudiendo además interactuar con el entorno para el cumplimiento de tareas encomendadas. Por ejemplo, un agente inteligente, ante una consulta dada, podría consultar autónomamente un buscador, y a partir de sus resultados, explorar la Web hasta encontrar la información solicitada, pudiendo finalmente llevar a cabo una acción sobre dicho recurso, como podría ser la reserva de un boleto aéreo La Paz – Santa Cruz o la reserva de una habitación en un hotel de Caranavi.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Febrero 22 de 2010

viernes, 16 de abril de 2010

Sistema experto basado en reglas

Los sistemas expertos son sistemas computacionales que se derivan de la inteligencia artificial. La meta científica de la inteligencia artificial es construir sistemas computacionales que exhiban comportamiento inteligente. El término inteligencia cubre muchas habilidades cognoscitivas, incluyendo la capacidad de solucionar problemas, de aprender, y de entender un idioma; la inteligencia artificial trata acerca de los tópicos señalados. La mayoría del progreso hecho hasta la fecha en la inteligencia artificial radica en el área de solución de problemas, los conceptos y métodos para construir programas que razonan sobre problemas en vez de solamente calcular su solución. Los programas de inteligencia artificial que alcanzan capacidad un nivel de experto del área en la solución de problemas aplicando un cuerpo del conocimiento sobre tareas específicas se llaman sistemas basados en conocimiento o sistemas expertos.

Los sistemas expertos son llamados así porque emulan el comportamiento de un experto en un dominio concreto y en ocasiones son usados por éstos. Con los sistemas expertos se busca una mejor calidad y rapidez en las respuestas dando así lugar a una mejora de la productividad del experto. Un sistema experto se puede definir formalmente como: "un modelo y sus procedimientos asociados que exhiben, dentro de un dominio específico, un grado de maestría en solucionar problemas comparable al de un experto humano." O de manera más breve: "un sistema experto es un sistema informático que emula la capacidad de toma de decisión de un experto humano." Un experto humano puede ser definido como persona que toma decisiones adecuadas en ambientes que están cargados con incertidumbre y riesgo, y tiene la capacidad superior de hacerlo dados su entrenamiento, experiencia y práctica profesional. Se puede resumir las siguientes características principales de un experto al cual un sistema experto intenta emular: (1) Habilidad en llegar a soluciones rápidas, adecuadas a los problemas. (2) Capacidad para manejar excepciones. (3) Conocimiento de sus limitaciones. El área del conocimiento humano que es capturado en un sistema experto se denomina el dominio de la tarea. La tarea se refiere a alguna actividad orientada a una meta para resolver un problema. El dominio se refiere al área dentro de la cual se está realizando la tarea. Las tareas típicas son el diagnostico, el planeamiento, la programación, la configuración, el diseño y la interpretación.

Un sistema experto está conformado por: (1) Base de conocimiento. La cual contiene conocimiento modelado extraído del diálogo con un experto. (2) Base de hechos o memoria de trabajo. Contiene los hechos sobre un problema que se ha descubierto durante el análisis. (3) Máquina de inferencia. Modela el proceso de razonamiento humano. (4) Módulos de explicación. Explica el razonamiento utilizado por el sistema para llegar a una determinada conclusión. (5) Interfaz de usuario. Es la interacción entre el sistema experto y el usuario, propuesto a ser realizado mediante lenguaje natural. Principalmente existen tres tipos de sistemas expertos: en primera instancia se encuentran los sistemas expertos basados en reglas previamente establecidas, en segundo lugar están los sistemas expertos basados en casos y en tercer lugar se encuentran los sistemas expertos basados en redes bayesianas. En cada uno de estos tipos de sistemas expertos, la solución a un problema planteado se obtiene: en primer lugar aplicando reglas heurísticas apoyadas generalmente en lógica difusa para su evaluación y aplicación, en segundo lugar aplicando el razonamiento basado en casos, donde la solución a un problema similar planteado con anterioridad se adapta al nuevo problema y, en tercera instancia, aplicando redes bayesianas, basadas en estadística y el teorema de Bayes.

Los sistemas basados en reglas trabajan mediante la aplicación de reglas, comparación de resultados y aplicación de las nuevas reglas basadas en situaciones modificadas. También pueden trabajar por inferencia lógica dirigida, bien empezando con una evidencia inicial en una determinada situación y dirigiéndose hacia la obtención de una solución, o bien con hipótesis sobre las posibles soluciones y volviendo hacia atrás para encontrar una evidencia existente, o una deducción de una evidencia existente, que apoye una hipótesis en particular. En el manejo de sistemas expertos existen dos tipos de elementos, por una parte se encuentran los datos, hechos o evidencia y por otra parte, el conocimiento, referido como el conjunto de reglas almacenadas en la base de conocimiento. La máquina de inferencia utiliza ambos tipos de elementos para obtener nuevas conclusiones. Por ejemplo, si la premisa de una regla es cierta, entonces la conclusión de la regla debe ser también cierta. Los datos iniciales se incrementan incorporando las nuevas conclusiones. Por ello, tanto los hechos iniciales o datos de partida como las conclusiones derivadas de ellos forman parte de los hechos o datos de los cuales se dispone en un instante dado. Para obtener conclusiones, los expertos utilizan diferentes tipos de reglas y estrategias de inferencia.

El “modus ponens” es quizás la regla de inferencia más comúnmente utilizada. Se utiliza para obtener conclusiones simples. En ella, se examina la premisa de la regla, y si es cierta, la conclusión pasa a formar parte del conocimiento. Como ilustración, supóngase que se tiene la regla, “Si A es cierto, entonces B es cierto" y que se sabe además que “A es cierto”. La regla Modus Ponens concluye que “B es cierto." Esta regla de inferencia, que parece trivial, debido a su familiaridad, es la base de un gran número de sistemas expertos. La regla de inferencia Modus Tollens se utiliza también para obtener conclusiones simples. En este caso se examina la conclusión y si es falsa, se concluye que la premisa también es falsa. Por ejemplo, supóngase de nuevo que se tiene la regla, “Si A es cierto, entonces B es cierto” pero se sabe que “B es falso.” Entonces, utilizando la regla Modus Ponens no se puede obtener ninguna conclusión pero la regla Modus Tollens concluye que “A es falso”. El rendimiento del motor de inferencia depende del conjunto de reglas en su base de conocimiento. Hay situaciones en las que el motor de inferencia puede concluir utilizando un conjunto de reglas, pero no puede, utilizando otro, aunque éstos sean lógicamente equivalentes.

Una de las estrategias de inferencia más utilizadas para obtener conclusiones compuestas es el llamado encadenamiento de reglas. Esta estrategia puede utilizarse cuando las premisas de ciertas reglas coinciden con las conclusiones de otras. Cuando se encadenan las reglas, los hechos pueden utilizarse para dar lugar a nuevos hechos. Esto se repite sucesivamente hasta que no pueden obtenerse más conclusiones. El tiempo que consume este proceso hasta su terminación depende, por una parte, de los hechos conocidos, y, por otra, de las reglas que se activan. Este algoritmo puede ser implementado de muchas formas. Una de ellas comienza con las reglas cuyas premisas tienen valores conocidos. Estas reglas deben concluir y sus conclusiones dan lugar a nuevos hechos. Estos nuevos hechos se añaden al conjunto de hechos conocidos, y el proceso continúa hasta que no pueden obtenerse nuevos hechos.

La programación basada en las reglas es una de las técnicas comúnmente usadas para crear bases de conocimiento. En este paradigma de programación, las reglas se utilizan para representar conocimiento factual o heurístico, que especifican un sistema las acciones que se realizarán para una situación dada. Una regla se compone de una parte "si" y una parte "entonces". La parte "si" de una regla es una serie de patrones que especifican los hechos, o los datos, que hacen que se aplique una regla. Junto con los datos, los hechos también están presentes en la base de conocimiento. Estos hechos representan declaraciones verdaderas que se utilizan para activar las reglas. Una de las ventajas de las reglas “si-entonces” es su modularidad, cada una define un pedazo relativamente pequeño y, por lo menos en principio, independiente de conocimiento. Nuevas reglas pueden ser agregadas y las viejas pueden ser suprimidas, generalmente de manera independiente de otras reglas.

El paradigma “Generar-Probar-Depurar” es un marco para que el razonamiento asociativo y causal que produce sistemas expertos, basados en reglas, que son eficientes y robustos. Generar-Probar-Depurar se basa en un ciclo donde primero una buena solución aproximada se genera, en la fase de generación. Esta solución se analiza en la búsqueda de los posibles errores, en la fase de pruebas. Si se encuentra un error, el sistema intentará solucionarlo, en la fase de depuración. La solución refinada se prueba otra vez para encontrar posibles errores. Este lazo continúa hasta que la fase de pruebas aprueba la solución. Este acercamiento asume que el problema es un conjunto formado por un conocimiento inicial y un objetivo final que se desea alcanzar. El conocimiento inicial es toda la información que está disponible al principio del proceso de solución, se podría llamar estado inicial, y el objetivo final representa el estado que el sistema tiene que alcanzar basado en una serie de deducciones, la cual se podría llamar el estado final. La hipótesis se puede considerar como un conjunto de suposiciones que el sistema establece con base en el conocimiento inicial y las reglas de producción. La solución es el conjunto de suposiciones que interpretan correctamente el objetivo final, basándose en el conocimiento inicial.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Febrero 15 de 2010

viernes, 9 de abril de 2010

Inteligencia artificial fuerte

En sus inicios la inteligencia artificial se fundamento en las denominadas búsquedas heurísticas. Se creía que el hombre resolvía todos los problemas a través de métodos heurísticos y se pensaba que la mente estaba conformada por potentes mecanismos heurísticos capaces de partir de lo general a lo particular tal como sucedía con los algoritmos computacionales. Se creía que todos los problemas se podían resolver recorriendo un árbol de objetivos y que la solución del problema consistía en encontrar el camino correcto, desechando todas aquellas vías poco factibles. La dificultad estaba en cómo desechar esas ramas o caminos improductivos, quién podría garantizar que ese camino después no fuese el más adecuado, hasta qué profundidad había que recorrer el árbol para estar seguro de que esa vía era errónea, cómo evitar, qué producto de la ramificación creciente del árbol, un exceso de combinaciones incalculables.

La inteligencia artificial se divide en dos grupos: (1) Inteligencia artificial fuerte. Cuyo objetivo es construir programas que emulen el comportamiento inteligente de los humanos como el pensamiento, el aprendizaje, la visión, la resolución de problemas, la creatividad, etc. Ya que estos modos de comportamiento se pueden explicar algorítmicamente en términos de estados mentales. (2) Inteligencia artificial débil. Cuyo objetivo consiste en la construcción de máquinas capaces de resolver problemas que requieran de inteligencia. Para ello se construyen programas que tengan un comportamiento inteligente sin importar si emula o no a la inteligencia humana.

Dos de los grandes gurus de la inteligencia artificial: Allen Newell y Herbert Simon, escribieron que "ahora hay máquinas que leen, aprenden y pueden crear", con lo que trataban de dar a entender que se había dado una solución al problema mente-cuerpo. Más adelante el investigador Jhon Searle en su texto titulado "Mentes, Cerebros, Ciencia" ataca este pensamiento, y con el experimento de la “habitación china” muestra cómo una máquina puede realizar una acción sin siquiera entender lo que hace y el por qué lo hace. Por lo tanto según Searle la lógica usada por las computadoras es nada más una que no busca el contenido en la acción como la que es utilizada por los seres humanos.

La idea de una inteligencia artificial fuerte ha sido el sueño de casi todos los investigadores de ese campo, pero uno de sus puntos débiles es que aun aceptando que la mente puede ser reproducida en otro medio, ese medio que hace de receptor debe tener un mínimo de equivalencia, no sólo funcional, con el donador. Equivalencia que no parece existir entre la estructura del cerebro y la arquitectura de la computadora, llamada de Von Neumann, que ha sido tildada de ineficiente por muchos, debido a su procesamiento secuencial y a su manipulación de símbolos numéricos. Lo cual obligó a los programadores a elaborar meta sistemas que se soporten sobre otros sistemas más cercanos a la maquina con el fin de resolver los problemas de la arquitectura de la computadora. Otros han propuesto la creación de nuevas arquitecturas que sean capaces de manipular inferencias por segundos en lugar de operaciones, como las computadoras convencionales. Y ya son muchos los investigadores que aceptan que la arquitectura de Von Neumann, en su época considerada equivalente al funcionamiento del cerebro, no permite una representación adecuada de los procesos mentales y no sólo los representantes de la inteligencia artificial, también los creadores de lenguajes de computación se quejan y hablan de nuevas estructuras de programación con diferentes arquitecturas: lógicas, funcionales, recurrentes, orientadas a objetos, difusas, etc.

La tesis central de la inteligencia artificial fuerte es que los procesos realizados por una computadora son idénticos a los que realiza el cerebro, y por lo tanto se puede deducir que, si el cerebro genera conciencia, también las computadoras deben ser conscientes. Para refutar esta posición, Searle desarrolla el siguiente experimento mental conocido como “habitación china”: “Imagine que un individuo es colocado en una habitación cerrada al exterior en China. Por una rendija le son entregados papeles con símbolos chinos que desconoce absolutamente pues el individuo no conoce el idioma chino. Con unas instrucciones en inglés, o cualquiera que fuera su lengua madre, se le indica que debe sacar por la misma rendija una respuesta de acuerdo a un manual que se le ha entregado. En dicho manual sólo aparecen símbolos chinos de entrada y los correspondientes símbolos de salida. Así, el individuo puede localizar los símbolos que le son entregados y puede sacar papeles con símbolos diferentes. Los chinos que estén fuera de la habitación pensarán que el de la habitación conoce el chino pues han recibido respuestas satisfactorias. Searle considera que lo mismo ocurre con una computadora. Ésta manipula diferentes códigos sintácticos que nada tienen que ver con la comprensión semántica de los contenidos procesados. Evidentemente, el concepto de intencionalidad está en el fondo del argumento de la habitación china de Searle en contra de la inteligencia artificial.

La inteligencia artificial acepta la dualidad cuerpo-mente, y también parte de la suposición de un soporte físico, el cerebro, el cual "funcionalmente" es igual a una máquina y el objetivo es reproducir la mente sobre la computadora. Por otra parte se afirma que la inteligencia artificial se fundamenta sobre el materialismo: La inteligencia humana se hace realidad sobre la materia. Si se parte de la base de que los pensamientos se generan en un alma inmaterial y que su relación con el cerebro es incidental, entonces se está negando la posibilidad de lograr alguna forma de inteligencia artificial. Dicho de otra forma el dualismo en filosofía supone que el alma es independiente del cuerpo, cuando muere el cuerpo el alma sigue viva. En el caso de la computadora se puede romper la computadora pero los programas se pueden usar en otra computadora. Lo cual lleva a la necesidad de considerar que la mente es independiente del cerebro y que la misma puede ser traspasada para otro cerebro.

La dificultad radica en que si se acepta el dualismo filosófico se debe también aceptar el idealismo. La pregunta sería: ¿si se acepta el dualismo mente-cuerpo se tendría entonces una mente que existe independiente del cerebro o sea el alma? Pero, entonces, los pensamientos se generarían sobre un alma inmaterial, por lo que, no necesitarían de ningún soporte físico, llámese cerebro o llámese computadora. De ahí que la inteligencia artificial tenga que hacer una adaptación y proponer un “dualismo-materialista”, afirmando categóricamente que la inteligencia humana se hace realidad sobre la materia.

El reduccionismo afirma que se pueden explicar los fenómenos reduciéndolos a un nivel más elemental. Por ejemplo: la conducta humana puede reducirse a estudios neurofisiológicos, el estudio del cerebro puede reducirse a la biología celular, etc. La inteligencia artificial es reduccionista, ya que trata de reducir los procesos complejos de la mente a sencillos procesamientos de la información. La mente es un sistema de procesamiento de la información que cumple con las leyes de la manipulación de símbolos y de estructuras complejas. Para algunos los humanos y las computadoras son dos especies de un mismo género: los sistemas de procesamiento de la información. Aceptar a la mente humana como una forma de procesamiento de la información trae como consecuencia que se produzcan dos fenómenos inversos: (1) La generalización de los sistemas procesadores de información. (2) La simplificación de la mente humana o el reduccionismo. El problema radica en la generalización que se le quiere dar a los sistemas de procesamiento de la información. Hay palabras que para los creadores de teorías, toman un significado trascendental y se convierten en un "símbolo" cargado de significados adicionales, en muchos casos abiertos a nuevas manipulaciones, que se adaptan a la interpretación del contexto de la teoría, como es el caso del término "procesamiento de la información".

Si la mente es parte del cerebro y es este quien la genera y si se acepta que la mente es propiedad exclusiva del cerebro. Entonces, el gran sueño de la inteligencia artificial de lograr reproducir la mente humana en una computadora no sería posible. Ya que es en el cerebro donde se codifican los procesos mentales, lo cual hace que no se pueda separar la mente del cerebro, no solo por el hecho de que la mente necesita de un soporte físico como ya se dijo al analizar el dualismo mente-cuerpo, sino porque los procesos mentales tienen que ser producidos por alguien que tenga existencia material: el cerebro, que es la causa de los pensamientos. Esto lleva a la conclusión, de que si se quiere lograr algún tipo de intelecto artificial se debe tratar de reproducir al cerebro y no a la mente, por ser esta última, tan solo, una manifestación abstracta del complejo funcionamiento del cerebro. Por lo que, actualmente, muchos investigadores de la inteligencia artificial han abandonado el paradigma simbolista, el de la mente, para dedicarse al conexionista, el del cerebro, y a través de los sistemas de redes neuronales, intentan comprender como trabaja el cerebro.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Febrero 8 de 2010

viernes, 2 de abril de 2010

Lenguajes de marcado

Un lenguaje de marcado o lenguaje de marcas es una forma de codificar un documento que, junto con el texto, incorpora etiquetas o marcas que contienen información adicional acerca de la estructura del texto o su presentación. El lenguaje de marcas más extendido es el “Lenguaje de Marcado de Hipertexto”, fundamento del servicio World Wide Web de Internet. Los lenguajes de marcado suelen confundirse con lenguajes de programación. Sin embargo, no son lo mismo, ya que el lenguaje de marcado no tiene funciones aritméticas o variables, como sí poseen los lenguajes de programación. Históricamente, el marcado se usaba y se usa en la industria editorial y de la comunicación, así como entre autores, editores e impresores. Los lenguajes de marcas no son lenguajes de formato similar a los lenguajes que se usan en Internet como los de descripción de páginas, ni son lenguajes de programación, sino que se trata de lenguajes orientados a definir la estructura y la semántica de un documento. En realidad, más que de lenguajes, podría hablarse de metalenguajes o sistemas formales mediante los cuales se añade información o codificación a la forma digital de un documento bien para controlar su procesamiento o bien para representar su significado.

Un lenguaje de marcado cumple con dos objetivos esenciales a la hora de diseñar y procesar un documento digital. Especifica las operaciones tipográficas y las funciones que debe ejecutar el programa visualizador sobre dichos elementos. Las operaciones tipográficas son instrucciones de formato que se aplican a cada uno de los elementos de un documento digital como, por ejemplo, imprimir un título en negrita y a un determinado tamaño. Separa un texto en los elementos de los que se compone, como por ejemplo un párrafo, un capítulo, un encabezamiento, etc. De esta manera existen dos tipos de marcado: (1) Marcado específico, en el cual se describe cómo debe ser formateado el documento en relación con la fuente, tamaño, color, etc. (2) Marcado estructural, que se encarga de la descripción de la estructura del documento, los títulos, párrafos, etc.

Los lenguajes de marcado presentan las siguientes características: (1) Texto plano. Son archivos de texto plano, por lo que la información puede ser interpretada directamente, y se editan con un editor de textos sencillo. Como son documentos únicamente de texto, son independientes del exterior, de tal manera que no restringe el intercambio de información. Esta es una de las razones de su gran aceptación. (2) Facilidad de procesamiento. Las organizaciones de estándares han estado desarrollando lenguajes especializados para las distintas especialidades de conocimiento y comunidades científicas concretas. Se han elaborado lenguajes adaptados a cada una de las necesidades de conocimiento. Un buen ejemplo fue el caso de la empresa Sun Microsystems, que escribió la documentación de sus productos en el “Lenguaje de Marcado Generalizado Estándar” y produjo una gran reducción de costos. El responsable de la decisión fue Jon Bosak, que más tarde fundó el comité del “Lenguaje de Marcado Extendido”. (3) Flexibilidad. Originalmente los lenguajes de marcado se desarrollaron para documentos textuales, pero debido a su alta aceptación se han empezado a utilizar en otras áreas y aplicaciones, como servicios web o interfaces de usuarios. Éstas se benefician de las ventajas del “Lenguaje de Marcado Extendido” y permiten combinar diferentes lenguajes de marcado en el mismo documento.

Suele diferenciarse entre tres clases de lenguajes de marcado, aunque en la práctica pueden combinarse varias clases en un mismo documento. (1) Marcado de presentación. Este marcado es aquel que indica el formato del texto. Este tipo de marcado es útil para maquetar la presentación de un documento para su lectura, pero resulta insuficiente para el procesamiento automático de la información. El marcado de presentación resulta más fácil de elaborar, sobre todo para cantidades pequeñas de información. Sin embargo resulta complicado de mantener o modificar, por lo que su uso se ha ido reduciendo en proyectos grandes en favor de otros tipos de marcado más estructurados. Se puede tratar de averiguar la estructura de un documento de esta clase buscando pistas en el texto. (2) Marcado de procedimientos. Este marcado se encuentra enfocado hacia la presentación del texto, sin embargo, también es visible para el usuario que edita el texto. El programa que representa el documento debe interpretar el código en el mismo orden en que aparece. Algunos ejemplos de marcado de procedimientos son nroff, troff, TeX. Este tipo de marcado se ha usado extensivamente en aplicaciones de edición profesional, manipulados por tipógrafos calificados, ya que puede llegar a ser extremadamente complejo. (3) Marcado descriptivo. Este marcado, denominado también marcado semántico, utiliza etiquetas para describir los fragmentos de texto, pero sin especificar cómo deben ser representados, o en qué orden. Los lenguajes expresamente diseñados para generar marcado descriptivo son el “Lenguaje de Marcado Generalizado Estándar” y el ““Lenguaje de Marcado Extendido”., en los cuales las etiquetas pueden utilizarse para añadir al contenido cualquier clase de metadatos. Una de las virtudes del marcado descriptivo es su flexibilidad: los fragmentos de texto se etiquetan tal como son, y no tal como deben aparecer. Estos fragmentos pueden utilizarse para más usos de los previstos inicialmente. El marcado descriptivo está evolucionando hacia el marcado genérico. Los nuevos sistemas de marcado descriptivo estructuran los documentos en árbol, con la posibilidad de añadir referencias cruzadas. Esto permite tratarlos como bases de datos, en las que el propio almacenamiento tiene en cuenta la estructura, no como en los grandes objetos binarios como en el pasado. Estos sistemas no tienen un esquema estricto como las bases relacionales, por lo que a menudo se las considera bases semiestructuradas.

Debido a la gran variedad de formatos existentes a la hora de archivar documentos y de los problemas que se planteaban cuando se intercambiaban archivos con las consiguientes pérdidas de formato y otras características, estos problemas se intentaron solucionar editando los textos en el “Código Estándar Americano para el Intercambio de la Información”, con el uso de un código de siete bits que puede representar un máximo de ciento veintiocho caracteres, muchos de ellos no imprimibles. Sin embargo, con la utilización de este código, no se podía definir el formato de un texto, entre otras cosas el uso de negrita o cursiva, o el uso de tipos de letra más grandes para los encabezamientos, ni se podían definir otras características relativas a la posición del texto, por lo que se intentó buscar un sistema de marcas con las que se pudieran determinar éstas y otras particularidades. Se acordó, pues, que las marcas deberían constar de unos caracteres especialmente reservados para ello y que deberían seguirse unas reglas sintácticas especiales. Así nació un lenguaje especial normalizado internacional para la formulación de este tipo de reglas llamado “Lenguaje de Marcado Generalizado Estándar”. Este lenguaje no es pues, un lenguaje en sí mismo, sino un metalenguaje y de él se deriva el lenguaje de marcado de hipertexto, y otros muchos lenguajes de marcas.

El lenguaje de marcado generalizado estándar es una norma ISO que permite que la estructura de un documento pueda ser definida con base en la relación lógica de sus partes. Esta estructura puede ser validada por una definición de tipo de documento. La norma del lenguaje de marcado generalizado estándar define la sintaxis del documento además de la sintaxis y semántica de la definición del tipo de documento. El año 1969 la empresa IBM ideó el “Lenguaje de Marcado Generalizado” con el objetivo de crear un sistema general que permitiera la compatibilidad entre los documentos. En 1978, el Instituto Nacional Americano de Normalización comenzó a trabajar en las especificaciones para los procesadores de textos y el resultado fue el “Lenguaje de Marcado Generalizado Estándar”, que se convirtió en la Norma ISO 8879 en el año 1986. En el lenguaje de marcado generalizado estándar el etiquetado de un fragmento de texto se realiza a través de las etiquetas o marcas. Estas marcas se diferencian del propio texto porque aparecen entre paréntesis angulares en caracteres ASCII que, por tanto, se convierten en signos reservados para la sintaxis. Una pareja de marcas o etiquetas encierran el texto al que afectan. Con la sintaxis del lenguaje de marcado generalizado estándar se pretende identificar la estructura lógica de un documento a través de estas marcas. Las etiquetas marcan los distintos elementos de un texto, como los encabezamientos o los párrafos, representando de la misma forma los elementos de la misma categoría. La presentación final de estos elementos viene determinada por las especificaciones de estilo especiales.

Los lenguajes de marcado de hipertexto y de marcado extendido son, simplemente, dialectos y simplificaciones del lenguaje de marcado generalizado estándar, ya que éste es demasiado complejo. El lenguaje de marcado extendido se diferencia en que es un lenguaje extensible. El término extensibilidad se entiende como la facultad de flexibilidad para el cambio que posee un lenguaje, programa o aplicación determinada, para soportar nuevas funcionalidades cuando se produzcan cambios o se incorporen nuevos elementos, sin que se alteren los elementos o bases existentes, o alterando mínimamente los existentes.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Febrero 1 de 2010