Skip to content
Snippets Groups Projects
alignment.py 1.29 KiB
Newer Older
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 + ' ')