public LongSet getAllItems() { if (allItems == null) { synchronized (this) { if (allItems == null) { allItems = LongUtils.packedSet(trainData.get().getEntityIds(CommonTypes.ITEM)); } } } return allItems; }
@Test public void testRandomSubsetPickNone() { LongSortedArraySet singleton = LongUtils.packedSet(42); LongSortedSet sample = singleton.randomSubset(new Random(), 0); assertThat(sample, hasSize(0)); }
@Test public void testRandomSubsetEmpty() { LongSortedArraySet empty = LongUtils.packedSet(); LongSortedSet sample = empty.randomSubset(new Random(), 10); assertThat(sample, hasSize(0)); }
@Test public void testUnionSizeSame() { LongSortedSet set = packedSet(5, 3, 27); assertThat(unionSize(set, set), equalTo(3)); }
@Test public void testScoreSet() { ItemScorer pred = new ConstantItemScorer(5); Map<Long, Double> v = pred.score(42, LongUtils.packedSet(1, 2, 3, 5, 7)); assertThat(v.keySet(), contains(1L, 2L, 3L, 5L, 7L)); assertThat(v.values(), everyItem(equalTo(5.0))); }
@Test public void testRandomSubsetPick() { LongSortedArraySet singleton = LongUtils.packedSet(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); Random rng = new Random(); for (int i = 0; i < 50; i++) { LongSortedSet sample = singleton.randomSubset(rng, 5); assertThat(sample, hasSize(5)); assertThat(sample, everyItem(allOf(greaterThan(0L), lessThan(11L)))); } }
@Test public void testRandomSubsetPickExclude() { LongSortedArraySet singleton = LongUtils.packedSet(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); Random rng = new Random(); for (int i = 0; i < 50; i++) { LongSortedSet sample = singleton.randomSubset(rng, 5, LongSets.singleton(7L)); assertThat(sample, hasSize(5)); assertThat(sample, everyItem(allOf(greaterThan(0L), lessThan(11L)))); assertThat(sample, not(hasItem(7L))); } }
@Test public void testSetUnionDistinctEqual() { LongSortedSet s1 = packedSet(5, 3, 27); LongSortedSet s2 = new LongAVLTreeSet(s1); assertThat(setUnion(s1, s2), contains(3L, 5L, 27L)); }
@Test public void testLowerBound() { LongIterator iter = new AdaptiveSparseItemIterator(context, LongUtils.packedSet(42, 39), 5); LongList items = LongIterators.pour(iter); assertThat(items, hasSize(3)); assertThat(items, containsInAnyOrder(9L, 7L, 13L)); }
@Test public void testAdaptive() { LongIterator iter = new AdaptiveSparseItemIterator(context, LongUtils.packedSet(12, 42)); LongList items = LongIterators.pour(iter); // since 12 has too many items, it will use all items instead of 42's items assertThat(items, hasSize(context.getItems().size())); assertThat(LongUtils.packedSet(items), equalTo(context.getItems())); } }
@Before public void createContext() { LongSortedSet universe = LongUtils.packedSet(1, 2, 5, 7, 9, 13, 14, 17, 68, 32, 97); Long2ObjectMap<LongSortedSet> userItems = new Long2ObjectOpenHashMap<>(); userItems.put(42, LongUtils.packedSet(2, 5, 9)); userItems.put(39, LongUtils.packedSet(2, 7, 9, 13)); userItems.put(12, universe.subSet(2, 97)); context = new ItemItemBuildContext(SortedKeyIndex.fromCollection(universe), new Long2DoubleSortedMap[universe.size()], userItems); }
@Test public void testTwoUserSet() { LongIterator iter = new AdaptiveSparseItemIterator(context, LongUtils.packedSet(42, 39)); LongList items = LongIterators.pour(iter); assertThat(items, hasSize(5)); assertThat(items, containsInAnyOrder(2L, 5L, 9L, 7L, 13L)); }
@Test public void testCachedScores() { Long user = 3L; LongSortedSet items = LongUtils.packedSet(1, 2); cachedScorer.score(user, items); assertThat(cachedScorer.getCache().keySet(), equalTo((Set) items)); cachedScorer.score(user, 4); assertThat(cachedScorer.getCache().keySet(), equalTo((Set) LongUtils.packedSet(1, 2, 4))); } }
@Test public void testScoreItems() { ResultMap results = recommender.scoreWithDetails(42, LongUtils.packedSet(1, 2, 3)); assertThat(results.size(), equalTo(3)); assertThat(results.getScore(1), equalTo(1.0)); assertThat(results.getScore(2), equalTo(0.5)); assertThat(results.getScore(3), equalTo(0.0)); } }
@Test public void testBulkUnclampedPredict() { Map<Long,Double> scores = unclamped.predict(40, LongUtils.packedSet(1, 2, 3, 4)); assertThat(scores.size(), equalTo(3)); assertThat(scores, hasEntry(1L, 4.0)); assertThat(scores, hasEntry(2L, 5.5)); assertThat(scores, hasEntry(3L, -1.0)); }
@Test public void testBulkPredict() { Map<Long,Double> scores = pred.predict(40, LongUtils.packedSet(1, 2, 3, 4)); assertThat(scores.size(), equalTo(3)); assertThat(scores, hasEntry(1L, 4.0)); assertThat(scores, hasEntry(2L, 5.0)); assertThat(scores, hasEntry(3L, 1.0)); }
@Test public void testUniverse() { LongSet items = LongUtils.packedSet(42, 37, 39, 102); ItemSelector selector = ItemSelector.compileSelector("allItems"); LongSet selected = selector.selectItems(items, null, TestUser.newBuilder().setUserId(42).build()); assertThat(selected, equalTo(items)); }
@Test public void testExpression() { LongSet items = LongUtils.packedSet(42, 37, 39, 102); TestUser user = TestUser.newBuilder() .setUserId(42) .addTestRating(1, 3.5) .addTestRating(39, 4.2) .build(); ItemSelector selector = ItemSelector.compileSelector("allItems - user.testItems"); LongSet selected = selector.selectItems(items, null, user); assertThat(selected, containsInAnyOrder(42L, 37L, 102L)); }