2010-01-28 15 views
15

nous voyons souvent des «articles connexes». Par exemple, dans les blogs, nous avons des articles connexes, dans les livres, nous avons des livres connexes, etc. Ma question est de savoir comment nous compilons ces relevency? Si c'est juste tag, je vois souvent des articles connexes qui n'ont pas le même tag. Par exemple, lorsque vous recherchez "rose", un élément associé peut avoir une étiquette "violet".Comment trouver des "articles connexes" dans PHP

Quelqu'un a une idée?

+0

Voici également une question connexe http://stackoverflow.com/questions/18019976/mysql-php-find-similar-related-items-by-tag-taxonomy –

Répondre

29

Il y a plusieurs façons de calculer la similarité des deux articles, mais pour une méthode simple, prendre un coup d'oeil au coefficient de Jaccard.

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

Ce qui est: J (a, b) = intersection (a, b)/union (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

Il peut être plus qu'une étiquette, par exemple, il peut être en moyenne de chaque travail apparaissant dans un paragraphe, puis des titres, etc

0

il peut aussi se baser sur « les gens qui ont acheté ce livre ont également acheté »

Peu importe comment, vous aurez besoin d'une Dort de connexion entre vos articles, et ils seront principalement fait par des êtres humains

4

Voici quelques-unes des façons:

  1. Connexion manuelle entre eux. Mettre en place une table avec les champs item_id et related_item_id, puis faire une interface pour insérer les connexions. Utile pour relier deux éléments qui sont liés mais qui n'ont aucune ressemblance ou n'appartiennent pas à la même catégorie/étiquette (ou dans une table d'entrée non catégorisée). Exemple: Baignoire et canard en caoutchouc
  2. Tirez sur certains éléments appartenant à la même catégorie ou ayant une étiquette similaire. L'idée est que ces éléments doivent être quelque peu liés puisqu'ils sont dans la même catégorie. Exemple: dans la page affichant les moniteurs LCD, il y a des moniteurs LCD aléatoires (avec la même fourchette de prix/fabricant/résolution) dans la section "Éléments connexes".
  3. Effectuez une recherche de texte en comparant le nom (ou la description) de l'élément actuel avec d'autres éléments de la table. Vous avez eu l'idée.
1

Je dirais qu'ils utilisent ontology pour ce qui ajoute plus de fonctionnalités à l'application.

2

Pour obtenir une simple liste d'articles connexes basés sur les étiquettes, les solutions de base va comme ceci:

3 tables, un avec des articles, un avec des étiquettes et un avec la connexion. La table de connexion se compose de deux colonnes, une pour chaque identifiant des tables restantes. Une entrée dans la table de connexion lie une étiquette à un article en plaçant ses identifiants respectifs dans une rangée.

Maintenant, pour obtenir cette liste d'éléments connexes.

de récupérer tous les articles qui partagent au moins une étiquette avec l'élément d'origine. assurez-vous de récupérer les balises avec les éléments, puis utilisez un mécanisme d'évaluation simple pour déterminer quel élément partage le plus de balises avec l'original. chaque étiquette augmente la relation-pertinence par un.En fonction de vos habitudes de marquage, il peut être judicieux d'ajouter un contre-mécanisme pour éviter que de grandes étiquettes globales ne mélangent la pertinence. pour y parvenir, vous pourriez donner plus de poids aux étiquettes en dessous d'un certain seuil d'appareils. Total_number_of_tag_appliances/total_number_of_tags est un seuil qui a généralement bien fonctionné pour moi, ce qui donne le nombre moyen d'appliances. Si le nombre de balises de l'appliance est inférieur à la moyenne, la relation-pertinence est doublée.