From 8511d618baf59563d3d55ade88c4d34a7795d367 Mon Sep 17 00:00:00 2001 From: troyyyyy Date: Thu, 16 Mar 2023 09:12:35 +0800 Subject: [PATCH] Update abducer examples --- abl/abducer/abducer_base.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/abl/abducer/abducer_base.py b/abl/abducer/abducer_base.py index d5bff1e..f24c60d 100644 --- a/abl/abducer/abducer_base.py +++ b/abl/abducer/abducer_base.py @@ -10,10 +10,13 @@ # # ================================================================# +import sys +sys.path.append('/home/huwc/ABL-Package/abl') + import abc import numpy as np from zoopt import Dimension, Objective, Parameter, Opt -from ..utils.utils import confidence_dist, flatten, reform_idx, hamming_dist +from utils.utils import confidence_dist, flatten, reform_idx, hamming_dist class AbducerBase(abc.ABC): def __init__(self, kb, dist_func='hamming', zoopt=False): @@ -302,21 +305,28 @@ if __name__ == '__main__': kb = HED_prolog_KB(pseudo_label_list=[1, 0, '+', '='], pl_file='../examples/datasets/hed/learn_add.pl') abd = HED_Abducer(kb) consist_exs = [[1, 1, '+', 0, '=', 1, 1], [1, '+', 1, '=', 1, 0], [0, '+', 0, '=', 0]] - inconsist_exs = [[1, '+', 0, '=', 0], [1, '=', 1, '=', 0], [0, '=', 0, '=', 1, 1]] + inconsist_exs1 = [[1, 1, '+', 0, '=', 1, 1], [1, '+', 1, '=', 1, 0], [0, '+', 0, '=', 0], [0, '+', 0, '=', 1]] + inconsist_exs2 = [[1, '+', 0, '=', 0], [1, '=', 1, '=', 0], [0, '=', 0, '=', 1, 1]] rules = ['my_op([0], [0], [0])', 'my_op([1], [1], [1, 0])'] + print('HED_kb logic forward') print(kb.logic_forward(consist_exs)) - print(kb.logic_forward(inconsist_exs)) + print(kb.logic_forward(inconsist_exs1), kb.logic_forward(inconsist_exs2)) print() + print('HED_kb consist rule') print(kb.consist_rule([1, '+', 1, '=', 1, 0], rules)) print(kb.consist_rule([1, '+', 1, '=', 1, 1], rules)) print() + print('HED_Abducer abduce') res = abd.abduce((consist_exs, [[[None]]] * len(consist_exs), [None] * len(consist_exs))) print(res) - res = abd.abduce((inconsist_exs, [[[None]]] * len(consist_exs), [None] * len(inconsist_exs))) + res = abd.abduce((inconsist_exs1, [[[None]]] * len(inconsist_exs1), [None] * len(inconsist_exs1))) + print(res) + res = abd.abduce((inconsist_exs2, [[[None]]] * len(inconsist_exs2), [None] * len(inconsist_exs2))) print(res) print() + print('HED_Abducer abduce rules') abduced_rules = abd.abduce_rules(consist_exs) print(abduced_rules) \ No newline at end of file