def do_unification((mt_str_query, mt_str_dt)): mt_xml_query = etree.fromstring(mt_str_query) m_repr = get_math_repr(mt_str_dt) mt_xml_dt = etree.fromstring(m_repr) mt_xml_b = extract_mathmlcontent_from_dataset(mt_xml_dt) if mt_xml_b is None: return mt_str_dt, False mt_xml_b.tag = "semantics" u = Unification() # print etree.tostring(mt_xml_query) # print etree.tostring(mt_xml_b) matchlevel, isunify = u.align(mt_str_query, etree.tostring(mt_xml_b)) return mt_str_dt, isunify
def __unify(self, mt_xml_query, mt_xml_result): ann_xml_query = self.__extract_mathmlcontent(mt_xml_query) ann_xml_query.tag = "semantics" mt_str_query = etree.tostring(ann_xml_query) ann_xml_res = self.__extract_mathmlcontent(mt_xml_result) if ann_xml_res is None: return False ann_xml_res.tag = "semantics" mt_str_res = etree.tostring(ann_xml_res) u = Unification() matchlevel, isunify = u.align(mt_str_query, mt_str_res) return isunify
ann_p = ann.getparent() ann_p.remove(ann) for sem in f.xpath(".//*[local-name() = 'semantics']"): queries[qid].append(sem) #play th judgment pool pool_address = "NTCIR11_Math-qrels.dat" for ln in open(pool_address).readlines(): cells = ln.strip().split() qid = cells[0] qid = qid[qid.rindex("-") + 1:] pid = cells[2] rel = int(cells[3]) mathml_flname = "%s_%s" % (qid, pid) mathml_address = path.join("dataset_small", mathml_flname) for math_ln in open(mathml_address).readlines(): mathcells = math_ln.strip().split("\t") mathstring = "\t".join(mathcells[3:]) mt_xml_b = etree.fromstring(mathstring) for mt_xml_a in queries[qid]: u = Unification() isunify = u.align(mt_xml_a, mt_xml_b) print isunify break break
ann_p.remove(ann) for sem in f.xpath(".//*[local-name() = 'semantics']"): queries[qid].append(sem) #play th judgment pool pool_address = "NTCIR11_Math-qrels.dat" for ln in open(pool_address).readlines(): cells = ln.strip().split() qid = cells[0] qid = qid[qid.rindex("-")+1:] pid = cells[2] rel = int(cells[3]) mathml_flname = "%s_%s" % (qid, pid) mathml_address= path.join("dataset_small", mathml_flname) for math_ln in open(mathml_address).readlines(): mathcells = math_ln.strip().split("\t") mathstring= "\t".join(mathcells[3:]) mt_xml_b = etree.fromstring(mathstring) for mt_xml_a in queries[qid]: u = Unification() isunify = u.align(mt_xml_a, mt_xml_b) print isunify break break
<ci>normal-[</ci> <csymbol>X</csymbol> <geq/> <csymbol>t</csymbol> <ci>normal-]</ci> </cerror> <leq /> <apply> <divide/> <apply > <times/> <ci>E</ci> <qvar name="X"/> </apply> <qvar name="t"/> </apply> </cerror> </semantics> """ u = Unification() #test alignments mt_xml_a = etree.fromstring(s1) mt_xml_b = etree.fromstring(s2) alignments = u.align(mt_xml_a, mt_xml_b) print alignments #for k, v in alignments.iteritems(): # print etree.tostring(k) # print [etree.tostring(val) for val in v]
<ci>normal-[</ci> <csymbol>X</csymbol> <geq/> <csymbol>t</csymbol> <ci>normal-]</ci> </cerror> <leq /> <apply> <divide/> <apply > <times/> <ci>E</ci> <qvar name="X"/> </apply> <qvar name="t"/> </apply> </cerror> </semantics> """ u = Unification() # test alignments mt_xml_a = etree.fromstring(s1) mt_xml_b = etree.fromstring(s2) alignments = u.align(mt_xml_a, mt_xml_b) print alignments # for k, v in alignments.iteritems(): # print etree.tostring(k) # print [etree.tostring(val) for val in v]