88005555555
import pymorphy2
import telebot
bot = telebot.TeleBot('761209182:AAGDUOrDKPqfI2y0kgT9o74ZfXKtovMyLuI')
morph = pymorphy2.MorphAnalyzer()
class WordParsing():
def __init__(self, smt, word, x):
self.word = word
self.mrp = smt[x]
self.temp = ''
self.s_parsing()
def gender(self):
if 'masc' in self.mrp.tag:
return 'мужской род,'
elif 'femn' in self.mrp.tag:
return 'женский род,'
elif 'neut' in self.mrp.tag:
return 'средний род,'
else:
return ''
def declination(self):
if (self.gender() == 'мужской' or self.gender() == 'женский') and (
self.normalform()[-1] == 'а' or self.normalform()[-1] == 'я'):
return '1 склонение,'
elif (self.gender() == 'мужской') or (
self.gender() == 'средний' and self.normalform()[
-1] == 'о') or (
self.gender() == 'средний' and self.normalform()[-1] == 'е'):
return '2 склонение,'
else:
return '3 склонение,'
def s_parsing(self):
self.temp += (f'I.{self.word} - сущ\n')
self.temp += (f'II.Начальная форма - {self.normalform()}\n')
self.temp += (
f'Постоянные признаки: {self.proper_or_common()} {self.anim()} {self.gender()}'
f' {self.declination()}\n')
self.temp += (f'Непостоянные признаки: {self.case()} {self.num()}\n')
self.temp += (
f'III.Может быть различным членом предложения, смотрите по контексту.')
def anim(self):
if 'anim' in self.mrp.tag:
return 'одушевлённое,'
else:
return 'неодушевлённое,'
def case(self):
if 'nomn' in self.mrp.tag:
return 'Именительный падеж,'
elif 'gent' in self.mrp.tag:
return 'Родительный падеж,'
elif 'datv' in self.mrp.tag:
return 'Дательный падеж,'
elif 'accs' in self.mrp.tag:
return 'Винительный падеж,'
elif 'ablt' in self.mrp.tag:
return 'Творительный падеж,'
elif 'loct' in self.mrp.tag:
return 'Предложный падеж,'
else:
return ''
def num(self):
if 'sing' in self.mrp.tag:
return 'единственное число,'
else:
return 'множественное число,'
def normalform(self):
return self.mrp.normal_form
def proper_or_common(self):
if 'Name' in self.mrp.tag:
return 'имя собственное,'
elif 'Surn' in self.mrp.tag:
return 'имя собственное,'
elif 'Patr' in self.mrp.tag:
return 'имя собственное,'
elif 'Geox' in self.mrp.tag:
return 'имя собственное,'
elif 'Orgn' in self.mrp.tag:
return 'имя собственное,'
elif 'Trad' in self.mrp.tag:
return 'имя собственное,'
else:
return 'имя нарицательное,'
@bot.message_handler(commands=['help'])
def send_welcome(message):
msg = bot.send_message(message.chat.id, 'Заработало')
@bot.message_handler(commands=['start'])
def send_welcome(message):
msg = bot.send_message(message.chat.id, 'Напишите слово')
@bot.message_handler(content_types=["text"])
def start(message):
word = message.text
word = word.lower()
bot.send_message(message.chat.id, word)
ans = ''
if len(morph.parse(word)) > 1:
ans += (
f'Слово {word} может быть разобрано {len(morph.parse(word))} способами. Вариант разбора зависит от того, в составе какого'f' словосочетания или предложения слово находится. Выберите подходящий вариант для вашего случая.')
bot.send_message(message.chat.id, ans)
ans = ''
for i in range(len(morph.parse(word))):
ans = ''
ans += (i + 1, "разбор: \n")
ans += WordParsing(morph.parse(word), word, i)
bot.send_message(message.chat.id, ans)
bot.polling(none_stop=True)