2010-01-28 13 views
15

con frecuencia vemos 'artículos relacionados'. Por ejemplo, en los blogs, tenemos publicaciones relacionadas, en libros, libros relacionados, etc. Mi pregunta es ¿cómo compilamos esa relevancia? Si solo es etiqueta, a menudo veo artículos relacionados que no tienen la misma etiqueta. Por ejemplo, cuando busque 'rosa', un artículo relacionado podría tener una etiqueta 'púrpura'.Cómo encontrar "artículos relacionados" en PHP

¿Alguien tiene alguna idea?

+0

También hay una pregunta relacionada http://stackoverflow.com/questions/18019976/mysql-php-find-similar-related-items-by-tag-taxonomy –

Respuesta

29

Hay muchas maneras de calcular la similitud de dos elementos, pero para un método sencillo, toman una mirada al coeficiente de Jaccard.

http://en.wikipedia.org/wiki/Jaccard_index

que es: J (a, b) = intersección (a, b)/unión (a, b)

So lets say you want to compute the coefficient of two items: 

Item A, which has the tags "books, school, pencil, textbook, reading" 
Item B, which has the tags "books, reading, autobiography" 

intersection(A,B) = books, reading 
union(A,B) = books, school, pencil, textbook, reading, autobiography 

so J(a,b) = 2/6 = .333 

So the most related item to A would be the item which results in the highest Jaccard Coefficient when paired with A. 
1

Puede ser más de una etiqueta, por ejemplo, puede ser la media de cada obra que aparece en un párrafo, y luego títulos, etc

0

también puede basarse en "las personas que han comprado este libro también han comprado"

No importa cómo, usted necesitará un poco dort de conexión entre sus elementos, y que en su mayoría serán realizados por los seres humanos

4

Estas son algunas de las formas:

  1. Conectándolas manualmente. Coloque una tabla con los campos item_id y related_item_id, luego haga una interfaz para insertar las conexiones. Útil para relacionar dos elementos que están relacionados pero que no se parecen o que no pertenecen a la misma categoría/etiqueta (o en una tabla de entrada no categorizada). Ejemplo: bañera y patito de goma
  2. Levante algunos artículos que pertenecen a la misma categoría o tienen una etiqueta similar. La idea es que esos elementos deben estar relacionados de algún modo ya que están en la misma categoría. Ejemplo: en la página que ve los monitores LCD, hay monitores LCD aleatorios (con el mismo rango de precio/fabricante/resolución) en la sección "Artículos relacionados".
  3. Realice una búsqueda de texto que coincida con el nombre del elemento actual (y la descripción) con otros elementos de la tabla. Entiendes la idea.
1

Yo diría que usan ontology para lo que agrega más funciones excelentes a la aplicación.

2

Para obtener una simple lista de artículos relacionados basado en etiquetas, las soluciones básicas dice así:

3 mesas, uno con artículos, uno con etiquetas y otro con la conexión. La tabla de conexiones consta de dos columnas, una para cada identificación de las tablas restantes. Una entrada en la tabla de conexiones vincula una etiqueta con un elemento al poner sus respectivos identificadores en una fila.

Ahora, para obtener esa lista de artículos relacionados.

busque todos los artículos que comparten al menos una etiqueta con el artículo original. asegúrese de buscar las etiquetas junto con los artículos, y luego use un mecanismo de clasificación simple para determinar qué elemento comparte la mayoría de las etiquetas con la original. cada etiqueta aumenta la relación-relevancia en uno.

Dependiendo de sus hábitos de etiquetado, podría ser inteligente agregar algún contra mecanismo para evitar que las grandes etiquetas superpuestas mezclen la relevancia. para lograr esto, podría otorgar mayor importancia a las etiquetas que están por debajo de un determinado umbral de dispositivos. Un umbral que generalmente me ha funcionado bien es total_number_of_tag_appliances/total_number_of_tags, que da como resultado el número promedio de dispositivos. Si el recuento de dispositivos de etiquetas es menor que el promedio, la relación-relevancia aumenta doble.

Cuestiones relacionadas