Exemple #1
0
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
Exemple #2
0
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