titulo motores ejemplos busqueda php parsing screen-scraping relevance

php - motores - ejemplos de titulo seo



¿Cómo los motores de búsqueda encuentran contenido relevante? (13)

¿Cómo encuentra Google contenido relevante cuando analiza la web?

Digamos, por ejemplo, que Google usa la biblioteca de DOM nativa de PHP para analizar el contenido. ¿Qué métodos serían para que encuentre el contenido más relevante en una página web?

Mi opinión sería que buscaría todos los párrafos, ordenaría por la longitud de cada párrafo y luego, de posibles cadenas de búsqueda y parámetros de consulta, calcularía el porcentaje de relevancia de cada párrafo.

Digamos que tenemos esta URL:

http://domain.tld/posts/stackoverflow-dominates-the-world-wide-web.html

Ahora, desde esa URL, me gustaría saber que el nombre del archivo HTML sería de gran relevancia, así que vería cuán cerca se compara esa cadena con todos los párrafos de la página.

Un buen ejemplo de esto sería compartir en Facebook, cuando comparte una página. Facebook bots rápidamente el enlace y trae imágenes, contenido, etc., etc.

Estaba pensando que algún tipo de método de cálculo sería lo mejor, calcular el% de relevancia según los elementos y metadatos que lo rodean.

¿Hay algún libro / información sobre las mejores prácticas de análisis de contenido que cubra cómo obtener el mejor contenido de un sitio, cualquier algoritmo del que se pueda hablar o una respuesta en profundidad?

Algunas ideas que tengo en mente son:

  • Encuentre todos los párrafos y ordene por longitud de texto sin formato
  • De alguna manera, encuentre el ancho y la altura de los contenedores div y ordene por (W + H) - @Benoit
  • Verifique las palabras clave meta, título, descripción y verifique la relevancia dentro de los párrafos
  • Buscar todas las etiquetas de imagen y ordenar por mayor, y la longitud de los nodos fuera del párrafo principal
  • Compruebe si hay datos de objetos, como videos, y cuente los nodos del mayor div párrafo / contenido
  • Resuelva semejanzas de páginas anteriores analizadas

La razón por la que necesito esta información:

Estoy construyendo un sitio web donde los webmasters nos envían enlaces y luego enumeramos sus páginas, pero quiero que el webmaster envíe un enlace, luego voy y rastreo esa página para encontrar la siguiente información.

  • Una imagen (si corresponde)
  • Un párrafo <255 de la mejor porción de texto
  • Palabras clave que se utilizarían para nuestro motor de búsqueda, (Estilo de desbordamiento de pila)
  • Metadatos Palabras clave, Descripción, todas las imágenes, registro de cambios (para fines de moderación y administración)

Espero que puedan entender que esto no es para un motor de búsqueda, pero la forma en que los motores de búsqueda abordan el descubrimiento de contenido está en el mismo contexto en que lo necesito.

No estoy pidiendo secretos comerciales, estoy preguntando cuál sería su enfoque personal sobre esto.


Aquí hay algunas buenas respuestas, pero parece que no responden tu pregunta. Quizás este lo haga.

Lo que estás buscando se llama Recuperación de información

Usualmente usa el modelo de Bag Of Words

Digamos que tienes dos documentos:

DOCUMENT A Seize the time, Meribor. Live now; make now always the most precious time. Now will never come again

y éste

DOCUMENT B Worf, it was what it was glorious and wonderful and all that, but it doesn''t mean anything

y tiene una consulta, o algo que desea encontrar otros documentos relevantes para

QUERY aka DOCUMENT C precious wonderful life

De todos modos, ¿cómo se calcula el más "relevante" de los dos documentos? Así es cómo:

  1. tokenizar cada documento (dividir en palabras, eliminar todas las letras no)
  2. minúsculas todo
  3. eliminar las palabras vacías (y, etc.)
  4. Considere la posibilidad de derivar (eliminar el sufijo, ver los algoritmos de derivación Porter o Snowball)
  5. considere usar n-grams

Puede contar la palabra frecuencia para obtener las "palabras clave".

Luego, crea una columna para cada palabra y calcule la importancia de la palabra para el documento, con respecto a su importancia en todos los documentos. Esto se llama métrica TF-IDF.

Ahora tienes esto:

Doc precious worf life... A 0.5 0.0 0.2 B 0.0 0.9 0.0 C 0.7 0.0 0.9

Luego, calcula la similitud entre los documentos, utilizando la medida de similitud Cosine. El documento con la mayor similitud con el DOCUMENTO C es el más relevante.

