class FileHolder: import numpy as np from assoc_space import LabelSet, AssocSpace, SparseEntryStorage from conceptnet5.query import field_match, AssertionFinder NPZ = '/Users/Kristen/.conceptnet5/assoc/5.4.npz' DB_DIR = '/Users/Kristen/.conceptnet5/data/db/assertions.db' EDGE_DIR = '/Users/Kristen/.conceptnet5/data/assertions' FINDER = AssertionFinder(DB_DIR,EDGE_DIR) def __init__(self, npz='/Users/Kristen/.conceptnet5/assoc/5.4.npz'): self.npz = npz self.npz_dict = np.load(self.npz) self.u = self.npz_dict['u'] self._assoc = self.npz_dict['assoc'] self.assertion = self.npz_dict['assertion'] self.sigma = self.npz_dict['sigma'] self.labels_list = self.npz_dict['labels'].tolist() self.Labels = None self.load_label_set() self._cache = {} self.lookup = FINDER.lookup self.query = FINDER.query self.grouped = FINDER.lookup_grouped_by_feature self.terms = [] self.other = [] def load_label_set(self): self.Labels = LabelSet() for label in self.labels_list: self.Labels.add(label) return self.Labels.copy() def get_finder(self): return AssertionFinder('/Users/Kristen/.conceptnet5/data/db/assertions.db', '/Users/Kristen/.conceptnet5/data/assertions') def get_AssocSpace(self): return AssocSpace(self.u, self.sigma, LabelSet(self.labels.tolist())) @property def assoc_wrapper(self): return AssocSpaceWrapper(self.assoc_space, self.finder) @property def label_set(self): return LabelSet(self.labels.tolist())
def test_assoc_constructor(): # Make a nice, normal AssocSpace u = np.asarray([[0, 1, 0.6], [1, 0, 0.8]]) sigma = np.asarray([0.5, 0.3, 0.2]) labels = LabelSet(['A', 'B']) assoc = AssocSpace(u, sigma, labels) eq_(assoc.k, 3) assert 'assoc' not in assoc.__dict__ # Test some error conditions with assert_raises(ValueError): AssocSpace(u, np.asarray([0.0, -0.2, -0.4]), labels) with assert_raises(ValueError): AssocSpace(u, np.asarray([0.6, 0.4]), labels) with assert_raises(ValueError): AssocSpace(u, np.asarray([0.6, 0.7, 0.2]), labels) # Test assoc hinting assoc_matrix = assoc.assoc.copy() assoc_hinted = AssocSpace(u, sigma, labels, assoc=assoc_matrix) assert np.allclose(assoc_hinted.row_named('A'), assoc.row_named('A'))
def load_label_set(self): self.Labels = LabelSet() for label in self.labels_list: self.Labels.add(label) return self.Labels.copy()
def test_label_set(): # Creating a LabelSet from an existing list s = LabelSet(['a', 'b', 'e']) # add() s.add('d') s.add('c') s.add('d') eq_(len(s), 5) eq_(s[3], 'd') eq_(s[4], 'c') # index, __contains__, __getitem__, __iter__ eq_(s.index('b'), 1) assert_raises(KeyError, s.index, 'f') assert 'b' in s assert 'q' not in s eq_(s[2], 'e') with assert_raises(IndexError): s[6] eq_(list(s), ['a', 'b', 'e', 'd', 'c']) # Copying generates a distinct LabelSet; __eq__ works s_copy = s.copy() eq_(s, s_copy) s_copy.add('f') eq_(len(s.items), 5) eq_(len(s.indices), 5) # merged s1 = LabelSet(['f', 'b', 'g', 'c']) merged, indices = s.merge(s1) eq_(len(s), 5) eq_(merged, LabelSet(['a', 'b', 'e', 'd', 'c', 'f', 'g'])) eq_(indices, [5, 1, 6, 4])