def __init__(self, answer, i): Feature.set_type(self, clas + rel) Feature.set_name(self, 'Subject match') sentence = answer.sources[i].sentence.split(':')[-1] q = answer.q.root_verb[0] qsubj = get_subj(q) ssubj = get_subj(list(nlp(sentence).sents)[0].root) if qsubj is None or ssubj is None: Feature.set_value(self, 0.) return info = 'Qsubject=%s, Ssubject=%s' % (qsubj.text, ssubj.text) Feature.set_info(self, info) if qsubj.lower_ in ssubj.lower_ or ssubj.lower_ in qsubj.lower_: Feature.set_value(self, 1.) else: Feature.set_value(self, 0.)
def __init__(self, answer, i): Feature.set_type(self, clas) Feature.set_name(self, 'Match score') sentence = answer.sources[i].sentence regex = re.match('.*?(\d+)[-](\d+).*', sentence) # (\d+)\W(\d+) only for multiple scores detection if regex: s1 = regex.group(1) s2 = regex.group(2) sentence_kw = extract_from_string(sentence) q = answer.q.root_verb[0] qsubj = get_subj(q) if qsubj is None: Feature.set_info(self, 'no q subj') Feature.set_value(self, 0.) return qsubj = qsubj.text result = 1 if int(s1) <= int(s2): result = -1 try: hs = load(sentence, sentence_kw, s1 + '-' + s2) score = patterns_string(sentence, qsubj, s1 + '-' + s2, answer.q.searchwords) if score == 0: score = float(patterns(hs, qsubj)) Feature.set_value(self, score * result) Feature.set_info(self, s1 + '-' + s2) except Exception: Feature.set_value(self, 0.) else: Feature.set_value(self, 0.)
def __init__(self, answer, i): Feature.set_type(self, clas) Feature.set_name(self, 'Match score') sentence = answer.sources[i].sentence regex = re.match( '.*?(\d+)[-](\d+).*', sentence) # (\d+)\W(\d+) only for multiple scores detection if regex: s1 = regex.group(1) s2 = regex.group(2) sentence_kw = extract_from_string(sentence) q = answer.q.root_verb[0] qsubj = get_subj(q) if qsubj is None: Feature.set_info(self, 'no q subj') Feature.set_value(self, 0.) return qsubj = qsubj.text result = 1 if int(s1) <= int(s2): result = -1 try: hs = load(sentence, sentence_kw, s1 + '-' + s2) score = patterns_string(sentence, qsubj, s1 + '-' + s2, answer.q.searchwords) if score == 0: score = float(patterns(hs, qsubj)) Feature.set_value(self, score * result) Feature.set_info(self, s1 + '-' + s2) except Exception: Feature.set_value(self, 0.) else: Feature.set_value(self, 0.)