Ahora, parece que desea buscar los párrafos más similares, así que simplemente llame a cada párrafo de un documento, o considere usar Windows deslizante sobre el documento.

Puedes ver mi video aquí. Utiliza una herramienta gráfica de Java, pero explica los conceptos:

http://vancouverdata.blogspot.com/2010/11/text-analytics-with-rapidminer-part-4.html

aquí hay un libro de IR decente:

http://nlp.stanford.edu/IR-book/pdf/irbookonlinereading.pdf


Consideraría estos construyendo el código

  • Buscar synonyms y acrónimos
  • aplicar OCR en las imágenes para buscar como texto (Abby Fine Reader y Recostar son agradables, Tesseract es gratis y está bien (no tan fino como un buen lector :))
  • Fuentes de peso también (tamaño, negrita, subrayado, color)
  • contenido de peso dependiendo de su lugar en la página (como los contenidos en la parte superior de la página es más relevante)

También:

  • Un texto optinal solicitado por el webmaster para definir la página

También puede verificar si puede encontrar algo útil en la API de búsqueda de Google: http://code.google.com/intl/tr/apis/ajaxsearch/


En realidad respondiendo su pregunta (y no solo en general sobre los motores de búsqueda):

Creo que ir un poco como Instapaper sería la mejor opción.

Lógica detrás de instapaper (no lo creé así que ciertamente no conozco el funcionamiento interno, pero es bastante fácil predecir cómo funciona):

  1. Encuentra el mayor grupo de texto en elementos de texto (depender de las etiquetas de párrafo, aunque es muy elegante, no funcionará con esos sitios web que usan div''s en lugar de p). Básicamente, necesita encontrar un buen equilibrio entre los elementos de bloque (divs, ps, etc.) y la cantidad de texto. Propóngase un cierto umbral: si el número X de palabras permanece indiviso mediante el marcado, ese texto pertenece al texto del cuerpo principal. Luego expanda a los hermanos manteniendo el umbral de texto / marcado de algún tipo.

  2. Una vez que hagas la parte más difícil, encuentra qué texto pertenece al artículo real, se vuelve bastante fácil. Puede encontrar la primera imagen alrededor de ese texto y usarla como miniatura. De esta forma, evitará los anuncios, ya que no estarán tan cerca del texto del cuerpo.

  3. Finalmente, encontrar las palabras clave es la parte divertida. Puede hacer toneladas de cosas: ordene las palabras por frecuencia, elimine el ruido (ands, ors, etc.) y tenga algo agradable. Mezcle eso con "elemento prominente de texto corto sobre el área de texto del cuerpo detectado" (es decir, el título de su artículo), título de la página, meta y tiene algo muy sabroso.

Todas estas ideas, si se implementan correctamente, serán muy a prueba de balas, ya que no se basan en el marcado semántico: al hacer que su código sea complejo, se asegura que incluso los sitios web con códigos muy descuidados serán detectados correctamente.

Por supuesto, viene con una desventaja de bajo rendimiento, pero supongo que no debería ser tan pobre.

Consejo: para sitios web a gran escala, a los que las personas se vinculan muy a menudo, puede establecer manualmente el elemento HTML que contiene el texto del cuerpo (que estaba describiendo en el punto n. ° 1). Esto asegurará la corrección y acelerará las cosas.

Espero que esto ayude un poco.


Esta es una pregunta muy general, ¡pero es un tema muy bueno! Definitivamente upvoted :) Sin embargo, no estoy satisfecho con las respuestas proporcionadas hasta ahora, así que decidí escribir una respuesta bastante larga sobre esto.

La razón por la que no estoy satisfecho es que las respuestas son todas verdaderas (me gusta especialmente la respuesta de kovshenin (+1), que está relacionada con la teoría de grafos ...), pero todas son demasiado específicas en ciertos factores o también general.

Es como preguntar cómo hornear un pastel y obtienes las siguientes respuestas:

  • Usted hace un pastel y lo pone en el horno.
  • ¡Definitivamente necesitas azúcar!
  • ¿Qué es un pastel?
  • ¡El pastel es una mentira!

No estarás satisfecho porque no quieres saber qué es lo que hace una buena torta. Y, por supuesto, hay muchas o recetas.

Por supuesto, Google es el jugador más importante, pero, según el caso de uso, un motor de búsqueda puede incluir factores muy diferentes o ponderarlos de manera diferente.

Por ejemplo, un motor de búsqueda para descubrir nuevos artistas musicales independientes puede poner un malus en sitios web de artistas con muchos enlaces externos en.

Un motor de búsqueda convencional probablemente hará exactamente lo contrario para proporcionarle "resultados relevantes".

