package com.recommand.engine
import com.math.Cmd
import java.io.File
import java.io.IOException
import java.util.List
import org.apache.mahout.cf.taste.common.TasteException
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood
import org.apache.mahout.cf.taste.impl.recommender.CachingRecommender
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity
import org.apache.mahout.cf.taste.model.DataModel
import org.apache.mahout.cf.taste.model.JDBCDataModel
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood
import org.apache.mahout.cf.taste.recommender.RecommendedItem
import org.apache.mahout.cf.taste.recommender.Recommender
import org.apache.mahout.cf.taste.similarity.UserSimilarity
public class PSHalpUserCF {
private String m_strFileName
private DataModel m_dataModel
private Recommender m_recommender
public PSHalpUserCF(String str ) throws IOException {
m_strFileName = str
m_dataModel = new FileDataModel(new File(m_strFileName ))
}
public DataModel GetDataModel(){
return m_dataModel
}
public void Parse() throws TasteException {
UserSimilarity userSimilarity = new PearsonCorrelationSimilarity(m_dataModel)
UserNeighborhood userNeighborhood = new NearestNUserNeighborhood(2,
userSimilarity, m_dataModel)
m_recommender = new GenericUserBasedRecommender(m_dataModel,
userNeighborhood, userSimilarity)
}
public void GetRecommender ( int which , int range ) throws TasteException {
for( RecommendedItem x : m_recommender.recommend(which , range ) ){
System.out.println( x )
}
}
public int GetUserCountFromDataModel( ) {
Cmd pcmd=new Cmd()
String str = "./sh//usercount.sh " + m_strFileName
//System.out.println(str )
List<String> res = pcmd.exec( str )
if( res.size() > 0 ){
return Integer.parseInt( res.get( 0 ) )
}
return -1
}
}