def predict(self, a_rel, a_x): """Method for predicting sense of single relation. Args: a_rel (dict): input relation to classify a_x (np.array): (submodels x class) array of input predictions Returns: str: most probable sense of discourse relation """ ret = np.mean(a_x, axis=0) return (np.argmax(ret), ret) if is_explicit(a_rel): return self.explicit.predict(a_x) return self.implicit.predict(a_x)
def _divide_data(self, a_data): """Separate dataset into explicit and implicit instances. Args: a_data (2-tuple(dict, dict)): list of gold relations and dict with parses Returns: (2-tuple(list, list)): lists of explicit and implicit training instances """ if a_data is None: return ((), ()) explicit_instances = [] implicit_instances = [] for x_i, irel, y_i in a_data: if is_explicit(irel): explicit_instances.append((x_i, y_i)) else: implicit_instances.append((x_i, y_i)) return (explicit_instances, implicit_instances)
def _divide_ds(self, a_ds): """Separate dataset into explicit and implicit instances. Args: a_ds (tuple): list of gold relations and dict with parses Returns: tuple: trainings set with explicit and implicit connectives """ if not a_ds: return (([], {}), ([], {})) explicit_instances = [] implicit_instances = [] for i, irel in enumerate(a_ds[0]): if is_explicit(irel): explicit_instances.append((i, irel)) else: implicit_instances.append((i, irel)) ret = ((explicit_instances, a_ds[1]), (implicit_instances, a_ds[1])) return ret
def predict(self, a_rel, a_data, a_ret, a_i): """Method for predicting sense of single relation. Args: a_rel (dict): discourse relation whose sense should be predicted a_data (2-tuple(dict, dict)): list of input JSON data a_ret (np.array): output prediction vector a_i (int): row index in the output vector Returns: void: Note: modifies ``a_ret[a_i]`` in place """ if is_explicit(a_rel): return self.explicit.predict(a_rel, a_data, a_ret, a_i) return self.implicit.predict(a_rel, a_data, a_ret, a_i)
def test_is_explicit(): assert is_explicit({CONNECTIVE: {TOK_LIST: [1, 2, 3]}}) assert is_explicit({CONNECTIVE: {TOK_LIST: []}}) is False