2016-11-12 7 views
0

Я разрабатываю простую систему рекомендаций для воспроизведения, используя apache mahout, обращая короткое видео здесь https://www.youtube.com/watch?v=yD40rVKUwPI. Код для рекомендателя являетсяДисплей «название фильма» вместо «movie id» в качестве рекомендации от apache mahout

public class App 
{ 
    public static List<RecommendedItem> getRecommend(int k) throws Exception 
    { 
      ClassLoader classLoader = App.class.getClassLoader(); 

      DataModel model = new FileDataModel(new File(classLoader.getResource("data/dataset.csv").getFile())); 
     UserSimilarity similarity = new PearsonCorrelationSimilarity(model); 
     UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model); 
     UserBasedRecommender recommender = new  GenericUserBasedRecommender(model, neighborhood, similarity); 
     List<RecommendedItem> recommendations = recommender.recommend(k, 3); 
     return recommendations; 
    } 
} 

enter image description here

Это создает рекомендации в виде фильма id's.What Я хочу, чтобы отобразить имена вместо идентификатора фильма. Набор данных Я использую (который генерирует идентификаторы) имеет следующие столбцы в виде CSV

user_id movie_id rating 

, но так как существует MovieLens набор данных, который имеет два files- один с полями

user_id movie_id rating 

и второй с

movie_id movie_name 

Как я могу использовать вышеуказанные ресурсы, чтобы получить имена movie_names вместо id. Возможно ли это с помощью класса DataModel или есть другой выход. Я хочу рекомендации

movie_name value 

вместо нынешних

movie_id value 

ответ

0

Вы, вероятно, не может с только Mahout. Вам нужно будет загрузить CSV-файл заголовка фильма с помощью считывателя CSV или импортировать его в базу данных, а также сопоставить идентификаторы фильмов с именами.

+0

Да У меня также есть movie_title.csv, кроме rating.csv. То, о чем я думал, состоит в том, чтобы объединить эти два файла так или иначе в один csv, а затем использовать это как набор данных вместо моего нынешнего набора данных (rating.csv). Это будет работать? Пожалуйста, немного уточните, я пробовал это в первый раз. rating.csv содержит только movie_id, тогда как movie_title.csv отображает movie_id с заголовком. – techvigil

+0

Я недостаточно разбираюсь в API и модели данных Mahout, чтобы узнать, сможет ли он моделировать данные таким образом. Я сомневаюсь в этом, но вполне может ошибаться. Многие из этих систем используют рейтинговую матрицу, и вам нужно самостоятельно искать метаданные элементов. –