Esempio n. 1
0
def _set_align(rsc_src, entries):  # pylint: disable=invalid-name
    """
    음절과 형태소 분석 결과를 정렬한다.
    Args:
        rsc_src:  (Aligner, restore dic, vocab out) resource triple
        Word:  Word 타입
        entries:  엔트리 리스트
    """
    bad_entries = []
    for entry in entries:
        if entry.is_sharp:
            continue
        entry.left_align = align_patch(rsc_src, entry.raw,
                                       Morph.to_str(entry.left))
        if not entry.left_align:
            entry.err_msg = 'fail to align left'
            bad_entries.append(entry)
            continue
        entry.right_align = align_patch(rsc_src, entry.raw,
                                        Morph.to_str(entry.right))
        if not entry.right_align:
            entry.err_msg = 'fail to align right'
            bad_entries.append(entry)
            continue
        assert len(entry.left_align) == len(entry.right_align)
    print_errors(bad_entries)
Esempio n. 2
0
 def __str__(self):
     file_num = '{}:{}: '.format(self.file_name, self.line_num) if self.file_name else ''
     line = '# {}'.format(self.line) if self.is_sharp else self.line
     if self.err_msg:
         return '{}{}: "{}"'.format(file_num, self.err_msg, line)
     if self.is_sharp:
         return '{}: "{}"'.format(file_num, line)
     return '{}\t{}\t{}'.format(self.raw, Morph.to_str(self.left), Morph.to_str(self.right))
Esempio n. 3
0
 def key_str(self):
     """
     패치의 중복 검사를 하기 위해 원문과 left를 이용하여 키를 생성
     Returns:
         중복 생성 검사를 위한 키
     """
     return '{}\t{}'.format(self.raw, Morph.to_str(self.left))
Esempio n. 4
0
 def __str__(self):
     file_num = '{}:{}: '.format(self.file_name, self.line_num) if self.file_name else ''
     line = '# {}'.format(self.line) if self.is_sharp else self.line
     if self.err_msg:
         return '{}{}: "{}"'.format(file_num, self.err_msg, line)
     elif self.is_sharp:
         return '{}: "{}"'.format(file_num, line)
     return '{}{}\t{}'.format(self.word, '*' if self.is_pfx else '', Morph.to_str(self.morphs))
Esempio n. 5
0
def _set_align(aligner, Word, entries):    # pylint: disable=invalid-name
    """
    음절과 형태소 분석 결과를 정렬한다.
    Args:
        aligner:  Aligner 객체
        Word:  Word 타입
        entries:  엔트리 리스트
    """
    bad_entries = []
    for entry in entries:
        if entry.is_sharp:
            continue
        word = Word.parse('\t'.join(['', entry.word, Morph.to_str(entry.morphs)]), '', 0)
        try:
            entry.align = aligner.align(word)
        except AlignError as map_exc:
            entry.err_msg = 'fail to align'
            logging.error(map_exc)
            bad_entries.append(entry)
    print_errors(bad_entries)