Spaces:
Sleeping
Sleeping
File size: 2,460 Bytes
703bf01 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
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 |