Sadece Batch data processing with App Engine session of Google I/O 2010'u izledim, MapReduce article from Google Research'un bazı bölümlerini okuyun ve şimdi Python'da bir öneri sistemini uygulamak için MapReduce on Google App Engine'u kullanmayı düşünüyorum.MapReduce, Google App Engine'de birden fazla veri deposuyla ilgili
Task Queue API yerine appengine mapreduce'u kullanmayı tercih ediyorum çünkü birincisi, bir türdeki tüm örneklerde, otomatik yığınlamada, otomatik görev zincirlemesinde, vb. Kolay yinelemeyi sunuyor. Sorun şudur: benim öneri sistemim örnekler arasındaki ilişkiyi hesaplamalıdır İki farklı Modelin, yani, iki ayrı türün örnekleri.
Örnek: Şu iki Modelim var: Kullanıcı ve Öğe. Her birinin özellik olarak etiket listesi vardır. Aşağıda kullanıcılar ve öğeler arasındaki ilişkiyi hesaplama işlevleri bulunmaktadır. calculateCorrelation
kullanıcı ve öğelerin her kombinasyonu için çağrılmalıdır unutmayın:
def calculateCorrelation(user, item):
return calculateCorrelationAverage(u.tags, i.tags)
def calculateCorrelationAverage(tags1, tags2):
correlationSum = 0.0
for (tag1, tag2) in allCombinations(tags1, tags2):
correlationSum += correlation(tag1, tag2)
return correlationSum/(len(tags1) + len(tags2))
def allCombinations(list1, list2):
combinations = []
for x in list1:
for y in list2:
combinations.append((x, y))
return combinations
Ama bu calculateCorrelation
appengine-MapReduce geçerli Mapper değildir ve belki de bu fonksiyon MapReduce hesaplama konsepti ile bile uyumlu değildir. Yine de, emin olmalıyım ki ... otomatik yığınlama ve görev zincirleme gibi bu appengine-mapreduce avantajlarına sahip olmak benim için gerçekten harika olurdu.
Bunun için herhangi bir çözüm var mı?
Kendi InputReader'ımı tanımlamalı mıyım? İki farklı türdeki tüm örnekleri okuyan yeni bir InputReader, mevcut appengine-mapreduce uygulamasına uyumlu mu?
Veya aşağıdakileri denemeli miyim?
- yeni Modelinin örnekleri (muhtemelen kullanarak MapReduce) içine, iki tarafından, bu iki çeşit Tüzel kişilerden ikisini bütün anahtarları birleştirin her biri için bu yeni model
- örnekleri üzerinde Haritacıların kullanılarak
- Bıkmadan Örneğin, farklı türlerdeki iki varlığı elde etmek için anahtarlar kullanın ve bunlar arasındaki ilişkiyi hesaplayın.
? Kullanıcı ve öğenin her kombinasyonu var mı? Sadece bir şekilde ilgili olanları mı? Ayrıca, hangi dil bu? Python değil! Kullanıcı ve öğenin her birleşimi için –
'hesaplaCorrelation 'çağrılmalıdır. Ve şimdi karışıklığı önlemek için değişken türlerini kaldırdım. – fjsj