Beispiel #1
0
 def test_jaccard(self):
     m1 = minhash.MinHash(4, 1)
     m2 = minhash.MinHash(4, 1)
     self.assertTrue(minhash.jaccard([m1, m2]) == 1.0)
     m2.digest(sha1(bytes(12)))
     self.assertTrue(minhash.jaccard([m1, m2]) == 0.0)
     m1.digest(sha1(bytes(13)))
     self.assertTrue(minhash.jaccard([m1, m2]) < 1.0)
Beispiel #2
0
 def test_jaccard(self):
     m1 = minhash.MinHash(4, 1, hashobj=FakeHash)
     m2 = minhash.MinHash(4, 1, hashobj=FakeHash)
     self.assertTrue(m1.jaccard(m2) == 1.0)
     m2.update(12)
     self.assertTrue(m1.jaccard(m2) == 0.0)
     m1.update(13)
     self.assertTrue(m1.jaccard(m2) < 1.0)
Beispiel #3
0
 def test_jaccard(self):
     m1 = minhash.MinHash(4, 1, hashfunc=fake_hash_func)
     m2 = minhash.MinHash(4, 1, hashfunc=fake_hash_func)
     self.assertTrue(m1.jaccard(m2) == 1.0)
     m2.update(12)
     self.assertTrue(m1.jaccard(m2) == 0.0)
     m1.update(13)
     self.assertTrue(m1.jaccard(m2) < 1.0)
Beispiel #4
0
    def test_update_batch(self):
        m1 = minhash.MinHash(4, 1, hashfunc=fake_hash_func)
        m2 = minhash.MinHash(4, 1, hashfunc=fake_hash_func)
        m1.update_batch([12, 24])
        for i in range(4):
            self.assertTrue(m1.hashvalues[i] < m2.hashvalues[i])

        m1 = minhash.MinHash(4, 1, hashfunc=fake_hash_func)
        m1.update(12)
        m1.update(24)
        m2 = minhash.MinHash(4, 1, hashfunc=fake_hash_func)
        m2.update_batch([12, 24])
        self.assertTrue(all(m1.hashvalues == m2.hashvalues))
Beispiel #5
0
    def test_jaccard(self):
        m1 = minhash.MinHash(4, 1, hashobj=FakeHash)
        m2 = minhash.MinHash(4, 1, hashobj=FakeHash)
        bm1 = bBitMinHash(m1)
        bm2 = bBitMinHash(m2)
        self.assertTrue(bm1.jaccard(bm2) == 1.0)

        m2.update(12)
        bm2 = bBitMinHash(m2)
        self.assertTrue(bm1.jaccard(bm2) < 1.0)

        m1.update(13)
        bm1 = bBitMinHash(m1)
        self.assertTrue(bm1.jaccard(bm2) < 1.0)
Beispiel #6
0
 def test_byte_tokens(self):
     m = minhash.MinHash(4, 1)
     m.update(b'Hello')
     self.assertListEqual(
         m.hashvalues.tolist(),
         [734825475, 960773806, 359816889, 342714745],
     )
Beispiel #7
0
 def test_pickle(self):
     m = minhash.MinHash(4, 1)
     m.digest(sha1(bytes(123)))
     m.digest(sha1(bytes(45)))
     p = pickle.loads(pickle.dumps(m))
     self.assertEqual(p.seed, m.seed)
     self.assertEqual(p.hashvalues, m.hashvalues)
     self.assertEqual(p.permutations, m.permutations)
Beispiel #8
0
 def test_bulk(self):
     kwargs = dict(num_perm=4, seed=1, hashfunc=fake_hash_func)
     b = [[n*4 for n in range(4)]]*2
     m1 = minhash.MinHash(**kwargs)
     m1.update_batch(b[0])
     m2, m3 = minhash.MinHash.bulk(b, **kwargs)
     self.assertTrue(np.array_equal(m1.hashvalues, m2.hashvalues))
     self.assertTrue(np.array_equal(m1.hashvalues, m3.hashvalues))
Beispiel #9
0
 def setUp(self):
     self.m = minhash.MinHash(hashobj=FakeHash)
     self.m.update(11)
     self.m.update(123)
     self.m.update(92)
     self.m.update(98)
     self.m.update(123218)
     self.m.update(32)
