def grade_sent(assignment): conn = psycopg2.connect("dbname='"+settings["esl_dbname"]+"' user='******' host='"+settings["host"]+"'") cur = conn.cursor() log = codecs.open("apprej.log", mode='a', encoding='utf-8', errors='ignore') total = errcount(assignment) ref = getoracle(assignment) candidate = getturker(assignment) if(candidate == {}): sent = get_raw_sents(assignment) s = sent[sent.keys()[0]] try: log.write(s+"\n") except: pass add_sent_to_db(s, assignment) return 0, total totalpts = 0 rawsents = get_raw_sents(assignment) #build sentence data structure to track edits # print candidate, rawsents for sent in rawsents: sentence = rawsents[sent] log.write(str(datetime.datetime.now().strftime("%Y-%m-%d_%H:%M"))+" "+str(assignment)+" "+sentence.decode('utf-8')+'\n') s = edit_graph.initialize_sentence(sentence) if(not(sent in candidate)): sent = get_raw_sents(assignment) s = sent[sent.keys()[0]] try: log.write(s+"\n") except: pass add_sent_to_db(s, assignment) return 0, total errors = sorted(candidate[sent], key = lambda e : e.seq_id) for e in errors: s.revise(e) add_sent_to_db(s.plain_str(), assignment) try: log.write(s.plain_str().decode('utf-8')+"\n") except: pass #s.print_ultimate() for e in ref[sent]: pts = correctionpoints(e, s, log=log) totalpts += pts return totalpts, total
def getrevsforcontrols(data): sents = [] for hit in data: print "Graphing control for HIT", hit for sent in data[hit]: s = None i = 0 for err in data[hit][sent]: if(not(s)): s = edit_graph.initialize_sentence(err[' sentence']) e = extract_data.Edit() e.seq_id = i e.sp_start = int(err[' err_idx']) e.ep_end = int(err[' err_idx']) + 1 e.old_wd = err[' oldwd'] e.new_wd = err[' newwd'] e.mode = err[' mode'] s.revise(e) i += 1 sents.append(s) return sents