@Override public Collection<RatingMatrixEntry> getUserRatings(long userId) { int uidx = userIndex().tryGetIndex(userId); List<Collection<RatingMatrixEntry>> userLists = userIndexLists.get(); if (uidx < 0 || uidx >= userLists.size()) { return Collections.emptyList(); } else { return userLists.get(uidx); } }
@Nullable public RealVector getItemVector(long item) { int iidx = itemIndex.tryGetIndex(item); if (iidx < 0) { return null; } else { return Vectors.matrixRow(itemMatrix, iidx); } }
@Nullable public RealVector getUserVector(long user) { int uidx = userIndex.tryGetIndex(user); if (uidx < 0) { return null; } else { return Vectors.matrixRow(userMatrix, uidx); } }
/** * Get a particular feature value for an user. * @param uid The item ID. * @param feature The feature. * @return The user-feature value, or 0 if the user was not in the training set. */ public double getUserFeature(long uid, int feature) { int uidx = userIndex.tryGetIndex(uid); if (uidx < 0) { return 0; } else { return userMatrix.getEntry(uidx, feature); } }
/** * Get a particular feature value for an item. * @param iid The item ID. * @param feature The feature. * @return The item-feature value, or 0 if the item was not in the training set. */ public double getItemFeature(long iid, int feature) { int iidx = itemIndex.tryGetIndex(iid); if (iidx < 0) { return 0; } else { return itemMatrix.getEntry(iidx, feature); } }
@Test public void testEmpty() { KeyIndex empty = new FrozenHashKeyIndex(LongLists.EMPTY_LIST); assertThat(empty.getKeyList(), hasSize(0)); assertThat(empty.containsKey(30), equalTo(false)); assertThat(empty.tryGetIndex(30), equalTo(-1)); try { empty.getIndex(30); fail("getting absent index should fail"); } catch (IllegalArgumentException ex) { /* expected */ } }
@Test public void testSingleton() { KeyIndex idx = new FrozenHashKeyIndex(LongLists.singleton(42)); assertThat(idx.getKeyList(), hasSize(1)); assertThat(idx.getKeyList(), contains(42L)); assertThat(idx.containsKey(30), equalTo(false)); assertThat(idx.containsKey(42), equalTo(true)); assertThat(idx.tryGetIndex(30), equalTo(-1)); assertThat(idx.tryGetIndex(42), equalTo(0)); assertThat(idx.getIndex(42), equalTo(0)); assertThat(idx.getKey(0), equalTo(42L)); try { idx.getIndex(30); fail("getting absent index should fail"); } catch (IllegalArgumentException ex) { /* expected */ } }
long userId = re.getUserId(); long itemId = re.getItemId(); assertThat(user, equalTo(userIndex.tryGetIndex(userId))); assertThat(item, equalTo(itemIndex.tryGetIndex(itemId))); long userId = userIndex.getKey(user); long itemId = itemIndex.getKey(item); assertThat(user, equalTo(snapshotUserIndex.tryGetIndex(userId))); assertThat(item, equalTo(snapshotItemIndex.tryGetIndex(itemId)));
@Override public Collection<RatingMatrixEntry> getUserRatings(long userId) { int uidx = userIndex().tryGetIndex(userId); List<Collection<RatingMatrixEntry>> userLists = userIndexLists.get(); if (uidx < 0 || uidx >= userLists.size()) { return Collections.emptyList(); } else { return userLists.get(uidx); } }
@Nullable public RealVector getUserVector(long user) { int uidx = userIndex.tryGetIndex(user); if (uidx < 0) { return null; } else { return Vectors.matrixRow(userMatrix, uidx); } }
@Nullable public RealVector getItemVector(long item) { int iidx = itemIndex.tryGetIndex(item); if (iidx < 0) { return null; } else { return Vectors.matrixRow(itemMatrix, iidx); } }
/** * Get a particular feature value for an user. * @param uid The item ID. * @param feature The feature. * @return The user-feature value, or 0 if the user was not in the training set. */ public double getUserFeature(long uid, int feature) { int uidx = userIndex.tryGetIndex(uid); if (uidx < 0) { return 0; } else { return userMatrix.getEntry(uidx, feature); } }
/** * Get a particular feature value for an item. * @param iid The item ID. * @param feature The feature. * @return The item-feature value, or 0 if the item was not in the training set. */ public double getItemFeature(long iid, int feature) { int iidx = itemIndex.tryGetIndex(iid); if (iidx < 0) { return 0; } else { return itemMatrix.getEntry(iidx, feature); } }