from gi.repository import GObject, Gtk import levenstein class Alignment: def __init__(self, ref): self.ref = ref.split() self.view = Gtk.TextView() self.view.set_editable(False) self.view.set_cursor_visible(False) self.buffer = self.view.get_buffer() self.buffer.set_text('Section\n' + ref) self.subst = self.buffer.create_tag("orange_bg", background="orange") self.ok_word = self.buffer.create_tag("green_bg", background="green") def get_view(self): return self.view def align(self, hyp): num_errors, num_ref, alignment, score = levenstein.align(self.ref, hyp) text = self.buffer text.set_text('Section\n') levenstein.print_alignment(alignment) #text.remove_all_tags() for (ref_word, hyp_word) in alignment: if ref_word != None: i = text.get_end_iter() if hyp_word != None: if ref_word == hyp_word: text.insert_with_tags(i, ref_word, self.ok_word) else: text.insert_with_tags(i, ref_word, self.subst) text.insert(text.get_end_iter(), ' ') else: text.insert(text.get_end_iter(), ref_word + ' ')