def syntactic_parse(pos_list, grammar): parser = ViterbiParser(grammar) try: grammar.check_coverage(pos_list) except ValueError: return None for tree in parser.parse(pos_list): return tree
sentences = set() mod = 0 for eq in fin: eq = eq.split("\t")[2] eq = eq.lower() eq = filter(lambda ch: ch in "()1234567890+-*/.;=x", eq) proc = "" for i in eq: proc += i past = False for sin in proc.split(";"): mod += 1 if mod % 100 == 0: if parser.parse(sin): reqReq = requests.post(url + "request/" + str(agentID) + "/", json={ "state": { "equation": { "id": "eqn", "value": sin, "contentEditable": True }, }, }) print("test input:", sin) print("test output:", reqReq.json()) if past: if parser.parse(past) and parser.parse(sin):
proc += i for sin in proc.split(";"): print(sin) sentences.add(sin) sents = [[c for c in s] for s in sentences] prob_inducer = pCFG_Grammar() prob_inducer.grammar = grammar parser = ViterbiParser(grammar) test = '(5-9x)-5+18=-2/7x' #test = '5+18=2/7x' for i in parser.parse([i for i in test]): print(i) print("INDUCING WEIGHTS:") prob_inducer.induce_weights(sentences) grammar = prob_inducer.grammar print("GRAMMAR:") print(grammar) total = 0 gotten = 0 parser = ViterbiParser(grammar)
def tree_features(tree, path): ret = [] node_str = "" for l in tree.leaves(): node_str += l ret.append((('tree-label', path), tree.label())) ret.append((('value', path), node_str)) print(len(tree)) if len(tree) < 2: return ret left_rt = tree_features(tree[0], ('left-tree', path)) right_rt = tree_features(tree[1], ('right-tree', path)) return ret + left_rt + right_rt if __name__ == "__main__": print(grammar) parser = ViterbiParser(grammar) sent = [c for c in "-7/2"] print(sent) for tree in parser.parse(sent): print(tree) print(tree_features(tree, 'some attribute'))