fruitpicker01 commited on
Commit
4949b7f
·
verified ·
1 Parent(s): 2a7196f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -12
app.py CHANGED
@@ -9,11 +9,9 @@ from langchain_community.chat_models.gigachat import GigaChat
9
  from openpyxl import load_workbook
10
  import base64
11
  from together import Together
12
- from mistralai import Mistral
13
  import pymorphy2
14
  import re
15
  import string
16
- import re
17
 
18
  morph = pymorphy2.MorphAnalyzer()
19
 
@@ -1001,11 +999,13 @@ def check_no_promises(message):
1001
 
1002
  def check_no_double_verbs(message):
1003
  morph = pymorphy2.MorphAnalyzer()
1004
- words = message.split()
 
1005
  morphs = [morph.parse(word)[0] for word in words]
1006
 
1007
  for i in range(len(morphs) - 1):
1008
- if morphs[i].tag.POS == 'INFN' and morphs[i+1].tag.POS == 'INFN':
 
1009
  return False
1010
  return True
1011
 
@@ -1095,10 +1095,16 @@ def check_no_subordinate_clauses_chain(message):
1095
  # 12. Разделительные повторяющиеся союзы
1096
 
1097
  def check_no_repeating_conjunctions(message):
1098
- repeating_conjunctions_patterns = r'\b(и|или|но|также)\s+\1\b'
 
1099
 
1100
- if re.search(repeating_conjunctions_patterns, message, re.IGNORECASE):
1101
- return False
 
 
 
 
 
1102
  return True
1103
 
1104
  # 13. Вводные конструкции
@@ -1142,7 +1148,7 @@ def check_no_time_parasites(message):
1142
 
1143
  def check_no_multiple_nouns(message):
1144
  noun_count = 0
1145
- words = message.split()
1146
  morph = pymorphy2.MorphAnalyzer()
1147
 
1148
  for word in words:
@@ -1151,8 +1157,8 @@ def check_no_multiple_nouns(message):
1151
  # Если слово — существительное
1152
  if 'NOUN' in parsed_word.tag:
1153
  noun_count += 1
1154
- # Если встречен союз или предлог, обнуляем счетчик
1155
- elif parsed_word.tag.POS in {'CONJ', 'PREP'}:
1156
  noun_count = 0
1157
  else:
1158
  noun_count = 0
@@ -1161,12 +1167,11 @@ def check_no_multiple_nouns(message):
1161
  return False
1162
  return True
1163
 
1164
-
1165
  # 17. Производные предлоги
1166
 
1167
  def check_no_derived_prepositions(message):
1168
  derived_prepositions = [
1169
- r'\b(в течение|в ходе|вследствие|в связи с|по мере|при помощи|согласно)\b'
1170
  ]
1171
 
1172
  for pattern in derived_prepositions:
 
9
  from openpyxl import load_workbook
10
  import base64
11
  from together import Together
 
12
  import pymorphy2
13
  import re
14
  import string
 
15
 
16
  morph = pymorphy2.MorphAnalyzer()
17
 
 
999
 
1000
  def check_no_double_verbs(message):
1001
  morph = pymorphy2.MorphAnalyzer()
1002
+ # Разделяем текст по пробелам и знакам препинания
1003
+ words = re.split(r'\s+|[.!?]', message)
1004
  morphs = [morph.parse(word)[0] for word in words]
1005
 
1006
  for i in range(len(morphs) - 1):
1007
+ # Проверяем, что оба слова являются глаголами (в любой форме, включая инфинитивы)
1008
+ if (morphs[i].tag.POS in {'VERB', 'INFN'}) and (morphs[i+1].tag.POS in {'VERB', 'INFN'}):
1009
  return False
1010
  return True
1011
 
 
1095
  # 12. Разделительные повторяющиеся союзы
1096
 
1097
  def check_no_repeating_conjunctions(message):
1098
+ # Регулярное выражение для поиска разделительных повторяющихся союзов с запятой перед вторым союзом
1099
+ repeating_conjunctions_patterns = r'\b(и|ни|то|не то|или|либо)\b\s*(.*?)\s*,\s*\b\1\b'
1100
 
1101
+ # Разделяем сообщение на предложения по точке, вопросительному и восклицательному знакам
1102
+ sentences = re.split(r'[.!?]\s*', message)
1103
+
1104
+ # Проверяем каждое предложение отдельно
1105
+ for sentence in sentences:
1106
+ if re.search(repeating_conjunctions_patterns, sentence, re.IGNORECASE):
1107
+ return False
1108
  return True
1109
 
1110
  # 13. Вводные конструкции
 
1148
 
1149
  def check_no_multiple_nouns(message):
1150
  noun_count = 0
1151
+ words = re.split(r'\s+|[.!?]', message) # Разбиваем по пробелам и знакам препинания
1152
  morph = pymorphy2.MorphAnalyzer()
1153
 
1154
  for word in words:
 
1157
  # Если слово — существительное
1158
  if 'NOUN' in parsed_word.tag:
1159
  noun_count += 1
1160
+ # Если встречен конец предложения (точка, вопросительный знак, восклицательный знак)
1161
+ elif re.match(r'[.!?]', word):
1162
  noun_count = 0
1163
  else:
1164
  noun_count = 0
 
1167
  return False
1168
  return True
1169
 
 
1170
  # 17. Производные предлоги
1171
 
1172
  def check_no_derived_prepositions(message):
1173
  derived_prepositions = [
1174
+ r'\b(в течение|в ходе|вследствие|в связи с|по мере|при помощи|согласно|вопреки|на основании|на случай|в продолжение|по причине|вблизи|вдалеке|вокруг|внутри|вдоль|посередине|вне|снаружи|благодаря|невзирая на|исходя из)\b'
1175
  ]
1176
 
1177
  for pattern in derived_prepositions: