"Ilişkili öğeleri" bulmak için nasıl

7 Cevap php

sık sık 'ilgili öğeleri' bakın. Biz Mesajları ilgili var bloglarda Örneğin, kitaplarda biz kitap vs, Benim soru nasıl biz bu relevency derleme yapmak nedir ilgili var? Sadece etiket varsa, sık sık aynı etiketi yoktur ilgili öğeleri görmek. Örneğin, 'pembe' için arama, bir ilgili madde bir 'mor' etiketine sahip olabilir zaman.

Herkes herhangi bir fikir var?

7 Cevap

Orada iki öğelerin benzerliği hesaplamak için birçok yolu vardır, ancak basit bir yöntem için, Jaccard katsayısı bir göz atın.

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

Hangi: J (a, b) = kesişme (a, b) / birlik (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.

İşte bazı yollar vardır:

  1. Elle bağlamak. Alanlara item_id ile bir masa koyun ve related_item_id, ardından bağlantıları eklemek için bir arayüz yapmak. Ilgili ama hiçbir benzerlik var ya aynı kategori / etiketi (veya bir sınıflandırılmamış giriş tablosunda) ait olmayan iki ürün ilişkilendirmek yararlı. Örnek: Küvet ve kauçuk aziz
  2. Aynı kategoriye ait veya benzer bir etikete sahip bazı öğeleri yukarı çekin. Fikir aynı kategoride beri bu ürün biraz ilgili olmasıdır. Örnek: sayfa görüntüleme, LCD monitörler, "İlgili öğeler" bölümünde (aynı fiyat aralığı / üretici / çözünürlük ile) rastgele LCD monitörler vardır.
  3. Tablodaki diğer öğelere karşı bir metin arama eşleşen geçerli öğenin ismini (ve veya açıklama) yapın. Siz anladınız.

Bu bir etiketi daha fazla olabilir, örneğin bir paragrafta görünen her işin ortalama olabilir, ve sonra başlık, vs

Ben onlar uygulamaya daha harika özellikler ekler bunun için ontology kullanmak söyleyebilirim.

Etiketlere göre ilgili öğeleri basit bir listesini almak için, temel çözümler şöyle:

3 tablolar, öğeler ile tek, etiketleri ile bir ve bağlantı ile bir. Bağlantı tablo iki sütun, kalan tablolardan her id için biri oluşur. Bağlantı tablosundaki bir girdi üst üste kendi kimlikleri koyarak bir madde ile bir etiket bağlar.

Şimdi, ilgili maddelerin o listeyi almak için.

özgün öğe ile en az bir etiket paylaşan tüm ürün almak. öğeleri ile birlikte etiketleri getir ve daha sonra belirlemek için basit bir değerlendirme mekanizması, orijinal ile öğe hisse en etiketleri kullandığınızdan emin olun. Her etiketi tek ilişki-alaka artar.

Etiketleme-alışkanlıklarına bağlı olarak, bu alaka kadar karıştırma geniş kapsamlı etiketleri önlemek için bazı karşı mekanizma eklemek akıllıca olabilir. Bunu başarmak için, cihazlar belli bir eşiğin altında etiketleri daha fazla ağırlık verebilir. Genellikle güzel benim için çalıştı bir eşik, cihazların ortalama sayısına hangi sonuçları, total_number_of_tag_appliances / total_number_of_tags olduğunu. Etiketleri cihaz-sayısı ortalama küçükse, ilişki-alaka çift artar.

o da "Bu kitabı aldım insanlar da aldım" dayalı olabilir

Ne kadar, sizin öğeler arasında bağlantı bazı dort ihtiyacınız olacak, ve çoğunlukla insanlar tarafından yapılacaktır

Bu benim implementation(GIST) Jaccard index PostgreSQL'le arasında ve Ruby on Rails olduğunu ...