Пример #1
0
    def translate(self,
                  text: str,
                  mark_unknown: bool = False,
                  formatting: Optional[str] = None,
                  deformat: str = 'txt',
                  reformat: str = 'txt') -> str:
        """
        Args:
            text (str)
            mark_unknown (bool)
            formatting (Optional[str])
            deformat (str)
            reformat (str)

        Returns:
            str
        """
        if '{}-{}'.format(
                *map(to_alpha3_code, [self.l1, self.l2])) in apertium.pairs:
            pair = map(to_alpha3_code, [self.l1, self.l2])
        else:
            raise apertium.ModeNotInstalled()

        if pair is not None:
            l1, l2 = pair
            cmds = list(self._get_commands(l1, l2))
            unsafe_deformat, unsafe_reformat = self._get_format(
                formatting, deformat, reformat)
            deformater, reformater = self._validate_formatters(
                unsafe_deformat, unsafe_reformat)
            deformatted = self._get_deformat(str(deformater), text)
            output = execute(deformatted, cmds)
            result = self._get_reformat(str(reformater), output).strip()
            return result.decode()  # type: ignore
Пример #2
0
    def analyze(self,
                in_text,
                formatting='txt'
                ):  # type: (Analyzer, str, str) -> List[LexicalUnit]
        """
        Runs apertium to analyze the input

        Args:
            in_text (str)
            formatting (str)

        Returns:
            List[LexicalUnit]
        """
        apertium_des = execute(in_text,
                               [['apertium-des{}'.format(formatting), '-n']])
        result = execute(apertium_des, self._get_commands())
        return self._postproc_text(result)
Пример #3
0
    def analyze(self, in_text, formatting='txt'):  # type: (Analyzer, str, str) -> List[LexicalUnit]
        """
        Runs apertium to analyze the input

        Args:
            in_text (str)
            formatting (str)

        Returns:
            List[LexicalUnit]
        """
        commands = [['apertium', '-d', self.path, '-f', formatting, self.mode]]
        result = execute(in_text, commands)
        return self._postproc_text(result)
Пример #4
0
    def generate(self, in_text, formatting='none'):  # type: (Generator, str, str) -> Union[str, List[str]]
        """
        Args:
            in_text (str)
            formatting (str)

        Returns:
            Union[str, List[str]]
        """
        self.lang = to_alpha3_code(self.lang)

        if self.lang in apertium.generators:
            commands = list(self._get_commands())
            result = execute(in_text, commands)
            return result.rstrip('\x00')
        else:
            raise apertium.ModeNotInstalled(self.lang)