Hay (como ya se dijo) más de 200 factores publicados por Google. Entonces, los webmasters saben cómo optimizar sus sitios web. Es muy probable que haya muchos más que el público desconoce (en el caso de Google).

Pero en el término muy abstracto y abstracto de SEO , generalmente puede dividir los importantes en dos grupos:

  1. ¿Qué tan bien responde la respuesta a la pregunta? O bien, ¿qué tan bien coincide el contenido de las páginas con los términos de búsqueda?

  2. ¿Qué tan popular / buena es la respuesta? O bien: ¿qué es el pagerank?

En ambos casos, lo importante es que no estoy hablando de sitios web completos o dominios, estoy hablando de páginas únicas con una URL única.

También es importante que el pagerank no represente todos los factores, solo los que Google clasifica como Popularidad. Y bueno, me refiero a otros factores que simplemente no tienen nada que ver con la popularidad.

En el caso de Google, la declaración oficial es que quieren dar resultados relevantes para el usuario. Lo que significa que todos los algoritmos se optimizarán para lo que el usuario quiere.

Entonces, después de esta larga presentación (me alegro de que todavía estés conmigo ...) te daré una lista de factores que considero que son muy importantes (por el momento):

Categoría 1 (¿Qué tan buena responde la pregunta a la pregunta?

¡Notará que mucho se reduce a la estructura del documento!

  • La página trata principalmente con la pregunta exacta.

Significado: la pregunta que las palabras aparecen en el texto del título de las páginas o en los párrafos de los párrafos de los párrafos. Lo mismo ocurre con la posición de estas palabras clave. Cuanto antes en la página, mejor. Se repite a menudo también (si no demasiado, lo que se conoce como relleno de palabras clave).

  • Todo el sitio web trata el tema (las palabras clave aparecen en el dominio / subdominio)

  • Las palabras son un tema importante en esta página (los enlaces internos de los textos de enlace saltan a las posiciones de la palabra clave o los textos de enlace / textos de enlace contienen la palabra clave).

  • Lo mismo ocurre si los enlaces externos usan las palabras clave en el texto del enlace para vincular a esta página.

Categoría 2 (¿Qué tan importante / popular es la página?)

Notarás que no todos los factores apuntan hacia este objetivo exacto. Algunos están incluidos (especialmente por Google) solo para darles un impulso a las páginas, eso ... bueno ... eso lo merecía / lo ganaba.

  • El contenido es el rey!

La existencia de contenido único que no se puede encontrar o solo muy poco en el resto de la web da un impulso. Esto se mide principalmente por combinaciones desordenadas de palabras en un sitio web que generalmente se usan muy poco (palabras importantes). Pero también hay métodos mucho más sofisticados.

  • Recency - más nuevo es mejor

  • Cambio histórico (con qué frecuencia la página se ha actualizado en el pasado. Cambiar es bueno).

  • Popularidad del enlace externo (¿cuántos enlaces hay en?)

Si una página vincula otra página, el enlace vale más si la página tiene un alto puntaje de página.

  • Diversidad de enlaces externos

básicamente enlaces de diferentes dominios raíz, pero otros factores también juegan un papel. Factores como incluso cómo se separan son los servidores web de vincular sitios geográficamente (de acuerdo con su dirección IP).

  • Clasificación de confianza

Por ejemplo, si los sitios grandes, de confianza y establecidos con contenido redaccional están vinculados a usted, obtendrá un rango de confianza. Es por eso que un enlace de The New York Times vale mucho más que un nuevo sitio web extraño, ¡incluso si el PageRank es más alto!

  • Confianza de dominio

Todo tu sitio web impulsa tu contenido si tu dominio es de confianza. Bien diferentes factores cuentan aquí. Por supuesto, enlaces desde sitios de confianza a su dominio, pero incluso funcionará si se encuentra en el mismo centro de datos que los sitios web importantes.

  • Enlaces específicos del tema en

Si los sitios web que se pueden resolver para un enlace de tema a usted y la consulta también pueden resolverse para este tema, es bueno.

  • Distribución de enlaces en el tiempo.

Si ganó muchos enlaces en un corto período de tiempo, esto lo hará bien en este momento y en el futuro cercano posterior. Pero no tan bien más tarde en el tiempo. Si reduces y consigues ganar enlaces, te beneficiará el contenido "atemporal".

  • Enlaces de dominios restringidos

Un enlace desde un dominio .gov vale mucho.

  • Comportamiento del usuario

¿Cuál es el porcentaje de clics de tu resultado de búsqueda?

  • Tiempo pasado en el sitio

Seguimiento de Google Analytics, etc. También se rastrea si el usuario hace clic atrás o hace clic en otro resultado después de abrir el suyo.

  • Datos de usuario recopilados

Votos, clasificación, etc., referencias en Gmail, etc.

Ahora voy a presentar una tercera categoría, y uno o dos puntos de arriba entrarían en esta categoría, pero no he pensado en eso ... La categoría es:

** Qué tan importante / bueno es tu sitio web en general **

Todas sus páginas se clasificarán un poco dependiendo de la calidad de sus sitios web

Los factores incluyen:

  • Buena arquitectura de sitio (fácil de navegar, estructurado, Sitemaps, etc.)

  • Cómo establecido (los dominios existentes de larga duración valen más).

  • Información de Hoster (¿qué otros sitios web se alojan cerca de usted?

  • Frecuencia de búsqueda de su nombre exacto.

Por último, pero no menos importante, quiero decir que muchos de estos factores se pueden enriquecer con la tecnología semántica y se pueden introducir otros nuevos.

Por ejemplo, alguien puede buscar Titanic y usted tiene un sitio web sobre icebergs ... que se puede establecer en una correlación que puede reflejarse.

Identificadores semánticos recientemente introducidos. Por ejemplo, las etiquetas OWL pueden tener un gran impacto en el futuro.

Por ejemplo, un blog sobre la película Titanic podría poner un letrero en esta página que es el mismo contenido que en el artículo de Wikipedia sobre la misma película.

Este tipo de enlace se encuentra actualmente en desarrollo y establecimiento y nadie sabe cómo se usará.

¿Tal vez el contenido duplicado se filtra y solo se muestra el contenido más importante del mismo? ¿O tal vez al revés? Que le presenten muchas páginas que coincidan con su consulta. Incluso si no contienen sus palabras clave?

Google incluso aplica factores de diferente relevancia según el tema de su consulta de búsqueda.


Google para ''rastreadores web, robots, arañas y agentes inteligentes'' puede probarlos por separado y obtener resultados individuales.

Lo que creo que estás buscando es Screen Scraping (con DOM), que Stack tiene un montón de preguntas y respuestas .


Google también usa un sistema llamado Page Rank, donde examina cuántos enlaces hay a un sitio. Digamos que está buscando un tutorial de C ++ y busca uno en Google. Encuentra uno como el resultado principal, y es un gran tutorial. Google sabe esto porque buscó a través de su caché de la web y vio que todos estaban enlazando a este tutorial, mientras que despotricaba sobre lo bueno que era. Google dice que es un buen tutorial y lo pone como el mejor resultado.

De hecho, hace eso ya que almacena todo en caché, dando a cada página un Page Rank, como se dijo antes, basado en enlaces a este.

¡Espero que esto ayude!


Hay muchos algoritmos altamente sofisticados para extraer el contenido relevante de una sopa de etiquetas. Si está buscando construir algo utilizable, podría echarle un vistazo al código fuente de readability y transferirlo a php. Hice algo similar recientemente (no puedo compartir el código, desafortunadamente).

La lógica básica de la legibilidad es encontrar todas las etiquetas de nivel de bloque y contar la longitud del texto en ellas, sin contar los elementos secundarios. Luego cada nodo padre recibe un fragmento (la mitad) del peso de cada uno de sus hijos. Esto se usa para financiar la etiqueta de nivel de bloque más grande que tiene la mayor cantidad de texto sin formato. Desde aquí, el contenido se limpia más.

No es a prueba de balas de ninguna manera, pero funciona bien en la mayoría de los casos.


La mayoría de los motores de búsqueda buscan el título y la meta descripción en el encabezado del documento, luego encabezan uno y el contenido de texto en el cuerpo. También se consideran etiquetas Alt de imagen y títulos de enlace. Última vez que leí, Yahoo estaba usando la etiqueta de palabra clave meta, pero la mayoría no.

Es posible que desee descargar los archivos de código abierto de The Search Engine Project (TSEP) en Sourceforge https://sourceforge.net/projects/tsep/ y echar un vistazo a cómo lo hacen.


Me enfrento al mismo problema en este momento, y después de algunos intentos encontré algo que funciona para crear un fragmento de página web (debe ser ajustado):

  • tomar todo el html
  • eliminar las etiquetas de guiones y estilos dentro del cuerpo CON SU CONTENIDO (importante)
  • eliminar espacios innecesarios, pestañas, nuevas líneas.
  • ahora navegue a través del DOM para capturar div, p, article, td (¿otros?) y, para cada uno. tomar el html del elemento actual. tomar una versión de "solo texto" del contenido del elemento. asignar a este elemento la puntuación: longitud del texto * longitud del texto / longitud html
  • ahora ordena todos los puntajes, toma el mejor.

Esta es una manera rápida (y sucia) de identificar los textos más largos con un equilibrio de marcado relativamente bajo, como lo que ocurre en los contenidos normales. En mis pruebas, esto parece realmente bueno. Solo agrega agua ;)

Además de esto, puede buscar metaetiquetas "og:", título y descripción, h1 y muchas otras técnicas menores.


No trabajo en Google, pero hace aproximadamente un año leí que tenían más de 200 factores para clasificar sus resultados de búsqueda. Por supuesto, la clasificación más alta sería la relevancia, por lo que su pregunta es bastante interesante en ese sentido.

¿Qué es relevancia y cómo se calcula? Hay varios algoritmos y apuesto a que Google tiene el suyo, pero de los que tengo conocimiento son de la Correlación de Pearson y la Distancia euclidiana .

Un buen libro que sugeriría sobre este tema (no necesariamente los motores de búsqueda) es Programming Collective Intelligence por Toby Segaran (O''Reilly). Algunas muestras del libro muestran cómo obtener datos de sitios web de terceros a través de API o raspado de pantalla, y encontrar entradas similares, lo cual es bastante bueno.

De todos modos, de vuelta a Google. Otras técnicas de relevancia son, por supuesto, la búsqueda de texto completo y es posible que desee obtener un buen libro sobre MySQL o Sphinx para el caso. Sugerido por @Chaoley fue TSEP, que también es bastante interesante.

Pero, realmente, conozco personas de un motor de búsqueda ruso llamado Yandex aquí, y todo lo que hacen es bajo NDA, así que supongo que puedes acercarte, pero no puedes ser perfecto, a menos que trabajes en Google;)

