def _parse(self): """ 오분석 패치 한 라인을 파싱한다. """ if len(self.line) >= 2 and self.line.startswith('# '): self.is_sharp = True self.line = self.line[2:] cols = self.line.split('\t') if len(cols) != 3: if not self.is_sharp: self.err_msg = '[PARSE] number of columns must be 3, not {}'.format( len(cols)) return self.raw, left_str, right_str = cols if not self.raw: self.err_msg = '[PARSE] no raw string' return try: self.left = Morph.parse(left_str) except ParseError as par_err: self.err_msg = '[PARSE] {}'.format(par_err) try: self.right = Morph.parse(right_str) except ParseError as par_err: self.err_msg = '[PARSE] {}'.format(par_err)
def _parse(self): """ 기분석 사전 한 라인을 파싱한다. """ if len(self.line) >= 2 and self.line.startswith('# '): self.is_sharp = True self.line = self.line[2:] cols = self.line.split('\t') if len(cols) != 2: if not self.is_sharp: self.err_msg = '[PARSE] number of columns must be 2, not {}'.format(len(cols)) return self.word, morph_str = [c.strip() for c in cols] if not self.word: self.err_msg = '[PARSE] no word' return if len(self.word) > 2 and self.word[-1] == '*': self.is_pfx = True self.word = self.word[:-1].strip() elif ' ' in self.word: self.err_msg = '[PARSE] space in word' return try: self.morphs = Morph.parse(morph_str) except ParseError as par_err: self.err_msg = '[PARSE] {}'.format(par_err)