Spaces:
Sleeping
Sleeping
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 = """ | |
<center> | |
<div class="alert alert-warning" role="alert"> | |
<h6><b>{}</b></h6> | |
</div> | |
</center> | |
""" | |
return template.format(error) | |
def get_verbs( | |
self, | |
verb: str | |
) -> Tuple[str,str,str]: | |
verb = verb.strip().lower() | |
error, infinitive, past, participle = "", "", "", "" | |
if verb == "": | |
error = self.___format_error( | |
f"Error: The Verb field can not be empty!" | |
) | |
return error, infinitive, past, participle | |
tk_verb = self.__tokenizer(verb) | |
infinitive = self.__v2infinitive(tk_verb) | |
past = self.__v2past(tk_verb) | |
participle = self.__v2participle(tk_verb) | |
if infinitive is None or past is None or participle is None: | |
error = self.___format_error( | |
f"Error: The verb '<b>{verb}</b>' has not been found or not spelled correctly!" | |
) | |
return error, infinitive, past, participle | |
return error, infinitive, past, participle |