fruitpicker01 commited on
Commit
4f315bf
·
verified ·
1 Parent(s): d4da1d0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -10
app.py CHANGED
@@ -999,11 +999,13 @@ def check_no_promises(message):
999
 
1000
  def check_no_double_verbs(message):
1001
  morph = pymorphy2.MorphAnalyzer()
1002
- words = message.split()
 
1003
  morphs = [morph.parse(word)[0] for word in words]
1004
 
1005
  for i in range(len(morphs) - 1):
1006
- if morphs[i].tag.POS == 'INFN' and morphs[i+1].tag.POS == 'INFN':
 
1007
  return False
1008
  return True
1009
 
@@ -1093,10 +1095,16 @@ def check_no_subordinate_clauses_chain(message):
1093
  # 12. Разделительные повторяющиеся союзы
1094
 
1095
  def check_no_repeating_conjunctions(message):
1096
- repeating_conjunctions_patterns = r'\b(и|или|но|также)\s+\1\b'
 
1097
 
1098
- if re.search(repeating_conjunctions_patterns, message, re.IGNORECASE):
1099
- return False
 
 
 
 
 
1100
  return True
1101
 
1102
  # 13. Вводные конструкции
@@ -1140,7 +1148,7 @@ def check_no_time_parasites(message):
1140
 
1141
  def check_no_multiple_nouns(message):
1142
  noun_count = 0
1143
- words = message.split()
1144
  morph = pymorphy2.MorphAnalyzer()
1145
 
1146
  for word in words:
@@ -1149,8 +1157,8 @@ def check_no_multiple_nouns(message):
1149
  # Если слово — существительное
1150
  if 'NOUN' in parsed_word.tag:
1151
  noun_count += 1
1152
- # Если встречен союз или предлог, обнуляем счетчик
1153
- elif parsed_word.tag.POS in {'CONJ', 'PREP'}:
1154
  noun_count = 0
1155
  else:
1156
  noun_count = 0
@@ -1159,12 +1167,13 @@ def check_no_multiple_nouns(message):
1159
  return False
1160
  return True
1161
 
1162
-
1163
  # 17. Производные предлоги
1164
 
1165
  def check_no_derived_prepositions(message):
1166
  derived_prepositions = [
1167
- r'\b(в течение|в ходе|вследствие|в связи с|по мере|при помощи|согласно)\b'
 
 
1168
  ]
1169
 
1170
  for pattern in derived_prepositions:
@@ -1172,6 +1181,7 @@ def check_no_derived_prepositions(message):
1172
  return False
1173
  return True
1174
 
 
1175
  # 19. Сложноподчиненные предложения
1176
 
1177
  def check_no_compound_sentences(message):
 
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(в течение|в ходе|вследствие|в связи с|по мере|при помощи|согласно|вопреки|на основании|на случай|',
1175
+ r'в продолжение|по причине|вблизи|вдалеке|вокруг|внутри|вдоль|посередине|вне|снаружи|благодаря|',
1176
+ r'невзирая на|исходя из)\b'
1177
  ]
1178
 
1179
  for pattern in derived_prepositions:
 
1181
  return False
1182
  return True
1183
 
1184
+
1185
  # 19. Сложноподчиненные предложения
1186
 
1187
  def check_no_compound_sentences(message):