Beispiel #10
0
 def test_pickle(self):
     m = minhash.MinHash(4, 1, hashobj=FakeHash)
     m.update(123)
     m.update(45)
     p = pickle.loads(pickle.dumps(m))
     self.assertEqual(p.seed, m.seed)
     self.assertTrue(np.array_equal(p.hashvalues, m.hashvalues))
     self.assertTrue(np.array_equal(p.permutations, m.permutations))
Beispiel #11
0
 def setUp(self):
     self.m = minhash.MinHash(hashfunc=fake_hash_func)
     self.m.update(11)
     self.m.update(123)
     self.m.update(92)
     self.m.update(98)
     self.m.update(123218)
     self.m.update(32)
Beispiel #12
0
 def test_count(self):
     m = minhash.MinHash(hashobj=FakeHash)
     m.update(11)
     m.update(123)
     m.update(92)
     m.update(98)
     m.update(123218)
     m.update(32)
     c = m.count()
     self.assertGreaterEqual(c, 0)
Beispiel #13
0
 def test_count(self):
     m = minhash.MinHash(hashfunc=fake_hash_func)
     m.update(11)
     m.update(123)
     m.update(92)
     m.update(98)
     m.update(123218)
     m.update(32)
     c = m.count()
     self.assertGreaterEqual(c, 0)
Beispiel #14
0
    def test_eq(self):
        m1 = minhash.MinHash(4, 1, hashobj=FakeHash)
        m2 = minhash.MinHash(4, 1, hashobj=FakeHash)
        m3 = minhash.MinHash(4, 2, hashobj=FakeHash)
        m4 = minhash.MinHash(8, 1, hashobj=FakeHash)
        m5 = minhash.MinHash(4, 1, hashobj=FakeHash)
        m1.update(11)
        m2.update(12)
        m3.update(11)
        m4.update(11)
        m5.update(11)
        self.assertNotEqual(m1, m2)
        self.assertNotEqual(m1, m3)
        self.assertNotEqual(m1, m4)
        self.assertEqual(m1, m5)

        m1.update(12)
        m2.update(11)
        self.assertEqual(m1, m2)
Beispiel #15
0
 def test_eq(self):
     m1 = minhash.MinHash(4, 1, hashfunc=fake_hash_func)
     m2 = minhash.MinHash(4, 1, hashfunc=fake_hash_func)
     m3 = minhash.MinHash(4, 2, hashfunc=fake_hash_func)
     m4 = minhash.MinHash(8, 1, hashfunc=fake_hash_func)
     m5 = minhash.MinHash(4, 1, hashfunc=fake_hash_func)
     m1.update(11)
     m2.update(12)
     m3.update(11)
     m4.update(11)
     m5.update(11)
     m1 = bBitMinHash(m1)
     m2 = bBitMinHash(m2)
     m3 = bBitMinHash(m3)
     m4 = bBitMinHash(m4)
     m5 = bBitMinHash(m5)
     self.assertNotEqual(m1, m2)
     self.assertNotEqual(m1, m3)
     self.assertNotEqual(m1, m4)
     self.assertEqual(m1, m5)
Beispiel #16
0
 def test_pickle(self):
     for num_perm in [1 << i for i in range(4, 10)]:
         m = minhash.MinHash(num_perm=num_perm, hashobj=FakeHash)
         m.update(11)
         m.update(123)
         m.update(92)
         m.update(98)
         m.update(123218)
         m.update(32)
         for b in [1, 2, 3, 9, 27, 32]:
             bm = bBitMinHash(m, b)
             bm2 = pickle.loads(pickle.dumps(bm))
             self.assertEqual(bm, bm2)
Beispiel #17
0
    def test_deserialize(self):
        m1 = minhash.MinHash(10, 1)
        m1.digest(sha1(bytes(123)))
        buf = bytearray(m1.bytesize())
        m1.serialize(buf)

        # Test if we get back the exact same MinHash objects after
        # deserializing from bytes
        m1d = minhash.MinHash.deserialize(buf)
        self.assertEqual(m1d.seed, m1.seed)
        self.assertEqual(len(m1d.hashvalues), len(m1.hashvalues))
        self.assertTrue(
            all(hvd == hv for hv, hvd in zip(m1.hashvalues, m1d.hashvalues)))

        # Test if the permutation functions are the same
        m1.digest(sha1(bytes(34)))
        m1d.digest(sha1(bytes(34)))
        self.assertTrue(
            all(hvd == hv for hv, hvd in zip(m1.hashvalues, m1d.hashvalues)))
