Browse Source

Update kb.py

pull/3/head
troyyyyy GitHub 3 years ago
parent
commit
6925860422
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 18 additions and 9 deletions
  1. +18
    -9
      abducer/kb.py

+ 18
- 9
abducer/kb.py View File

@@ -54,10 +54,10 @@ class ClsKB(KBBase):
super().__init__()
self.GKB_flag = GKB_flag
self.pseudo_label_list = pseudo_label_list
self.base = {}
self.len_list = len_list
if GKB_flag:
self.base = {}
X, Y = self.get_GKB(self.pseudo_label_list, self.len_list)
for x, y in zip(X, Y):
self.base.setdefault(len(x), defaultdict(list))[y].append(x)
@@ -82,7 +82,7 @@ class ClsKB(KBBase):
pass

def get_candidates(self, key, length = None):
if(self.base == {}):
if not self.GKB_flag or self.base == {}:
return []
if key is None:
@@ -94,13 +94,22 @@ class ClsKB(KBBase):
return sum([self.base[l][key] for l in length], [])
def get_all_candidates(self):
return sum([sum(v.values(), []) for v in self.base.values()], [])
if not self.GKB_flag or self.base == {}:
return []
else:
return sum([sum(v.values(), []) for v in self.base.values()], [])

def _dict_len(self, dic):
return sum(len(c) for c in dic.values())
if not self.GKB_flag:
return 0
else:
return sum(len(c) for c in dic.values())

def __len__(self):
return sum(self._dict_len(v) for v in self.base.values())
if not self.GKB_flag:
return 0
else:
return sum(self._dict_len(v) for v in self.base.values())


class add_KB(ClsKB):
@@ -123,17 +132,17 @@ class hwf_KB(ClsKB):
super().__init__(GKB_flag, pseudo_label_list, len_list)
def valid_candidate(self, formula):
if(len(formula) % 2 == 0):
if len(formula) % 2 == 0:
return False
for i in range(len(formula)):
if(i % 2 == 0 and formula[i] not in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']):
if i % 2 == 0 and formula[i] not in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
return False
if(i % 2 != 0 and formula[i] not in ['+', '-', '*', '/']):
if i % 2 != 0 and formula[i] not in ['+', '-', '*', '/']:
return False
return True
def logic_forward(self, formula):
if(self.valid_candidate(formula) == False):
if not self.valid_candidate(formula):
return np.inf
try:
return round(eval(''.join(formula)), 2)


Loading…
Cancel
Save