-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathcheck_adj.py
36 lines (34 loc) · 1.8 KB
/
check_adj.py
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
"""
Module contains function to check if adjectives are written correctly.
(without самий, сама, саме, самі)
but firstly you have to:
pip install pymorphy2
pip install -U pymorphy2-dicts-uk
"""
from pymorphy2 import MorphAnalyzer
morph = MorphAnalyzer(lang='uk')
def check_adj(message: str) -> list:
"""
>>> check_adj('самий вищий')
['❌ самий вищий\n✔️ потрібно використовувати префікс най-']
>>> check_adj('сама краща', 'самі веселі')
['❌ сама краща\n✔️ потрібно використовувати префікс най-', '❌ самі веселі\n✔️ потрібно використовувати префікс най-']
>>> check_adj('саме довге')
['❌ саме довге\n✔️ потрібно використовувати префікс най-']
"""
result = []
sentence = message.lower().replace(',', '').split(' ')
for i in range(len(sentence) - 1):
if sentence[i] in {'самий', 'сама', 'самі'}:
check_word = sentence[i + 1]
check = morph.parse(check_word)[0]
if check.tag.POS in {'ADJF', 'ADJS', 'COMP', 'PRTS', 'PRTN'}:
result.append(
f"❌ {sentence[i]} {check_word}\n✔️ потрібно використовувати префікс най-")
elif sentence[i] == 'саме':
check_word = sentence[i + 1]
check = morph.parse(check_word)[0]
if check.tag.POS in {'ADJF', 'ADJS', 'COMP', 'PRTS', 'PRTN', 'ADVB'}:
result.append(
f"❌ саме {check_word}\n✔️ потрібно використовувати префікс най-")
return result if result else None