Aclamaciones.


Para responder a una de sus preguntas, estoy leyendo el siguiente libro en este momento, y lo recomiendo: Google PageRank and Beyond , de Amy Langville y Carl Meyer.

Levemente matemático. Usa algo de álgebra lineal en un contexto teórico de grafos, eigenanálisis, modelos de Markov, etc. Disfruté las partes que hablan de métodos iterativos para resolver ecuaciones lineales. No tenía idea de que Google empleara estos métodos iterativos.

Libro corto, solo 200 páginas. Contiene "apartes" que divergen del flujo principal del texto, más una perspectiva histórica. También apunta a otros sistemas de clasificación recientes.


Solo agarraría el primer ''párrafo'' de texto. La forma en que la mayoría de la gente escribe historias / problemas / lo que sea es que primero declaran lo más importante y luego elaboran. Si miras cualquier texto al azar y ves que tiene sentido la mayor parte del tiempo.

Por ejemplo, hágalo usted mismo en su pregunta original. Si toma las primeras tres oraciones de su pregunta original, tiene un resumen bastante bueno de lo que está tratando de hacer.

Y, yo también lo hice yo mismo: la esencia de mi comentario se resume en el primer párrafo. El resto son solo ejemplos y elaboraciones. Si no está convencido, eche un vistazo a few articles recent que elegí de manera semialeatoria de Google News. Ok, ese último no fue semi-aleatorio, lo admito;)

