import subprocess import spacy import pyinflect from typing import Tuple, Union class Parser: def __init__( self ) -> None: self.parser = self.__init_parser("en_core_web_md") def __init_parser( self, model: str ) -> spacy.language: parser = None try: parser = spacy.load(model) except: print(f"* Downloading {model} model...") _ = subprocess.Popen( f"python -m spacy download {model}", stdout=subprocess.PIPE, shell=True ).communicate() parser = spacy.load(model) return parser def __v2participle( self, tk_verb: spacy.tokens.token.Token ) -> Union[str, None]: return tk_verb._.inflect('VBN') def __v2past( self, tk_verb: spacy.tokens.token.Token ) -> Union[str, None]: return tk_verb._.inflect('VBD') def __v2infinitive( self, tk_verb: spacy.tokens.token.Token ) -> Union[str, None]: return tk_verb._.inflect('VB') def __tokenizer( self, verb: str ) -> spacy.tokens.token.Token: return self.parser(verb)[0] def ___format_error( self, error: str ) -> str: template = """