Beispiel #18
0
 def test_union(self):
     m1 = minhash.MinHash(4, 1, hashobj=FakeHash)
     m2 = minhash.MinHash(4, 1, hashobj=FakeHash)
     m2.update(12)
     u = minhash.MinHash.union(m1, m2)
     self.assertTrue(u.jaccard(m2) == 1.0)
Beispiel #19
0
 def test_merge(self):
     m1 = minhash.MinHash(4, 1, hashobj=FakeHash)
     m2 = minhash.MinHash(4, 1, hashobj=FakeHash)
     m2.update(12)
     m1.merge(m2)
     self.assertTrue(m1.jaccard(m2) == 1.0)
Beispiel #20
0
 def test_digest(self):
     m1 = minhash.MinHash(4, 1)
     m2 = minhash.MinHash(4, 1)
     m1.digest(sha1(bytes(12)))
     for i in range(4):
         self.assertTrue(m1.hashvalues[i] < m2.hashvalues[i])
Beispiel #21
0
 def test_update(self):
     m1 = minhash.MinHash(4, 1, hashobj=FakeHash)
     m2 = minhash.MinHash(4, 1, hashobj=FakeHash)
     m1.update(12)
     for i in range(4):
         self.assertTrue(m1.hashvalues[i] < m2.hashvalues[i])
Beispiel #22
0
 def test_is_empty(self):
     m = minhash.MinHash()
     self.assertTrue(m.is_empty())
Beispiel #23
0
 def test_init(self):
     m1 = minhash.MinHash(4, 1, hashobj=FakeHash)
     m2 = minhash.MinHash(4, 1, hashobj=FakeHash)
     self.assertTrue(np.array_equal(m1.hashvalues, m2.hashvalues))
     self.assertTrue(np.array_equal(m1.permutations, m2.permutations))
Beispiel #24
0
 def test_update(self):
     m1 = minhash.MinHash(4, 1, hashfunc=fake_hash_func)
     m2 = minhash.MinHash(4, 1, hashfunc=fake_hash_func)
     m1.update(12)
     for i in range(4):
         self.assertTrue(m1.hashvalues[i] < m2.hashvalues[i])
 def test_serialize(self):
     m1 = minhash.MinHash(2, 1, hashobj=FakeHash)
     buf = bytearray(m1.bytesize())
     # Only test for syntax
     m1.serialize(buf)
 def test_bytesize(self):
     m1 = minhash.MinHash(4, 1, hashobj=FakeHash)
     self.assertTrue(m1.bytesize() == (4 * 4) + 4 + 8)
Beispiel #27
0
 def test_union(self):
     m1 = minhash.MinHash(4, 1, hashfunc=fake_hash_func)
     m2 = minhash.MinHash(4, 1, hashfunc=fake_hash_func)
     m2.update(12)
     u = minhash.MinHash.union(m1, m2)
     self.assertTrue(u.jaccard(m2) == 1.0)
Beispiel #28
0
 def test_init(self):
     m1 = minhash.MinHash(4, 1)
     m2 = minhash.MinHash(4, 1)
     for i in range(4):
         self.assertEqual(m1.hashvalues[i], m2.hashvalues[i])
         self.assertEqual((m1.permutations[i]), (m2.permutations[i]))
Beispiel #29
0
 def test_merge(self):
     m1 = minhash.MinHash(4, 1)
     m2 = minhash.MinHash(4, 1)
     m2.digest(sha1(bytes(12)))
     m1.merge(m2)
     self.assertTrue(minhash.jaccard([m1, m2]) == 1.0)
Beispiel #30
0
 def test_init(self):
     m1 = minhash.MinHash(4, 1, hashfunc=fake_hash_func)
     m2 = minhash.MinHash(4, 1, hashfunc=fake_hash_func)
     self.assertTrue(np.array_equal(m1.hashvalues, m2.hashvalues))
     self.assertTrue(np.array_equal(m1.permutations, m2.permutations))