SEGMENTACIÓN DE DOCUMENTOS CON BASE EN LA VISIÓN
Campo de la Invención La presente invención se refiere a la división de documentos, y particularmente a la segmentación de documentos con base en la visión. Antecedentes de la Invención Las personas tienen acceso a una gran cantidad de información. Sin embargo, puede ser muy difícil encontrar la información particular que se desea en cualquier situación determinada. Por ejemplo se puede tener acceso a una gran cantidad de información en Internet en forma de páginas de redes informáticas. El número de dichas páginas de redes informáticas se encuentra pueden ser millones o más. Adicionalmente, las páginas de redes informáticas disponibles están cambiando constantemente, algunas páginas se añaden, mientras otras se eliminan y otras sufren modificaciones. De esta manera, cuando alguna persona desea encontrar información, por ejemplo responder alguna pregunta, la capacidad de extraer la información particular de esta enorme fuerte de información es muy importante. Se han desarrollado procesos y técnicas para permitir que los usuarios busquen información en Internet, y comúnmente están disponibles para los usuarios en forma de procesadores de búsqueda. Sin embargo, es posible que no se obtenga la precisión deseada de dichos procesadores, debido en gran parte a la extremadamente amplia gama de contenidos de las páginas de redes informáticas en las que se hace la búsqueda. Por ejemplo, algunas páginas de redes informáticas incluyen derechos de autor y otros anuncios relacionados entre ellas, y algunas páginas de redes informáticas incluyen anuncios comerciales. Dichos datos de anuncios comerciales y los relacionados con empresas no siempre son pertinentes al contenido subyacente de la página de red informática, y de esta manera se puede ver reducida la precisión del proceso de búsqueda si se considera. En otro ejemplo, diferentes páginas de redes informáticas pueden tener una gran variación en cuanto a tamaño y algunas pueden incluir varios temas, y otras pueden contener un solo tema. Estas características de las páginas de redes informáticas pueden reducir la precisión de los procesos de búsqueda. De esta manera, sería benéfico contar con una manera para incrementar la precisión en la búsqueda de documentos. Sumario de la Invención En el presente documento se describe la segmentación de documentos con base en la visión. De conformidad con un aspecto, se identifican una o más porciones de contenido semántico en un documento. La porción o las porciones se identifican mediante la identificación de una pluralidad de bloques visuales dentro del documento y mediante la detección de uno o más separadores entre los bloques visuales de la pluralidad de bloques visuales. Una estructura de contenido para el documento está construida con base al menos en una parte en la pluralidad de los bloques visuales y uno o más separadores y la estructura de contenido identifica los diferentes bloques visuales o porciones diferentes de contenido semántico del documento. De conformidad con otro aspecto, durante la recuperación de un documento se usa la estructura del contenido que se obtiene usando la segmentación de documentos con base en la visión . Breve Descripción de los Dibujos Se usan los mismos números en todo el documento para hacer referencia a componentes y/o características similares. La figura 1 es un diagrama de bloques que ilustra un sistema ejemplar que usa una segmentación de documentos con base en la visión; La figura 2 es un diagrama de flujo que ¡lustra un proceso ejemplar para realizar la segmentación de documentos con base en la visión; La figura 3 es un diagrama de flujo que ilustra un procesó ejemplar para realizar la identificación de bloques visuales; La figura 4 es un diagrama de flujo que ilustra un proceso ejemplar para realizar la detección de los separadores visuales; Las figuras 5a, 5b, 5c, 5d, 5e y 5f ilustran un ejemplo de la detección de separadores horizontales; La figura 6 es un diagrama de flujo que ilustra un proceso ejemplar para realizar una construcción de estructura de contenido; La figura 7 ilustra un ejemplo de la generación de bloques virtuales y un árbol de estructura de contenido; La figura 8 es un diagrama de flujo que ilustra un proceso ejemplar para recuperar documentos usando la segmentación de documentos con base en la visión; La figura 9 es un diagrama de flujo que ilustra otro proceso ejemplar para recuperar documentos usando la segmentación de documentos con base en la visión; La figura 10 es un diagrama de flujo que ilustra otro proceso ejemplar para recuperar documentos usando una segmentación de documentos con base en la visión; La figura 11 ilustra un ejemplo de un entorno de cómputo general, el cual se puede usar para incrementar las técnicas que se describen en la presente. Descripción Detallada de la Invención En el presente documento se describe la segmentación de documentos con base en la visión. La segmentación de documentos con base en la visión identifica, con base en la apariencia visual de un documento, varias porciones del documento que incluyen el contenido semántico de dicho documento. La segmentación de documentos con base en la visión se puede usar de diversas maneras. Por ejemplo, la segmentación se puede usar cuando se buscan documentos, de manera que los resultados de la búsqueda se basan en las porciones de contenido semántico del documento. Los análisis de la presente hacen referencia a los documentos y modelos que se usan para describir las estructuras de los documentos. Los documentos pueden estar en cualquiera de una variedad de formatos, por ejemplo de conformidad con un Lenguaje de etiquetado generalizado normalizado (SGML), por ejemplo el Formato de etiquetado extensible (XML) o el formato de Lenguaje de etiquetado de hipertexto (HTML). En algunas modalidades, estos documentos son páginas de redes informáticas en formato de HTML. Los modelos que se analizan en la presente pueden ser cualquiera de una variedad que describen la estructura de un documento. En algunas modalidades, el modelo que se usa es un Modelo de objeto documento (DOM). El Modelo de objeto documento es una representación con estructura de árbol de un documento, también denominado árbol DOM. En muchos de los análisis de la presente, los documentos que se describen como si tuvieran un formato HTML (por ejemplo, páginas de redes informáticas), el modelo se describe como un árbol DOM, y cada etiqueta de HTML del documento se representa mediante un nodo en el árbol DOM (el árbol DOM también puede incluir nodos adicionales, por ejemplo nodos #texto o #comentario, los cuales pueden no representar una etiqueta HTML). Sin embargo, debe considerarse que la segmentación de documentos con base en la visión también se puede usar con estos otros documentos y/o modelos. La figura 1 es un diagrama de bloques que ilustra un sistema de ejemplo 100 que usa la segmentación de documentos con base en la visión. El sistema 100 incluye un módulo de segmentación de documentos con base en la visión 102 que tiene un extracción de bloques visuales 104, un detector del separador visual 106 y un constructor de la estructura de contenido 108. Se puede tener acceso a la descripción de un documento para el módulo de segmentación de documentos con base en la visión 102. Esta descripción de documento es un modelo que describe la estructura del documento, como un árbol DOM. La descripción del documento puede generarse por otro componente (no se muestra) y puede ser accesible para el módulo 102, o alternativamente, el documento en sí mismo puede ser accesible para el módulo 102 y el módulo 102 puede generar la descripción del documento. El extracción de bloques visuales 104 identifica, con base en la descripción del documento, múltiples bloques visuales del documento. Esta identificación (también denominada en la presente como extracción) de los bloques visuales se basa en entradas visuales dentro del documento, por ejemplo el tamaño de fuente y/o los tipos de fuente, los colores de fuente y/o la información en segundo plano, el tipo de etiqueta HTML, etc. Los bloques identificados son regiones del documento. Los bloques identificados se emiten a través del extracción 104 y se hacen disponibles para el detector de separador visual 106. El detector del separador visual 106 detecta los separadores entre los bloques diferentes que se han identificado. Estos separadores pueden tener diferentes formas, como líneas en el documento, espacios en blanco dentro del documento, colores de segundo plano diferentes para diferentes bloques, etc. En algunas modalidades, se detectan separadores en la dirección horizontal y/o vertical dentro del documento. Estos separadores detectados se hacen disponibles para el constructor de estructura de contenido 108. El constructor de la estructura de contenido 108 genera una estructura de contenido para el documento con base en los bloques identificados por el extracción 104, así como los separadores detectados por el detector 106. La estructura de contenido es un conjunto de una o más porciones del documento que representa el contenido semántico de un documento. El módulo 102 emite la estructura de contenido. La estructura de contenido del documento entonces se puede usar de diversas maneras. En algunas modalidades, el sistema 100 incluye un módulo opcional de recuperación de documentos 110. El módulo de recuperación de documento 110 usa la estructura de contenido partiendo de un módulo de segmentación con base en la visión 102 al determinar qué documentos debe devolver como respuesta a una consulta. Por ejemplo, cuando un usuario introduce uno o más términos de búsqueda al hacer una búsqueda en páginas de redes informáticas, la estructura de contenido se puede usar para determinar cuáles páginas de redes informáticas satisfacen los criterios. La manera en que se puede usar la estructura de contenido durante la recuperación del documento puede variar. En algunas modalidades, la estructura del contenido se usa para clasificar los documentos que se recuperan como respuesta a una consulta. Adicionalmente, en algunas modalidades la estructura de contenido se usa como una base para expandir los criterios de búsqueda. Estos usos se analizan a continuación detalladamente. Debe observarse que la segmentación de documentos con base en la visión que se describe en la presente utiliza la manera en que se verá un documento al mostrarlo. En la segmentación de documentos con base en la visión no es necesario que un documento se muestre en realidad, y la segmentación de documentos con base en la visión tampoco requiere que el usuario vea realmente la visualización de un documento. La figura 2 es un diagrama de flujo que ilustra un proceso ejemplar 140 para realizar la segmentación de documentos con base en la visión. El proceso 140 se implementa mediante el módulo de la segmentación de documentos con base en la visión 102 de la figura 1, y puede realizarse en programas de cómputo, instrucciones inalterables, equipos de cómputo o combinaciones de los mismos. Inicialmente, se tiene acceso a la descripción de un documento (acción 142). Esta descripción de documento es, por ejemplo, un árbol DO para una página de redes informáticas HTML. Con la descripción del documento, se identifican uno o más bloques visuales dentro del documento (acción 144). Los separadores entre los bloques visuales identificados se detectan (acción 146), y se construye una estructura de contenido para el documento con base en los bloques visuales ¡dentificados y los separadores detectados (acción 148). Entonces se realiza una verificación para comprobar si la estructura de contenido satisface un requerimiento de granularidad (acción 150). Este requerimiento de granularidad se refiere a un grado de coherencia (DoC) para los bloques visuales de la estructura de contenido, esto es una medida para el nivel de coherencia para cada uno de los bloques visuales. Si no se satisface el requerimiento de granularidad, entonces el proceso 140 regresa al acción 144, en donde se identifican nuevos bloques visuales dentro de las porciones de la estructura de contenido que no cubrieron el requerimiento de granularidad. Una vez que se satisface el requerimiento de granularidad, se emite la estructura de contenido para el documento (acción 152). Cada paso a través de la combinación de las acciones 144, 146 y 148 (esto es, la identificación de bloques visuales, la detección de separadores de los bloques identificados y la construcción de la estructura de contenido con base en los bloques visuales identificados y los separadores detectados) y se denomina en la presente como una "ronda". De esta manera, puede observarse que la segmentación del documento con base en la visión emplea un enfoque de arriba hacia abajo. En general, se identifica un conjunto inicial de bloques visuales y se hace disponible para la detección de separadores visuales y la construcción de estructura de contenido como se analizó anteriormente. Dentro de estos bloques visuales, se identifican bloques visuales adicionales en rondas posteriores como sea adecuado (esto es, los bloques visuales adicionales se identifican en rondas posteriores para cada bloque visual que no satisface el requerimiento de granularidad). Como se analiza en la presente, se asume que los documentos que se usan son de forma rectangular en su visualización. De esta manera, algunos tamaños, dimensiones, áreas, etc., se describe en la presente con referencia a un sistema cartesiano de coordenadas rectangular (por ejemplo, un sistema de coordenadas X, Y) o rectangular. Será evidente que estos únicamente son ejemplos y que las formas rectangulares y los sistemas de coordenadas pueden ser diferentes. En algunos ejemplos, si se usan formas no rectangulares se convierten a formas rectangulares antes de realizar la segmentación del documento con base en la visión. En otros casos, el proceso y las técnicas descritos en la presente se adaptan para usar estas formas y/o sistemas de coordenadas diferentes. Identificación de Bloques Visuales La identificación de bloques visuales, también denominada en la presente extracción de bloques visuales, identifica diferentes regiones del documento con base en entradas visuales. Una indicación de estas regiones diferentes entonces se emite y se usa la detección del separador visual, como se analiza a continuación con mayor detalle. La identificación de bloques visuales (por ejemplo, en la acción 144 de la figura 2 o implementado por el extracción de bloques visuales 104 de la figura 1) se puede realizar como se indica a continuación. Generalmente, cada uno de los nodos en el árbol DOM para un documento puede representar un bloque visual. Algunos nodos grandes (por ejemplo, que tienen etiquetas <TABLA> o <P>) típicamente se usan sólo para mantener una organización y no se toman en cuenta para representar un solo bloque visual. De esta manera, dichos nodos grandes se dividen adicionalmente y se reemplazan por sus nodos descendientes. Por otro lado, debido al enorme número de nodos de vértice terminal, los bloques visuales no deben identificarse inicialmente como si fuera cada nodo de vértice terminal en el árbol DOM (aunque, debido a la naturaleza de arriba hacia debajo de la segmentación del documento con base en la visión, algunos de estos nodos de vértice terminal finalmente pueden identificarse como bloques visuales). La figura 3 es un diagrama de flujo que ilustra un proceso de ejemplo 170 para realizar la identificación de un bloque visual. El proceso 170 ilustra la acción 144 de la figura 2 con mayor detalle. El proceso 170 puede realizarse en programas de cómputo, instrucciones inalterables, equipos de cómputo o combinaciones de estos. Inicialmente, un nodo de un grupo de nodos candidatos del árbol DOM se selecciona (acción 172). Este grupo de nodos candidatos se refiere a nodos del árbol DOM que son potencialmente bloques visuales en la ronda actual. Los nodos candidatos pueden cambiar mientras se realiza el proceso 170, como se analiza detalladamente a continuación. En algunas modalidades, el grupo de nodos candidatos inicialmente es un nodo único, el nodo único es el nodo de raíz del árbol DOM en la primera ronda o el nodo superior de un subárbol del árbol DOM en las rondas posteriores (por ejemplo, el nodo superior de una parte del árbol DOM que corresponde a un bloque visual que no satisface el requerimiento de granularidad). Alternativamente, el grupo inicial de nodos candidatos puede ser diferente, como los nodos que se encuentran un nivel debajo del nodo raíz en el árbol DOM o los nodos un nivel debajo del nodo superior de un subárbol del árbol DOM. Entonces se hace una verificación para saber si el nodo seleccionado se puede dividir (acción 174). Si el nodo seleccionado se puede dividir, entonces cada nodo descendiente del nodo seleccionado se añade al grupo de nodos candidatos (acción 176) y el nodo seleccionado se elimina del grupo de nodos candidatos (acción 178). El proceso 170 entonces regresa al acción 172 y selecciona otro nodo del grupo de nodos candidato. Volviendo al acción 174, si el nodo seleccionado no se puede dividir, entonces el nodo seleccionado representa un bloque visual (acción 180) y se añade a un conjunto de bloques visuales identificados por el proceso 170. Se establece un valor de grado de coherencia (DoC) para el bloque visual (acción 182), como se analiza con mayor detalle a continuación, y el nodo seleccionado se retira del grupo de nodos candidatos (acción 184). También se realiza una comprobación para ver si existen nodos adicionales en el grupo de nodos candidatos (acción 186). Si hay nodos adicionales en el grupo de nodos candidatos, entonces el proceso 170 regresa al acción 172, en donde uno de los nodos se selecciona del grupo de nodos candidatos. Si no hay nodos adicionales en el grupo de nodos candidatos, entonces el proceso de identificación 170 del bloque visual finaliza (acción 188), con los bloques visuales seleccionados en la acción 180 siendo los bloques visuales seleccionados por el proceso 170. Este conjunto de bloques visuales identificado por el proceso 170 entonces se puede usar en la dirección del separador visual, analizado con mayor detalle a continuación. La determinación de si un nodo particular se puede dividir (en la acción 174) se realiza con base en una o más reglas. Estas reglas usan una o más entradas o información respecto al nodo y posiblemente uno o más nodos diferentes dentro del árbol DOM. Ejemplos de estas entradas o información incluyen una entrada de etiqueta, una entrada de color, una entrada de texto y una entrada de tamaño. A continuación se proporcionan ejemplos de las reglas que pueden formularse con base en estas estradas. En ciertas modalidades, también se puede incluir una regla predeterminada (por ejemplo, que el nodo se pueda dividir o, de manera alternativa, que el nodo no se pueda dividir). La regla predeterminada se usa si ninguna de las otras reglas se pueden aplicar. Reala de bloque superior: La regla de bloque superior se basa en la ubicación del nodo en el árbol que está siendo evaluado. La regla de bloque superior indica si el nodo es el nodo superior en el árbol que se está evaluando (por ejemplo, el nodo raíz del árbol DOM en la primera ronda), entonces el nodo se puede dividir. Regla de Etiqueta: La regla de etiqueta se basa en la etiqueta HTML del nodo. Algunas etiquetas HTML como la etiqueta <HR> con frecuencia se usan para separar diferentes temas desde una perspectiva visual. La regla de etiqueta indica que si la etiqueta HTML de uno de los descendientes del nodo es igual a una de un conjunto de etiquetas particulares (por ejemplo, la etiqueta HTML es la etiqueta <HR>), entonces el nodo se puede dividir. Regla de color: La regla de color se basa en el color del segundo plano del nodo, así como los colores del segundo plano de los descendientes del nodo. La regla de color indica que si el color del segundo plano del nodo es diferente del color del segundo plano de al menos uno de los nodos descendientes, entonces el nodo se puede dividir. Reglas de texto v tamaño: Se pueden usar diversas reglas de texto y tamaño. Se hace referencia en algunas de estas reglas a la altura, alto y/o tamaño del nodo. La altura de un nodo se refiere a la altura visual del bloque (por ejemplo, en píxeles usando un sistema de coordenadas X, Y) representados por el nodo cuando se visualiza el bloque, el ancho de un nodo se refiere al ancho visual del bloque ( por ejemplo, en píxeles usando un sistema de coordenadas X, Y) representado por el nodo cuando el bloque se visualiza y el área de un nodo se refiere al área de visualización (por ejemplo, en píxeles usando un sistema de coordenadas X, Y) ocupados por el bloque representado por el nodo cuando se visualiza (por ejemplo, el producto del ancho y alto del nodo en caso de un bloque rectangular). Estos tamaños se pueden determinar fácilmente con base en la información de la ubicación de posición que se incluye en los nodos del árbol DOM. Algunas de estas reglas (así como los análisis dentro del cuerpo de esta descripción) se refieren a un nodo válido, un bloque de bloque, un nodo de texto, un nodo de texto virtual y/o un nodo de navegación. Un nodo válido se refiere a un nodo que es visible cuando se visualiza el documento HTML (por ejemplo, la altura y el ancho es igual a cero). Un nodo de bloque se refiere a un nodo que tiene una etiqueta diferente a <A>, <B>, <FUENTE>, <HR>, <l>, <P>, <FUERTE>, <EM> o <TEXTO>. Un nodo de texto se refiere a un nodo que sólo contiene texto libre. Un nodo de texto virtual se refiere a un nodo que no es un nodo de bloque y que sólo tiene nodos de texto como descendientes (o descendiente). Un nodo de navegación se refiere a un nodo que tiene una altura que es más de dos veces el valor de su ancho y que tiene un ancho menor a 200. En algunas implementaciones, las reglas que se refieren a los nodos de navegación se usan en la primera ronda, más no en las rondas posteriores. Las siguientes reglas basadas en entradas de texto y tamaño se pueden usar para los nodos que tienen etiquetas generales (esto es, para todas las etiquetas HTML con excepción de la etiqueta <P>, la etiqueta <TABLA>, la etiqueta <TD> y la etiqueta <UL>): Si el nodo no tiene descendientes válidos, entonces el nodo no se puede dividir y el nodo se elimina del grupo de nodos candidatos; Si el nodo sólo tiene un descendiente válido y el descendiente no es el nodo de texto, entonces busque dentro del descendiente (retire el nodo del grupo de los nodos candidatos y reemplácelo con el nodo descendiente); Si el tamaño del nodo es al menos tres veces mayor que la suma de los tamaños de sus descendientes, entonces el nodo se puede dividir; Si todos los descendientes del nodo son nodos de texto o nodos de texto virtual, entonces el nodo no se puede dividir; Si el nodo tiene al menos un nodo de texto descendiente o al menos un descendiente de nodo de texto virtual y el ancho del nodo o su altura es menor que una tolerancia (por ejemplo 150), entonces el nodo no se puede dividir; Si el nodo es un nodo de navegación, entonces el nodo no se puede dividir; Si el nodo tiene al menos un descendiente del nodo de texto o al menos un descendiente de nodo de texto virtual y además no tiene un descendiente de nodo de bloque, entonces el nodo no se puede dividir; • Si el nodo tiene más de dos descendientes <BR> sucesivos, entonces el nodo se puede dividir; y • . De otra manera, el nodo se puede dividir. La siguientes reglas con base en entradas de texto y tamaño se pueden usar para los nodos que tienen etiquetas HTML <P>: • Si el nodo no tiene descendientes válidos, entonces el nodo no se puede dividir y el nodo se elimina del grupo de nodos candidatos; • Si el nodo sólo tiene un descendiente válido y el descendiente no es un nodo de texto, entonces se busca dentro del descendiente (se retira el nodo del grupo de nodos candidatos y se reemplaza con el nodo descendiente); • , Si todos los descendientes del nodo son nodos de texto o nodos de texto virtual, entonces el nodo no se puede dividir; • Si la suma de todos los tamaños del nodo son mayores que este tamaño de nodo, y existe al menos un descendiente que sea un nodo de bloque, entonces el nodo se puede dividir; • Si el nodo tiene al menos un descendiente de nodo de texto o al menos un descendiente de nodo de texto virtual y el ancho del nodo o su altura es menor que una tolerancia (por ejemplo, 150), entonces el nodo no se puede dividir; • . Si el nodo no tiene descendiente de nodo de bloque, entonces el nodo no se puede dividir; • . Si todos los descendientes del nodo son menores que una tolerancia (por ejemplo, ancho < 150 y alto < 100), entonces el nodo no se puede dividir; • . De otra manera, el nodo se puede dividir. Las siguientes reglas con base en la entrada de texto y tamaño pueden usarse para los nodos que tienen etiquetas HTML <TABLA>: • Si el nodo no tiene descendientes válidos, entonces el nodo no se puede dividir y el nodo se elimina del grupo de nodos candidatos; • Si el nodo no tiene un descendiente válido y el descendiente no es un nodo de texto, entonces se busca dentro del descendiente (se elimina el nodo del grupo de nodos candidatos y se reemplaza con el nodo descendiente); • . Si el tamaño del nodo descendiente más grande del nodo es menor que una tolerancia (por ejemplo 250*200), entonces el nodo no se puede dividir; • . Si todos los descendientes del nodo son menores que una tolerancia (por ejemplo, ancho < 150 y alto < 100), entonces el nodo no se puede dividir; • . Si todos los descendientes de nodo válido del nodo son mayores que una tolerancia (por ejemplo, ancho > 150 y alto > 100), entonces el nodo no se puede dividir; • . Si algunos descendientes nodos válidos (mayor de 0) del nodo son mayores que una tolerancia (por ejemplo, ancho > 150 y alto > 100) y algunos descendientes nodos válidos (mayor de 0) del nodo son menores que una tolerancia (por ejemplo, ancho < 150 y alto < 100), entonces el nodo no se puede dividir; • . De otra manera, el nodo se puede dividir. Las siguientes reglas basadas en entradas de texto y tamaño pueden usarse para nodos que tienen etiquetas HTML <TD>: • Si el nodo no tiene descendientes válidos, entonces el nodo no se puede dividir y el nodo se elimina del grupo de nodos candidatos; • Si el nodo sólo tiene un descendiente válido y el descendiente no es un nodo de texto, entonces se busca dentro del descendiente (se elimina el nodo del grupo de nodos candidatos y se reemplaza con el nodo descendiente); • . De otra manera, el nodo no se puede dividir.
Las siguientes reglas con base en entradas de texto y tamaño se pueden usar para nodos que tienen etiquetas HTML <UL>: • Si el nodo no tiene descendientes válidos entonces el nodo no se puede dividir y el nodo se elimina de grupos candidatos; • Si el nodo sólo tiene un descendiente válido y el descendiente no es un nodo de texto, entonces se busca dentro del descendiente (se elimina del nodo del grupo de nodos candidatos y se reemplaza con el nodo descendiente); • Si el nodo no tiene un descendiente de nodo bloque, entonces el nodo no se puede dividir; • . Si todos los nodos descendientes del nodo tienen etiquetas HTML <LI>, entonces el nodo no se puede dividir. • . Si todos los nodos descendientes del nodo son menores que una tolerancia (por ejemplo, ancho < 150 y alto < 100), entonces el nodo no se puede dividir. • . De otra manera, el nodo se puede dividir. En una identificación de bloque visual, el valor del grado de coherencia (DoC) es una medida asignada a los bloques visuales extraídos del árbol DOM. También puede generarse un valor diferente para el grado de coherencia (DoC) para los bloques virtuales durante la construcción de la estructura del contenido, como se analiza detalladamente a continuación. El valor DoC de un bloque visual (o bloque virtual) es una medida de la coherencia del bloque visual (o bloque virtual). El valor DoC asignado a un bloque durante la identificación del bloque visual puede asignarse en una variedad de maneras. En ciertas modalidades, el valor DoC de un bloque visual se asigna con base a su nodo correspondiente el árbol DOM (el nodo que representa el bloque visual) y puede variar con base en la etiqueta HTML del nodo. A continuación se muestra un conjunto de reglas ejemplares que pueden seguirse en la asignación de valores DoC durante la identificación del bloque visual. En los siguientes ejemplos, los valores DoC son enteros que van de 1 a 10 aunque alternativamente pueden usarse márgenes diferentes (por ejemplo, elaborarse de enteros, números reales, etc.). Pueden presentarse situaciones en donde puedan aplicar múltiples reglas de las reglas que se muestran a continuación a un bloque particular, y puede resultar en valores DoC múltiples para el bloque. Dichas situaciones se pueden resolver de diferentes maneras, por ejemplo con la selección del valor DoC mayor asignado por una de las reglas, seleccionar el valor DoC menor asignado por una de las reglas, promediando los valores DoC asignados en una de las reglas, calculando un promedio de los valores DoC asignados por las reglas, etc. Las siguientes reglas ejemplares se usan para asignar valores DoC a bloques visuales que tienen etiquetas HTML generales (esto es, a todas las etiquetas HTML son la excepción de la etiqueta <P>, la etiqueta <TABLA>, la etiqueta <TD>, y la etiqueta <UL>): · . Si todos los descendientes del nodo son nodos de texto o nodos de texto virtual, entonces se establece el valor DoC para el bloque en 10; • . Si el nodo tiene al menos un descendiente de nodo de texto o al menos un descendiente de nodo de texto virtual y el ancho del nodo o su altura es menor que una tolerancia (por ejemplo, 150), entonces se establece el valor DoC para el bloque 8; • Si el nodo es un nodo de navegación (por ejemplo, sólo en la primera ronda, un nodo que tiene úna altura que es mayor de dos veces su ancho y que tiene un ancho menor de 200, en rondas posteriores, esta regla no aplica), entonces se establece el valor DoC para el bloque en 7; • . Si el nodo tiene al menos un descendiente de nodo de texto o al menos un descendiente de nodo de texto virtual, y además no tiene un descendiente de nodo de bloque, entonces se establece el valor DoC para el bloque con base en el tamaño del nodo como se indica a continuación: o . Si tanto ancho como la altura del nodo son menores que un primer valor de tolerancia (por ejemplo, 100), entonces se establece el valor DoC para el bloque en 8; o Si la altura del nodo es menor que un segundo valor de tolerancia (por ejemplo 200) o el ancho es menor que un tercer valor de tolerancia (por ejemplo 400), entonces se establece el valor DoC para el bloque en 7; y o Si el área del nodo (por ejemplo, el producto de la altura y el ancho del nodo) es menor que un cuarto valor de tolerancia (por ejemplo 100,000), entonces se establece el valor DoC para el bloque en 6; y • . Si ninguna de las reglas anteriores aplica a un bloque que tiene una etiqueta HTML general, entonces se establece el valor DoC para el bloque en 5. Las siguientes reglas ejemplares se usan para asignar valores DoC a bloques visuales que tienen etiquetas HTML <P>: · Si todos los descendientes del nodo son nodos de texto o nodos de texto virtual, entonces se establece el valor DoC para el bloque en 10; • Si el nodo tiene al menos un descendiente de nodo texto o al menos un descendiente de nodo texto virtual y el ancho o el alto del nodo es menor que un valor de tolerancia (por ejemplo 150), entonces establece el valor DoC para el bloque en 8; • Si el nodo no tiene un descendiente de nodo de bloque, entonces se establece el valor DoC para el bloque en 7; y • . Si todos los descendientes nodos bloque del nodo son menores que un valor de tolerancia (por ejemplo, ancho < 150 y alto < 100), entonces: o Si el nodo tiene al menos un descendiente de nodo texto o al menos un descendiente de nodo texto virtual, entonces se establece el valor DoC para el bloque en 7; y o De otra manera, se establece el valor DoC para el bloque en 6. Las siguientes reglas ejemplares se usan para asignar valores DoC a bloques visuales que tienen etiquetas HTML <TABLA>: • Si el tamaño del nodo descendiente mayor del nodo es menor que un valor de tolerancia (por ejemplo 250*200), entonces se establece el valor DoC para el bloque en 8; • Si todos los descendientes del nodo son menores que un valor de tolerancia (por ejemplo, ancho < 150 y alto < 100), entonces se establece el valor DoC para el bloque en 7; y • Si todos los descendientes del nodo válido del nodo son mayores que un valor de tolerancia (por ejemplo, ancho > 150 y alto > 100), entonces se establece el valor DoC para el bloque en 6. Se usan las siguientes reglas ejemplares para asignar valores DoC a bloques visuales que tienen etiquetas HTML <TD>: • Si todos los descendientes del nodo son nodos de texto virtual, entonces se establece el valor DoC para el bloque en 10; • Si el nodo tiene al menos un descendiente de nodo de texto o al menos un descendiente de nodo de texto virtual y el ancho o la altura del nodo es menor que un valor de tolerancia (por ejemplo 150), entonces se establece el valor DoC para el bloque en
8; • Si el nodo no tiene un descendiente de nodo de bloque, entonces se establece el valor DoC para el bloque en 7; · Si todos los descendientes nodo de bloque del nodo son menores que un valor de tolerancia (por ejemplo, ancho < 150 y alto < 100), entonces se establece el valor DoC para el bloque en 7; y • Si el tamaño del nodo descendiente mayor del nodo es menor que un valor de tolerancia (por ejemplo, 250*200), entonces se establece el valor DoC para el bloque en 7. Las siguientes reglas ejemplares se usan para asignar valores DoC a bloques visuales que tienen etiquetas HTML <UL>: • Si el nodo no tiene un descendiente de nodo de bloque, entonces se establece el valor DoC para el bloque en 8; • Si todos los nodos descendientes del nodo tienen etiquetas HTML <LI>, entonces se establece el valor
DoC para el bloque en 8; y • Si todos los nodos descendientes del nodo son menores que un valor de tolerancia (por ejemplo, ancho < 150 y alto < 100), entonces se establece el valor DoC para el bloque en 8. Estas reglas y el ejemplo del proceso 170 de la figura 3 pueden ser implementados, por ejemplo, usando un algoritmo que tiene un procedimiento o función DivideDomtree (Dividir Árbol DOM) (que se muestra en la Tabla I a continuación), y un procedimiento o función Dividable (Divisible) (se muestra en la Tabla II a continuación). En este algoritmo, el valor pRoot (Raíz p) se refiere al nodo seleccionado actualmente, el valor nLevel (nivel n) se refiere al nivel del nodo seleccionado actualmente en el árbol DOM, el conjunto se refiere al grupo de bloques visuales identificados por el algoritmo, el Bloque Superior se refiere al nodo superior del árbol DOM o al subárbol que está siendo evaluado en esta ronda (por ejemplo, en la primera ronda, el bloque superior se refiere al nodo de raíz del árbol DOM), y descendiente se refiere a un descendiente del nodo seleccionado actualmente. Las rutinas especiales y las reglas heurísticas del procedimiento en función Dividable (Divisible) ya se han descrito anteriormente. Cada vez que el procedimiento o función DivideDomtree (Dividir Árbol DOM) se invoca, se pasa un nodo del árbol DOM como el valor de pRoot (Raíz p), y un valor del nivel de ese nodo en el árbol DOM como el valor de nLevel (Nivel n). TABLA 1
Algorithm DivideDomtree (pRoot, nLevel) { IF (Dívidable(pRooí, nLevel) == TRUE){ FOR EACH child OF pRoot { DivideDomtree(child, nLevel); } } ELSE { Put the sub-tree (pRoot) into the pool as a block; }
TABLA 2 Algorithm Dividable {pRoot, nLevel) { IF {pRoot, is the Top Block) { RETURN TRUE; } ELSE { Special routines for TABLE, TD, P, UL; Heuristic rules for general tags; } Detección del Separador Visual En el proceso de detección del separador visual se detecta a los separadores entre los bloques diferentes de los bloques identificados a través del proceso de identificación de bloques visuales. Estos separadores pueden tener una diversidad de formas diferentes, como líneas en el documento, espacios en blanco en el documento, diferentes colores en segundo plano para bloques diferentes, etc. En algunas modalidades, también se detectan los separadores en la dirección horizontal y/o vertical en el documento. La detección del separador visual (por ejemplo, en la acción 146 de la figura 2 o ¡mplementado por el detector del separador visual 106 de la figura 1) se puede realizar como se indica a continuación. Los separadores detectados son regiones horizontales o verticales dentro del documento que no cruzan virtualmente ningún bloque dentro del conjunto del bloques identificados a través de la identificación del bloque visual. Estos separadores se usan como indicadores para discriminar diferentes valores semánticos dentro del documento. Un separador se representa por 2 tupias (Ps, Pe) en donde Ps es el píxel de inicio del separador y Pe es el píxel final del separador. Cada píxel Ps y Pe se identifica como un par de coordenadas X, Y y una región rectangular se puede definir estableciendo los píxeles Ps y Pe como las esquinas opuestas de la región (por ejemplo, las esquinas superior derecha e inferior izquierda, las esquinas superior izquierda e inferior derecha, etc.)- El ancho del separador se calcula como la diferencia (por ejemplo, en la dirección X) entre Ps y Pe. Se hace referencia a las direcciones horizontal y vertical. Comúnmente, en un sistema de coordenadas X, Y, la dirección horizontal se refiere al eje X mientras que la dirección vertical se refiere al eje Y. Sin embargo, pueden usarse otras orientaciones para las direcciones horizontal y vertical. La figura 4 es un diagrama de flujo que ilustra un proceso ejemplar 200 para realizar la detección del separador visual. El proceso 200 ilustra la acción 146 de la figura 2 con detalle adicional. El proceso 200 puede realizarse en programas de cómputo, instrucciones inalterables, equipos de cómputo o combinaciones de estos. Inicialmente, una lista de separador se inicializa con un separador (acción 202). Este separador incluye todas las regiones del área de visualización para el documento que potencialmente puede ser un separador o separadores. En algunas modalidades, este separador inicial incluye el área completa del documento o alternativamente este separador inicial puede ser una región rectangular única que incluye todos los bloques en el conjunto de bloques visuales identificados por la identificación de bloques visuales. Un bloque del conjunto de los bloques identificados se selecciona entonces (acción 204). Los bloques pueden seleccionarse del conjunto en una variedad de maneras (por ejemplo, de manera aleatoria, en el orden en que se añadieron al conjunto, por aumento o disminución de tamaño, etc.). Entonces se hace una comprobación para verificar si el bloque seleccionado está contenido en un separador de la lista de separador (acción 206). Un bloque se considera que está contenido en un separador si el área completa de un bloque que está incluido dentro del área del separador. Si el bloque seleccionado está contenido en un separador, entonces el separador se divide en dos separadores (acción 208). Esta separación puede lograrse de diferentes maneras, por ejemplo retirando el separador que contiene el bloque de la lista del separador y añadiendo dos nuevos separadores a la lista de separador, modificando los píxeles Ps o Pe del separador y añadiendo un nuevo separador, etc. La división del separador da como resultado lo que anteriormente fue un separador único convirtiéndose en dos separadores menores en ambos lados del bloque. Al detectar los separadores horizontales, los dos separadores menores pueden estar por encima y por debajo del bloque, y al detectar los separadores verticales, los dos separadores menores se encontrarán a la izquierda y a la derecha del bloque. Después de que el separador se divide en la acción 208, o si el bloque seleccionado no está contenido dentro del separador, se hace una comprobación para verificar si el bloque seleccionado cruza un separador (acción 210). Cuando se detectan separadores horizontales, se considera que un bloque cruza un separador si el área del bloque interseca una porción del separador, pero menor que la altura total del separador. Al detectar separadores verticales, se considera que un bloque cruza el separador si el área del bloque interseca una porción del separador, pero menor que el ancho total del separador. Si el bloque seleccionado cruza un separador, entonces los parámetros del separador se actualizan de manera que el bloque ya no cruce el separador (acción 212). Esta actualización de parámetros se refiere a la modificación de los píxeles Ps y/o Pe del separador, de manera que el bloque ya no cruza el separador. Después de que los parámetros del separador se actualizan en la acción 212, o si el bloque seleccionado no cruza un separador, se hace una verificación para comprobar que el bloque seleccionado cubre un separador (acción 214). Al detectarse separadores horizontales, se considera que un bloque cubre un separador si el área del bloque cruza la altura completa de al menos parte del separador. Cuando se detecten separadores verticales, se considera que un bloque cubre un separador si el área del bloque cruza el ancho completo de al menos parte del separador. Si el bloque seleccionado cubre un separador, entonces el separador se elimina de la lista del separador (acción 216).
Después de que el separador se elimina de la lista del separador en la acción 216 o si el bloque seleccionado no cubre un separador, se realiza una comprobación para verificar si existen bloques adicionales en el conjunto de los bloques identificados que aún no han sido seleccionados (acción 218). Si existen bloques tales en el conjunto de bloques, entonces el proceso 200 regresa para seleccionar uno de los bloques remanentes en la acción 204. Sin embargo, si no existen tales bloques en el conjunto de bloques, entonces cuatro separadores en los límites de la pantalla (si dichos separadores están presentes) se eliminan de la lista del separador (acción 220). La detección del separador se lleva a cabo para detectar tanto los separadores horizontales como los verticales. Los separadores horizontales pueden detectarse primero y después detectarse los separadores verticales, o los separadores verticales pueden detectarse primero y después detectarse los separadores horizontales, o de manera alternativa los separadores horizontales y verticales pueden detectarse al mismo tiempo. En algunas modalidades, las acciones del 202 al 218 de la figura 4 se realizan tanto para los separadores horizontales como para los verticales. De esta manera, dos diferentes listas de separador se pueden generar. Estas dos listas del separador se combinan en cualquiera de una variedad de maneras, por ejemplo tomando la unión de dos listas de separador. Por ejemplo, puede generarse una lista de separador final que incluye cada separador de las dos listas. De esta manera, como puede observarse en la figura 4, la detección del separador visual comienza con una lista de separador que incluye uno o más separadores posibles, y la lista de los separadores posibles cambia hasta cuando termina el proceso de detección, la lista incluye los separadores detectados. La lista de detección cambia para añadir nuevos separadores, retirar separadores y/o modificar los parámetros de los separadores con base en si los bloques visuales traslapan los separadores así como la manera en que traslapan los separadores (por ejemplo, el bloque está contenido en un separador, el bloque cruza un separador o el bloque cubre un separador). También debe observarse que los separadores detectados a través del proceso 200 pueden tener diferentes formas al visualizar el documento. Por ejemplo, los separadores pueden ser un espacio en blanco dentro del documento, una o más líneas del separador dibujadas en el documento, imágenes u otros gráficos dentro de los documentos, porciones del documento con sombras de diferentes colores, etc. A manera de ejemplo, la detección de los separadores horizontales se puede observar en el ejemplo que se ilustra en las Figuras de la 5a a la 5f. Suponga que la identificación del bloque visual identifica cuatro bloques visuales 240, 242, 244 y 246 en un documento 248 de la figura 5a. Los bloques visuales 240, 242, 244 y 246 se ¡lustran con un sombreado cruzado diagonal. I nicialmente, sólo un separador 250 está en la lista de separador como se ¡lustra en la figura 5b. Los separadores se ¡lustran en las Figuras de la 5b a la 5f con lineas verticales. El separador 250 incluye todos los bloques visuales 240, 242, 244 y 246. Además también suponga que el bloque visual 240 es el primer bloque seleccionado del conjunto de bloques visuales, el bloque visual 242 es el segundo bloque seleccionado del conjunto de bloques visuales, el bloque visual 244 es el tercer bloque seleccionado del conjunto de bloques visuales, y el bloque visual 246 es el cuarto bloque seleccionado del conjunto de bloques visuales. El bloque visual 240 está contenido dentro del separador 250, de manera que el separador 250 se divide en dos separadores 252 y 254 como se ¡lustra en la figura 5c. De manera similar, el bloque 242 está contenido dentro del separador 254, de manera que el separador 254 se divide en dos separadores 256 y 258 como se ilustra en la figura 5d. Adicionalmente, el bloque 244 está contenido dentro del separador 258, de manera que el separador 258 se divide en dos separadores 260 y 262 como se ilustra en la figura 5e. Cuando el bloque visual 246 se analiza, se determina que el bloque visual 246 cruza el separador 256 y también cubre el separador 260. De esta manera, los parámetros del separador 256 se actualizan para que reflejen una región menor y el separador 260 se elimina de la lista del separador como se ilustra en la figura 5f. Adicionalmente, a cada uno de los separadores detectados en el proceso 200 se asigna un peso. El peso de un separador es una indicación de cuán visible es el separador cuando se visualiza el documento (por ejemplo, los separadores con pesos mayores son más visibles que los separadores con pesos menores). El peso de un separador se asigna con base en diversas características de los bloques visuales en cualquier lado del separador. Los pesos designados a los separadores se usan para comparar los separadores (por ejemplo, sus pesos se coparan). Los pesos asignados a los separadores típicamente no se usan para otros objetivos, de manera que los pesos pueden tener virtualmente cualquier unidad (mientras sea consistente o pueda convertirse a una unidad consistente con las unidades de pesos de otros separadores dentro del documento). Se aplica un conjunto de reglas para determinar los pesos de los separadores. Cuando se hace referencia a los bloques, las reglas se refieren a los bloques visuales más cercanos en cualquier lado del separador (por ejemplo, en la figura 5f, los bloques visuales más cercanos al separador 256 pueden ser el bloque 240 de un lado y el bloque 246 del otro lado). A continuación se muestra un ejemplo del conjunto de reglas que se pueden aplicar para determinar los pesos de los separadores: • A mayor distancia entre bloques en los diferentes lados del separador, mayor será el peso del separador. La distancia puede ser, por ejemplo, la distancia entre los dos bordes más cercanos de los dos bloques. Por ejemplo, para los separadores horizontales, si la distancia es menor o igual a 10 pixeles entonces se establece el peso del separador en 15, si la distancia es mayor a 10 pixeles pero menor o igual a 20 pixeles entonces se establece el peso del separador en 25, y si la distancia es mayor a 20 pixeles, entonces se establece el peso del separador en 35; para los separadores verticales, si la distancia es mayor o igual a 3 pixeles, entonces se establece el peso del separador en 25, y si la distancia es mayor a 3 pixeles, entonces se establece el peso del separador en 45. • Si un separador visual se encuentra en la misma posición que las etiquetas HTML particulares (por ejemplo la etiqueta
HTML <HR>), el peso del separador se hace mayor. Por ejemplo, establezca el peso del separador en 50 si el separador visual está en la misma posición que una etiqueta HTML <HR>. • Para los separadores horizontales, si las propiedades de fuente (por ejemplo, tamaño de fuente y peso de fuente) de los bloques en los diferentes lados del separador son diferentes, el peso del separador cambiará. Esta regla puede aplicar si sólo, para cada uno de los bloques, todo el texto dentro del bloque tiene las mismas propiedades hacia al menos una cantidad de tolerancia del texto dentro del bloque tiene las mismas propiedades, etc. Adicionalmente, el peso del separador incrementará si el tamaño de la fuente dentro del bloque antes del separador es menor que el tamaño de la fuente dentro del bloque después del separador. Por ejemplo, si el tamaño de la fuente que se usa en el bloque antes del separador (por ejemplo, sobre un separador horizontal) es mayor que el tamaño de fuente usado en el bloque después del separador (por ejemplo, debajo de un separador horizontal), entonces se establece el peso del separador con base en el tamaño de la fuente usada en el bloque antes del separador (por ejemplo, se establece el peso en 9 si el tamaño de la fuente es mayor o igual a 36 puntos, se establece el peso en 8 si el tamaño de la fuente es mayor o igual a 24 puntos, pero mejor a 36 puntos, se establece el peso en 7 si el tamaño de la fuente es mayor o igual a 18 puntos pero mejor a 24 puntos, se establece el peso en 6 si el tamaño de la fuente es mayor o igual a 14 puntos pero menor a 18 puntos, se establece el peso en 5 si el tamaño de la fuente es mayor que 12 puntos pero menor que 14 puntos y se establece el peso en cero si el tamaño de la fuente es mayor o igual a 12 puntos). Sin embargo, si el tamaño de la fuente que se usa en el bloque antes del separador es menor que el tamaño de la fuente que se usa en el bloque después del separador, entonces se establece el peso del separador con base en el tamaño de la fuente que se usa en el bloque después del separador (por ejemplo, se establece el peso en 10 si el tamaño de la fuente es mayor o igual a 36 puntos, se establece el peso en 9 si el tamaño de la fuente es mayor o igual a 24 puntos pero menor que 36 puntos, se establece el peso en 11 si el tamaño de la fuente es mayor o igual a 18 puntos pero menor que 24 puntos, se establece el peso en 7 si el tamaño de la fuente es mayor o igual a 14 puntos pero menor que 18 puntos, se establece el peso en 6 si el tamaño de la fuente es mayor que 12 puntos pero menor que 14 puntos y se establece el peso en cero si el tamaño de la fuente es mayor o igual que 12 puntos). · Si los colores en segundo plano de los bloques en diferentes lados del separador son diferentes, entonces el peso del separador incrementará. Por ejemplo, si los colores del segundo plano en los diferentes lados del separador son diferentes, entonces se establece el peso del separador en 40. · Para los separadores horizontales, cuando las estructuras de los bloques junto al separador son muy similares, entonces el peso del separador disminuirá. Por ejemplo, si ambos bloques cercanos al separador son bloques de texto que tienen el mismo tamaño de fuente y el mismo peso de fuente, entonces se establece el peso del separador en cero. Si varias de estas reglas aplican a una situación en particular, entonces uno de los pesos establecidos por estas reglas se pueden seleccionar o los pesos establecidos por estas reglas se pueden combinar. Por ejemplo, se pueden usar los pesos asignados menores (o alternativamente mayores) como el peso del separador, el promedio de todos los pesos asignados se pueden usar como el peso del separador, un promedio de peso de todos los pesos asignados se puede usar como el peso del separador, etc. Construcción de la estructura de contenido La construcción de la estructura de contenido genera una estructura de contenido para el documento con base en los bloques identificados en la identificación de bloques visuales así como los separadores detectados en la detección del separador visual. La construcción de la estructura de contenido (por ejemplo, en la acción 148 de la figura 2 o el implementado por el constructor de estructura del contenido 108 de la figura 1) se puede realizar como se indica a continuación. La estructura de contenido es un conjunto de una o más porciones del documento que representa el contenido semántico del documento. En algunas modalidades, la estructura de contenido es una estructura de árbol semántica de contenido jerárquico. La figura 6 es un diagrama de flujo que ilustra un proceso ejemplar 280 para realizar la construcción de la estructura del contenido. El proceso 280 ilustra la acción 148 de la figura 2 con mayor detalle. El proceso 280 puede realizarse en programas de cómputo, instrucciones inalterables, equipos de cómputo o combinaciones de estos. Inicialmente, uno o más bloques virtuales se generan con base en los separadores detectados y los bloques visuales identificados (acción 282). Los bloques virtuales se generan analizando los separadores detectados, comenzando con aquellos separadores que tienen el peso menor. Los bloques en cualquier lado de los separadores detectados se fusionan en un solo bloque virtual. Esta fusión continua con los separadores que tienen el siguiente peso menor y continua hasta que los separadores con un peso máximo se alcanzan (este peso máximo puede decidirse como el peso mayor calculado por la detección del separador visual analizado en los párrafos anteriores para este conjunto particular de bloques visuales identificados, o alternativamente puede ser algún valor definido previamente o programado previamente). Una vez que los bloques virtuales se generan, se determina un valor de grado de coherencia para cada uno de los bloques virtuales (acción 284). El valor del grado de coherencia se calcula con base en el peso del separador entre los dos bloques que se fusionaron para generar el bloque virtual (este separador puede ser entre dos bloques visuales o entre dos bloques virtuales). En algunas modalidades, el valor del grado de coherencia para un bloque virtual se determina de conformidad con las siguientes reglas ejemplares. En algunas de estas reglas, se usan dos variables WEIGHT_TMP_TITLE2 y WEIGHT_TMP_TITLE1. Los valores de las variables WEIGHT_TMP_TITLE2 y WEIGHT_TMP_TITLE1 se determinan separadores que tienen bloques de texto en ambos lados se clasifican por peso. El más alto de estos pesos es el valor que se asigna a la variable WEIGHT_TMP_TITLE1 , y el segundo valor mayor de estos textos es el valor que se asigna a la variable WEIGHT_TMP_TITLE2. Si no existen tales separadores, entonces ambas variables WEIGHT_TIVIP_TITLE1 y WEIGHT_TMP_TITLE2 se establecen con el valor -1. Si sólo hay un separador tal, entonces el peso de tal separador se usa como el valor de WEIGHT_TMP_TITLE1 , y se usa el valor -1 como el valor para WEIGHT_TMP_TITLE2. Estas reglas ejemplares son: • Si el peso del selector entre los dos bloques fusionados es menor o igual a cero, entonces se establece el valor de grado de coherencia en 10; • Si el peso del selector entre los dos bloques fusionados es menor o igual al valor de WEIGHT_TMP_TITLE2, entonces se establece el valor del grado de coherencia en 7; ? Si el peso del selector entre los dos bloques fusionados es menor o igual al valor de WEIGHT_TMP_TITLE1 , entonces se establece el valor del grado de coherencia en 6; • Si el peso del selector entre los dos bloques fusionados es menor o igual a 9, entonces se establece el valor del grado de coherencia en 5; · Si el peso del selector entre los dos bloques fusionadlos es menor o igual a 20, entonces se establece el valor de grado de coherencia en 5; • Si el peso del selector entre los dos bloques fusionados es menor o igual a 40, entonces se establece el valor de grado de coherencia en 4; • Si el peso del selector entre los dos bloques fusionados es menor o igual a 50, entonces se establece el valor de grado de coherencia en 2; • Si ninguna de las reglas anteriores se satisfacen, entonces se establece el valor de grado de coherencia en 1. La estructura del contenido entonces se genera (acción 286). La estructura del contenido se genera con base al menos en parte en el requerimiento de granularidad en el que los bloques virtuales, si existen, satisfacen el requerimiento de granularidad. Como se analizó anteriormente, cada nodo de vértice terminal de la estructura del contenido se analiza para determinar si se satisface el requerimiento de granularidad. En algunas modalidades, se define un valor permitido del grado de coherencia (PDoC) y, para satisfacer el requerimiento de granularidad, cada nodo de vértice terminal de la estructura del contenido se requiere que tenga un valor DoC mayor que (o alternativamente mayor o igual a) el valor PDoC. El valor PDoC puede ser un valor definido previamente (por ejemplo, determinado de manera empírica por un diseñador del sistema). Cualquiera de un margen de valores para el valor PDoC se puede usar, con los valores mayores ocasionando típicamente estructuras de contenido con más bloques visuales, sin embargo menores. Un margen ejemplar de los valores PDoC es de 6 a 9. La estructura del contenido que se genera en la acción 286 puede incluir bloques virtuales y/o bloques visuales. El valor DoC para cada bloque virtual identificado en la acción 282 se compara con el valor PDoC. Para cada bloque virtual que tiene un valor DoC mayor que el valor PDoC, los descendientes de dicho bloque virtual no se emiten como bloques en la estructura de contenido. La estructura de contenido entonces se emite (acción 288). La estructura del contenido se puede emitir en cualquiera de una variedad de formatos, y en algunas modalidades se emite en un formato de árbol jerárquico, con los nodos del árbol representando nodos virtuales y/o bloques visuales. La figura 7 ilustra un ejemplo para generar bloques virtuales y un árbol de estructura de contenido. En la figura 7, seis bloques visuales 300, 302, 304, 306, 308 y 310 se muestran, habiendo sido identificados mediante la identificación de bloques visuales. Adicionalmente, se ilustran separadores 312, 314, 316, 318 y 320 entre los bloques, con los separadores con líneas más gruesas (separadores 314 y 318) teniendo pesos mayores que los separadores con líneas más delgadas (separadores 312, 316 y 320). Cada uno de los bloques visuales 300-310 tiene un bloque de estructura de contenidos correspondiente en el árbol de estructura de contenido 322. Adicionalmente, se genera un bloque virtual 324 fusionando los bloques 300 y 302, el bloque virtual 324 tiene un valor DoC con base en el peso del separador 312. Un bloque virtual 326 se genera fusionando los bloques 304 y 306, el bloque virtual 326 tiene un valor DoC con base en el peso del separador 316. Un bloque virtual 328 se genera fusionando los bloques 308 y 310, el bloque virtual 328 tiene un valor DoC con base en el peso del separador 320. Adicionalmente, se genera un bloque virtual 330 fusionando los bloques virtuales 324, 326 y 328. Los pesos de los separadores 314 y 318 son iguales, de manera que el valor DoC para el bloque 330 se puede basar en el peso de cualquier separador 314 ó 318. La emisión de la estructura de contenido con base en los bloques virtuales que se ilustran en la figura 7 depende de los valores DoC de los bloques virtuales 324, 326, 328 y 330. Por ejemplo, si el valor DoC del bloque virtual 324 es mayor que el valor PDoC, entonces el bloque virtual 324 se emite como un bloque en la estructura de contenido, pero los bloques visuales 300 y 302 individuales no se emiten como bloques en la estructura de contenido. Sin embargo, si el valor DoC del bloque virtual 324 no es mayor que el valor PDoC, entonces el bloque virtual 324 no se emite como un bloque en la estructura de contenido, pero los bloques visuales 300 y 302 individuales se emiten como bloques de la estructura de contenido. A manera de otro ejemplo, si el valor DoC del bloque virtual 330 es mayor que el valor PDoC, entonces el bloque virtual 330 se emite como un bloque en la estructura de contenido, pero los bloques virtuales 324, 326 y 328 individuales no se emiten como bloques en la estructura de contenido, y los bloques visuales 300, 302, 304, 306, 308 y 310 individuales no se emiten como bloques en la estructura de contenido. Recuperación de documentos Las técnicas para recuperar documentos se pueden emplear usando la segmentación de documentos con base en la visión descrita en la presente. Dichas técnicas de recuperación de documentos pueden depender de la segmentación de documentos con base en la visión únicamente, o alternativamente en combinación con más técnicas de búsqueda tradicionales. La figura 8 es un diagrama de flujo que ilustra un proceso ejemplar 360 para realizar la recuperación de un documento usando la segmentación de documentos con base en la visión descrita en la presente. El proceso 360 puede implementarse, por ejemplo, mediante el módulo de recuperación de documentos 110 en la figura 1. El proceso 360 se puede realizar en programas de cómputo, instrucciones inalterables, equipos de cómputo o combinaciones de los mismos. El proceso 360 se puede usar para recuperar cualquiera de una variedad de diferentes tipos de documentos, entre estos se incluye, por ejemplo, páginas de redes informáticas (por ejemplo, disponibles sobre Internet y/o una red interna), documentos escritos por individuos, resúmenes, compendios o descripciones, etc. Inicialmente se recibe una consulta (acción 362).
Comúnmente, un usuario emite una consulta, aunque de manera alternativa la consulta puede recibirse de cualquier otra fuente (por ejemplo, un dispositivo remoto, una aplicación de programas de cómputo, etc.). Se tiene acceso (acción 364) a una base de datos de bloques obtenidos a partir de la técnica de segmentación de documentos con base en la visión que se analiza en la presente. Típicamente, el proceso de segmentación de documentos con base en la visión habrá sido realizado anteriormente y la estructura de contenido resultante (incluyendo los bloques visuales y/o los bloques virtuales) estarán almacenados en una base de datos o en alguna otra ubicación a la que se tiene acceso. Alternativamente, el proceso de segmentación de documentos con base en la visión puede realizarse en uno o más documentos como respuesta a la recepción de la consulta en la acción 362. Una vez introducida, los bloques de la estructura de contenido se clasifican de conformidad con su correspondencia con los criterios de la consulta (acción 366). Los bloques visuales y/o los bloques virtuales pueden clasificarse en la acción 366. La consulta que se recibe en la acción 362 incluye uno o más términos de búsqueda, también denominados como criterios de consulta o términos de consulta. En algunas modalidades, sólo aquellos bloques que incluyen al menos uno de los términos de búsqueda (o alternativamente sólo aquellos bloques que incluyen todos los términos de búsqueda) se clasifican en la acción 366. De manera alternativa, pueden imponerse otros límites en el número de bloques que se clasifican (por ejemplo, el proceso 360 puede estar configurado para clasificar sólo 50 o 100 bloques). Las clasificaciones con base en los bloques pueden generarse en cualquiera de una variedad de maneras diferentes. Por ejemplo, las clasificaciones pueden basarse en uno o más de: cuántos términos de búsqueda se incluyen en el bloque, la ubicación de diversos términos de búsqueda en el bloque, la frecuencia en que se presentan los términos de búsqueda dentro del bloque, etc. Entonces se generan las clasificaciones del documento con base en las clasificaciones de bloques (acción 368). Las clasificaciones del documento se pueden generar en cualquiera de una de diversas maneras. En algunas modalidades, la clasificación del bloque de clasificación mayor del documento se usa como la clasificación para el documento. Alternativamente, las clasificaciones de todos los bloques dentro del documento se pueden combinar (por ejemplo, generando un promedio de las clasificaciones de todos los bloques, generando un promedio pesado de las clasificaciones de todos los bloques, etc.) para generar la clasificación para el documento. Las clasificaciones del documento entonces se devuelven (acción 370), por ejemplo, al solicitante. Las clasificaciones del documento entonces pueden devolverse de diferentes maneras, como un ¡dentificador (por ejemplo, título o localizador uniforme de recursos (URL)) y la clasificación numérica para cada documento, una visualización de un ¡dentificador de cada documento en orden de conformidad con su clasificación (por ejemplo, sin mostrar una clasificación numérica explícita para cada documento), resúmenes de los documentos que incluyen los criterios de búsqueda, los documentos reales que se devolvieron en un orden de conformidad con su clasificación, etc. Debe ser evidente que diversas modificaciones pueden hacerse al proceso 360. Por ejemplo, en la acción 366 no pueden clasificarse o buscarse todos los documentos a los que se puede tener acceso. A manera de otro ejemplo, los bloques de los documentos se pueden devolver en la acción 370 en lugar de documentos completos. La figura 9 es un diagrama de flujo que ilustra otro proceso ejemplar 400 para realizar la recuperación de documentos usando la segmentación de documentos con base en la visión que se describe en la presente. El proceso 400 puede implementarse, por ejemplo, a través del módulo de recuperación de documentos 110 de la figura 1. El proceso 400 puede realizarse en programas de cómputo, instrucciones inalterables, equipos de cómputo o combinaciones de los mismos. De manera análoga al proceso 360 de la figura 8, el proceso 400 se puede usar para recuperar cualquiera de una variedad de diferentes tipos de documentos, incluyendo, por ejemplo, páginas de redes informáticas (por ejemplo, disponibles en Internet y/o una red interna), documentos escritos por individuos, resúmenes, compendios, etc. El proceso 400 es similar al proceso 360, sin embargo, la segmentación del documento con base en las percepciones se realiza en todos los documentos posibles. En su lugar, se realiza una búsqueda inicial, y el proceso de segmentación de documentos con base en la visión se realiza usando los documentos de la búsqueda inicial. Inicialmente, se recibe una consulta (acción 402). De manera análoga al proceso 360, la consulta puede ser una consulta de un usuario o de alguna otra fuente y la consulta incluye uno o más términos de búsqueda. Se realiza una recuperación de documentos inicial en el documento establecido y los documentos que satisfacen los criterios de consulta se clasifican (acción 404). Esta recuperación inicial se puede realizar en cualquiera de una variedad de maneras. Un ejemplo de dicho proceso de recuperación inicial en la acción 404 se describe en Robertson, S.E., "Overview of the Okapi Projects" (Descripción de los proyectos Okapi). Journal of Documentation, vol. 53, No. 1, 1997, Págs. 3-7. Cualquiera de una variedad de procesadores de búsqueda de redes informáticas convencionales también puede usarse en la acción 404. El proceso 400 entonces continua realizando el proceso de segmentación de documentos con base en la visión en los documentos que se recuperaron en la recuperación inicial (acción 406). Entonces se realiza la recuperación de bloques usando los criterios de consulta (términos de búsqueda) y los bloques obtenidos de la segmentación de documentos con base en la visión (acción 408, de manera análoga al acción 366 de la figura 8). Entonces se generan clasificaciones de documentos trabajados con base en las clasificaciones de bloque (acción 410), análogo al análisis descrito en la acción 366 de la figura 8. Entonces se generan las clasificaciones del documento final mediante la combinación de las clasificaciones del documento inicial de la acción 404 y las clasificaciones del documento refinado de la acción 410 (acción 412). Esta combinación se puede realizar en cualquiera de diversas maneras. Por ejemplo, las clasificaciones de las acciones 404 y 410 pueden promediarse en conjunto o puede usarse un promedio de peso para las clasificaciones de las acciones 404 y 410. De manera alternativa, las clasificaciones mayores de las acciones 404 y 410 para un documento particular se puede usar como la clasificación para un documento. En otra alternativa, la clasificación de la acción 410 se puede usar en lugar de la clasificación de la acción 404. Una vez que se generan las clasificaciones para el documento final, las clasificaciones del documento se devuelven (acción 414), análogo al acción 370 de la figura 8. La figura 10 es un diagrama de flujo que ¡lustra otro proceso ejemplar 440 para realizar la recuperación de documentos usando la segmentación de documentos con base en la visión que se describe en la presente. El proceso 440 se puede implementar, por ejemplo, mediante el módulo de recuperación de documentos 110 de la figura 1. El proceso 440 puede realizarse en programas de cómputo, instrucciones inalterables, equipos de cómputo o combinaciones de los mismos. Análogo al proceso 360 de la figura 8, el proceso 440 se puede usar para recuperar cualquiera de una variedad de diferentes tipos de documentos, incluyendo, por ejemplo, páginas de redes informáticas (por ejemplo, disponibles en el Internet y/o una red interna), documentos escritos por individuos, resúmenes, compendios, etc. El proceso 440 es similar al proceso 400 de la figura 9, sin embargo, la segmentación de los documentos con base en la visión se usa para expandir los criterios de consulta. Inicialmente, se recibe una consulta (acción 442), análogo al acción 402 de la figura 9. Se realiza una recuperación inicial de documentos en el documento establecido y los documentos que satisfacen los criterios de consulta se clasifican (acción 444), análogo al acción 404 de la figura 9. El proceso de segmentación de documentos con base en la visión entonces se realiza en documentos recuperados en la recuperación inicial (acción 446), análogo al acción 406 de la figura 9. Sin embargo, en lugar de realizar la recuperación de bloques como se realizó en la figura 9, los bloques de la estructura de contenido obtenidos a partir del proceso de segmentación de documentos con base en la visión, junto con los criterios de consulta, se usan para realizar una expansión de consulta (acción 448). La expansión de la consulta se puede realizar de diversas maneras. En ciertas modalidades, la expansión de consulta se realiza usando los bloques de clasificación superior para la expansión de selección de términos (por ejemplo, los 10 bloques que tienen las clasificaciones más altas o el 10% de los bloques que tienen las clasificaciones mayores). Los bloques se clasifican según satisfacen los términos de consulta original (análogo al acción 366 de la figura 8). Los términos de expansión se seleccionan en cualquiera de una variedad de maneras conocidas, no obstante, a diferencia de la expansión de consulta tradicional, términos de expansión se seleccionan con base en los bloques obtenidos del proceso de la segmentación de documentos con base en la visión. Por ejemplo, todos los términos (excepto los términos de la consulta original) en los bloques obtenidos del proceso de segmentación de documentos con base en la visión se pesan de conformidad con el siguiente valor de selección de términos TSV:
TSV = W )x — R
en donde r representa el número de bloques que contienen el término, R representa el número toral de bloques obtenidos del proceso de segmentación de documentos con base en la visión, y w( ) representa el peso de Robertson/Spark Jones de 7 en Q, en donde Q representa la consulta original (recibida en la acción 442) y 7 representa los términos de búsqueda de la consulta original. Dados estos términos de expansión pesados, un número de estos términos se seleccionan para usarse como términos de expansión. Varios números de estos términos se pueden seleccionar y en ciertas modalidades os diez términos superiores se seleccionan como los términos de expansión (esto es, los diez términos que tienen los valores de selección de término más grandes TSV). Entonces se realiza una recuperación final con base en los criterios de consulta expandidos y el documentos establecido y los documentos que satisfacen los criterios de la consulta expandida se clasifican (acción 450). El acción 450 se realiza análogo al acción 440, con la excepción de que la consulta expandida se usa en lugar de los criterios recibidos. La consulta expandida incluye los términos de consulta original así como los términos de la expansión. En algunas modalidades, los términos en la consulta expandida se pesan. Los términos se pueden pesar de diversas maneras para dar preferencia a los términos de la consulta original cuando se determina qué documentos corresponden a los términos de la consulta y/o cuando se clasifican los documentos. Por ejemplo, los términos para la consulta expandida se pueden pesar como se indica a continuación. Para los términos originales (los términos recibidos como parte de la consulta en la acción 442), el nuevo peso de los términos es tf x 2, en donde tf representa la frecuencia del término en la consulta. Para cada término de expansión, el peso del término se establece como se indica a continuación:
l-(n-l) m
en donde n representa el valor de clasificación TSV del término, y n es el número de términos de expansión (por ejemplo, 10 en algunas modalidades). Las clasificaciones del documento que se obtienen de la recuperación final en la acción 450 entonces se devuelven (acción 452), análogo al acción 414 de la figura 9. Adicionalmente, en algunas modalidades la recuperación de documentos que se analizó anteriormente con referencia a las Figuras 8, 9 ó 10 puede emplear un enfoque de segmentación de documentos combinado que combina el proceso de segmentación de documentos con base en la visión analizado anteriormente con un enfoque de longitud fija. En este enfoque de segmentación de documentos combinado, los bloques visuales se obtienen como se analizó anteriormente (por ejemplo, con referencia a la figura 2). Dados estos bloques visuales, se usan ventanas que se traslapan para dividir al menos algunos de los bloques en unidades menores. La primera ventana comienza desde la primera palabra del primer bloque visual y las ventanas subsecuentes traslapan las ventanas anteriores en una parte (por ejemplo, la mitad) hasta el final del bloque. Las porciones del bloque visual que corresponden a estas ventanas se emiten como el bloque final. Para bloques visuales que son de menor tamaño que la longitud de la ventana (la ventana típicamente tiene un valor fijo), los bloques visuales se emiten como bloques finales sin dividirse adicionalmente. Sin embargo, al dividir bloques grandes en bloques más pequeños que son del tamaño de la ventana, se reduce la diferencia de las longitudes de los diversos bloques. Al usar este enfoque de segmentación de documentos combinado, se usan los bloques finales emitidos por el enfoque de segmentación de documentos combinado en lugar de los bloques visuales y/o virtuales de la estructura de contenido durante el proceso de recuperación de documentos.
Entorno ejemplar La figura 11 ilustra un ejemplo de un entorno de cómputo general 500, el cual se puede usar para ¡mplementar las técnicas que se describen en la presente. El entorno de cómputo 500 sólo es un ejemplo de un entorno de cómputo y no se tiene la intención de sugerir limitaciones ni al alcance de uso ni a la funcionalidad de las arquitecturas de cómputo y de red. Tampoco el entorno de cómputo 500 debe interpretarse con alguna dependencia o requerimiento relacionado a alguno de los componentes, o combinación de estos, ilustrados en el entorno de cómputo 500 ejemplar. El entorno de cómputo 500 incluye un dispositivo de cómputo de uso general en forma de una computadora 502. La computadora 502 puede ¡mplementar, por ejemplo, un extracción de bloques visual 204, un detector de separador visual 106, un constructor de estructura de contenido 108 y/o el módulo de recuperación de documento 110 de la figura 1. Los componentes de la computadora 502 pueden incluir, sin limitarse a esto, uno o más procesadores o unidades de procesamiento 504, una memoria de sistema 506 y una barra de distribución de sistema 508 que acopla varios componentes del sistema, incluyendo el procesador 504 a la memoria del sistema 506. La barra de distribución de sistema 508 representa uno o más de los diversos tipos de estructuras de barras de distribución, incluyendo una barra de distribución de memoria o un controlador de memoria, una barra de distribución periférica, un puerto de gráficos acelerado, y un procesador o barra de distribución local que usa cualquiera de una variedad de arquitecturas de barra de distribución. A manera de ejemplo, dichas arquitecturas pueden incluir una Barra de distribución de arquitectura de estándar industrial (ISA), una Barra de distribución de arquitectura de microcanal (MCA), una Barra de distribución ISA mejorada (EISA), una Barra de distribución local de asociación de normas de aparatos electrónicos de video (VESA) y una Barra de distribución que ¡nterconecta un componente periférico (PCI) también conocido como una barra de distribución Mezzanine. La computadora 502 típicamente incluye una variedad de medios que pueden ser leídos a través de una computadora. Dichos medios pueden ser cualquier medio disponible al que se puede tener acceso a través de una computadora 502 e incluye medios permanentes y no permanentes, extraíbles y no extraíbles. La memoria del sistema 506 incluye medios que pueden ser leídos a través de una computadora en forma de memoria no permanente, por ejemplo una memoria de acceso aleatoria (RAM) 510 y una memoria permanente, como una memoria de sólo lectura (ROM) 512. Un sistema básico de entradas / salidas (BIOS) 514, que contiene las rutinas básicas que ayudan a transferir información entre los elementos dentro de una computadora 502, por ejemplo durante el arranque, se almacena en ROM 512. La RAM 510 típicamente contiene datos y/o módulos de programas a los que se puede tener acceso de inmediato y/o funcionan actualmente a través de la unidad de procesamiento 504. La computadora 502 también puede incluir otros medios de almacenamiento de cómputo extraíbles/ no extraíbles, permanentes/ no permanentes. Por ejemplo, la figura 11 ilustra una unidad de disco duro 516 para leer desde ésta y escribir en un medio magnético no extraíble (no se muestra), una unidad de disco magnético 518 para leer desde éste y escribir en un disco magnético permanente, extraíble 520 (por ejemplo, un "disco flexible"), y una unidad de disco óptica 522 para leer desde éste y/o escribir en un disco óptico permanente, extraíble 524 como CD-ROM, DVD-ROM u otros medios ópticos. La unidad de disco duro 516, la unidad de disco magnético 518 y la unidad de disco óptico 522 están conectadas cada una a la barra de distribución del sistema 508 a través de una o más interfaces 526 de medios de datos. Alternativamente, la unidad de disco duro 516, la unidad de disco magnético 518 y la unidad de disco óptico 522 pueden estar conectados a la barra de distribución del sistema 508 a través de una o más interfaces (no se muestran). Las unidades de disco y sus medios que pueden ser leídos a través de una computadora proporcionan almacenamiento permanente de las instrucciones que pueden ser leídas a través de una computadora, estructuras de datos, módulos de programa y otros datos para computadora 502. Aunque el ejemplo ilustra una unidad de disco 516, una unidad de disco magnético extraíble 520 y una unidad de disco óptico extraíble 524, debe ser evidente que otros tipos de medios que se pueden leer a través de una computadora que pueden almacenar datos a los que se puede tener acceso a través de una computadora, como casetes magnéticos u otros dispositivos de almacenamiento magnético, tarjeta de memoria instantánea, CD-ROM, discos versátiles digitales (DVD) u otros medios de almacenamiento óptico, memorias de acceso aleatorio (RAM), memorias de sólo lectura (ROM), memoria de sólo lectura programable que puede ser borrada eléctricamente (EEPROM) y similares, también se pueden utilizar para implementar el sistema de cómputo ejemplar y su entorno. Cualquier número de módulos de programa se pueden almacenar en el disco duro 516, en el disco magnético 520, en el disco óptico 524, en la ROM 512 y/o la RAM 510, incluyendo, a manera de ejemplo, un sistema operativo 526, uno o más programas de aplicaciones 528, otros módulos de programa 530, y datos de programa 532. Cada uno de dicho sistema operativo 526, uno o más programas de aplicación 528, otros módulos de programa 530 y datos de programa 532 (o algunas combinaciones de estos) pueden implementar todo o una parte de los componentes residentes que dan soporte al sistema de archivos distribuido. Un usuario puede introducir comandos e información en una computadora 502 a través de dispositivos de entrada como un teclado 534 y un dispositivo puntero 536 (por ejemplo un "ratón"). Otros dispositivos de entrada 538 (no se muestran específicamente) pueden incluir un micrófono, una palanca de mando, una almohadilla de juego, una antena parabólica, un puerto en serie, un explorador y/o similar. Estos y otros dispositivos de entrada se conectan a la unidad de procesamiento 504 a través de interfaces de entrada / salida 540 que se acoplan a la barra de distribución del sistema 508, pero pueden conectarse a través de otras interfaces y estructuras de barras de distribución, por ejemplo un puerto paralelo, un puerto de juegos o una barra de distribución en serie universal (USB). Un monitor 542 u otro tipo de dispositivo de visualización también se puede conectar a la barra de distribución del sistema 508 a través de una interfaz, por ejemplo un adaptador de video 544. Además del monitor 542, otros dispositivos periféricos de salida pueden incluir componentes como altavoces (no se muestran) y una impresora 546 la cual puede conectarse a la computadora 502 a través de las interfaces de entrada / salida 540. La computadora 502 puede funcionar en un entorno conectado en red usando conexiones lógicas a una o más computadoras remotas, por ejemplo un dispositivo de cómputo remoto 548. A manera de ejemplo, el dispositivo de cómputo remoto 548 puede ser una computadora personal, una computadora portátil, un servidor, un enrutador, una computadora de red, un dispositivo de compañero u otro nodo de red común, y similares. El dispositivo de cómputo remoto 548 se ilustra como una computadora portátil que puede incluir muchos o todos los elementos y características descritos en la presente con relación a la computadora 502. Las conexiones lógicas entre la computadora 502 y la computadora remota 548 se ilustran como una red de área local (LAN) 550 y una red de área extensa (WAN) general 522. Tales entornos de red son lugares comunes en oficinas, redes de cómputo empresariales, redes internas y en Internet. Cuando se implementa en un entorno de red LAN, la computadora 502 se conecta a una red local 550 a través de una interfaz de red o adaptador 554, cuando se implementa en un entorno de red WAN, la computadora 502 típicamente incluye un módem 556 u otros medios para establecer comunicación sobre la red extensa 552. El módem 556, que puede ser interno o externo a la computadora 502, se puede conectar a la barra de distribución del sistema 58 a través de interfaces de entrada / salida 540 u otros mecanismos adecuados. Debe ser evidente que las conexiones de red que se ilustran son ejemplares que pueden usarse otros medios para establecer enlaces de comunicación entre las computadoras 502 y 548.
En un entorno de red, como el que se ¡lustra con el entorno de cómputo 500, los módulos de programa que se ¡lustran con relación a la computadora 502 o porciones de estos, pueden almacenarse en un dispositivo de almacenamiento de memoria remota. A manera de ejemplo, los programas de aplicación remota 558 se encuentran en un dispositivo de memoria de la computadora remota 548. Para propósitos de ilustración, los programas de aplicación y otros componentes de programa ejecutables como el sistema operativo se ilustran en la presente como bloques discretos, aunque se reconoce que tales programas y componentes se encuentran diversas ocasiones en diferentes componentes de almacenamiento del dispositivo de cómputo 502 y se ejecutan a través de procesadores de datos de la computadora. Conclusión Se describen diversos módulos y técnicas en la presente dentro de un contexto general de instrucciones que pueden ser ejecutadas a través de una computadora, como módulos de programa, ejecutados por una o más computadoras u otros dispositivos. Generalmente, los módulos de programa incluyen rutinas, programas, objetos, componentes, estructuras de datos, etc., que realizan tareas particulares o implementan tipos particulares de datos abstractos. Típicamente, la funcionalidad de los módulos de programa pueden combinarse o distribuirse como se desee en diversas modalidades.
Se puede almacenar o transmitir una implementación de estos módulos y técnicas a través de alguna forma de medio legible a través de una computadora. Los medios que pueden ser leídos a través de una computadora pueden ser cualquier medio disponible al que se pueda tener acceso a través de una computadora. A manera de ejemplo, y no de limitante, los medios legibles a través de una computadora pueden comprender "medios de almacenamiento de computadora" y "medios de comunicaciones". "Medios de almacenamiento de computadora" incluye medios permanentes y no permanentes, extraíbles y no extraíbles implementados en cualquier método o tecnología para almacenar información, como instrucciones que pueden ser leídas a través de una computadora, estructuras de datos, módulos de programas u otros datos. Los medios de almacenamiento en computadora incluyen, sin limitarse a esto, RAM, ROM, EEPROM, memoria instantánea u otras tecnologías de memoria, CD-ROM, discos versátiles digitales (DVD) u otros medios de almacenamiento óptico, casetes magnéticos, cintas magnéticas, medios de almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético o cualquier otro medio que se pueda usar para almacenar la información deseada y al que se pueda tener acceso a través de una computadora. Los "medios de comunicación" típicamente incluyen instrucciones que pueden ser leídas a través de una computadora, estructuras de datos, módulos de programa u otros datos en una señal de datos modulada, como una onda de portadora u otros mecanismos de transporte. Los medios de comunicación también incluyen cualquier medio de entrega de información. El término "señal de datos modulada" significa una señal que tiene una o más de sus características establecida o cambiada de manera tal que codifique información dentro de la señal. A manera de ejemplo, y no de limitante, los medios de comunicación incluyen medios cableados como una red cableada o una conexión cableada directa además de medios inalámbricos como medios acústicos, RF, infrarrojos y otros medios inalámbricos. Combinaciones de cualquiera de los anteriores también se incluyen dentro del alcance de los medios que pueden ser leídos a través de una computadora. En la presente invención se describen diversos diagramas de flujo y se ilustran en las Figuras anexas. El orden de las acciones de estos diagramas de flujo son ejemplos únicamente, este orden puede cambiar de manera que las acciones se realicen en diferente orden y/o de manera concurrente. Adicionalmente, se proporcionan en la presente diversos ejemplos numéricos específicos (por ejemplo, valores de tolerancia particulares, tamaños particulares, pesos particulares, etc.). Estos ejemplos numéricos específicos son sólo ejemplos, y otros valores pueden usarse de manera alternativa. Aunque la descripción anterior utiliza un lenguaje que es específico para las características estructurales y/o acciones metodológicos, debe comprenderse que la invención definida en las reivindicaciones anexas no está limitada a las características específicas o a las acciones descritos. En su lugar, las características específicas así como las acciones se describen como formas ejemplares para implementar la invención.