당신은 추천이 rescorer없이 호출되는 경우에도 Recommender
클래스 다음
class CustomRecommender implements Recommender{
....
public List<RecommendedItem> recommend(long userID, int howMany) throws TasteException {
IDRescorer rescorer = new CustomResorer();
return delegate.recommend(userID, howMany, rescorer);
}
public List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer) throws TasteException {
return delegate.recommend(userID, howMany, rescorer);
}
public float estimatePreference(long userID, long itemID) throws TasteException {
IDRescorer rescorer = new CustomResorer();
return (float) rescorer.rescore(itemID, delegate.estimatePreference(userID, itemID));
}
...
}
당신 자신의 구현을 만들 수 있습니다, 당신은이 recommend
및 estimatePreference
방법에 통합 할 예정이다.
그리고 당신이 빌드 할 때 RecommenderBuilder
당신이 당신의 추천인의 인스턴스를 생성합니다 :
RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
@Override
public Recommender buildRecommender(DataModel model) throws TasteException {
Similarity similarity = new ...
return new CustomRecommender(model, similarity);
}
};
@DraganMilcevski 답 주셔서 대단히 감사합니다. 내 'CustomRescorer'이 '새 CustomRescorer (requestParams : Seq [String])'과 같은 다른 매개 변수에 따라 달라 지므로 정확히 찾고있는 것이 아닙니다. 다른 모든 경우에는 귀하의 대답이 적합 할 수 있습니다. – cyrillk
이 문제를 해결할 수있는 방법이 있습니다. Recommender 클래스에서 customRescorrer를 변수로 사용하고 새 값을 설정하여 새로 고칠 수도 있습니다. 그러면 권장 프로세스가 시작될 때 새 rescorer가 사용됩니다. 어쩌면 수업 전체를 보내면 내가 너를 도울지도 모른다. –