Skip to content
Snippets Groups Projects
alignment.py 1.29 KiB
Newer Older
  • Learn to ignore specific revisions
  • Benoit Favre's avatar
    Benoit Favre committed
    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 + ' ')