De todos modos, creo que este es un enfoque realmente simple que funciona la mayor parte del tiempo. Siempre puede mirar meta-descripciones, títulos y palabras clave, pero si no están allí, esta podría ser una opción.

Espero que esto ayude.


Tricky, pero voy a tomar una puñalada:

Una imagen (si corresponde)

  • La primera imagen en la página
  • la imagen con un nombre que incluye las letras "logo"
  • la imagen que se muestra más cerca de la esquina superior izquierda (o arriba a la derecha)
  • la imagen que aparece con mayor frecuencia en otras páginas del sitio
  • una imagen más pequeña que algunas dimensiones máximas

Un párrafo <255 de la mejor porción de texto

  • contenido de la etiqueta del título
  • contenido de la etiqueta de descripción de contenido meta
  • contenido de la primera etiqueta h1
  • contenido de la primera etiqueta p

Palabras clave que se utilizarían para nuestro motor de búsqueda (estilo de desbordamiento de pila)

  • subcadena del nombre de dominio
  • subcadena de la url
  • subcadena de la etiqueta del título
  • proximidad entre el término y la palabra más común en la página y la parte superior de la página

Metadatos Palabras clave, Descripción, todas las imágenes, registro de cambios (para fines de moderación y administración)

  • ¡Alaska! ¡mordaza! Error de sintaxis.