История изменений
Исправление
rtxtxtrx,
(текущая версия)
:
import re
def find_russian_verbs(text):
# Регулярка для извлечения русских слов (включая ё)
word_pattern = re.compile(r'\b\w+\b')
# Характерные признаки глаголов
verb_endings = {
# Инфинитивы
'ть', 'ться', 'ти', 'тись', 'чь', 'чься',
# Личные формы
'у', 'ю', 'ешь', 'ет', 'ем', 'ете', 'ут', 'ют',
'ил', 'ила', 'ило', 'или', 'ал', 'ала', 'ало', 'али',
'ял', 'яла', 'яло', 'яли', 'сь', 'ся',
# Деепричастия
'я', 'в', 'вши', 'учи', 'ючи'
}
# Приставки и суффиксы
prefixes = {'по', 'за', 'на', 'про', 'вы', 'от', 'до', 'при', 'под', 'пере', 'раз'}
suffixes = {'ыва', 'ива', 'ва', 'ова', 'ева'}
# Слова-исключения
exceptions = {
'путь', 'дверь', 'сеть', 'мать', 'дочь', 'плеть',
'рать', 'гость', 'кость', 'рожь', 'плоть'
}
verbs = []
words = word_pattern.findall(text)
for word in words:
original_word = word
word = word.lower()
if len(word) < 3 or word in exceptions:
continue
# Проверка по окончаниям
if any(word.endswith(end) for end in verb_endings):
# Проверка характерных суффиксов
if any(suff in word for suff in suffixes):
verbs.append(original_word)
continue
# Проверка приставок
if any(word.startswith(pref) for pref in prefixes):
verbs.append(original_word)
continue
# Для возвратных глаголов
if word.endswith(('ся', 'сь')):
base = word[:-2]
if len(base) >= 2 and any(base.endswith(end) for end in verb_endings):
verbs.append(original_word)
return list(set(verbs))
# Пример использования
text = "Решая задачи и думая о жизни, он начал петь, но вдруг остановился, услышав странный звук."
print(find_russian_verbs(text))
# Вывод: ['Решая', 'думая', 'начал', 'петь', 'остановился', 'услышав']
я как написал алгоритм, который первый в голову пришел, нейронка тож самое накалякала. а если она думает как я, то все правильно
Исходная версия
rtxtxtrx,
:
import re
def find_russian_verbs(text):
# Регулярка для извлечения русских слов (включая ё)
word_pattern = re.compile(r'\b\w+\b')
# Характерные признаки глаголов
verb_endings = {
# Инфинитивы
'ть', 'ться', 'ти', 'тись', 'чь', 'чься',
# Личные формы
'у', 'ю', 'ешь', 'ет', 'ем', 'ете', 'ут', 'ют',
'ил', 'ила', 'ило', 'или', 'ал', 'ала', 'ало', 'али',
'ял', 'яла', 'яло', 'яли', 'сь', 'ся',
# Деепричастия
'я', 'в', 'вши', 'учи', 'ючи'
}
# Приставки и суффиксы
prefixes = {'по', 'за', 'на', 'про', 'вы', 'от', 'до', 'при', 'под', 'пере', 'раз'}
suffixes = {'ыва', 'ива', 'ва', 'ова', 'ева'}
# Слова-исключения
exceptions = {
'путь', 'дверь', 'сеть', 'мать', 'дочь', 'плеть',
'рать', 'гость', 'кость', 'рожь', 'плоть'
}
verbs = []
words = word_pattern.findall(text)
for word in words:
original_word = word
word = word.lower()
if len(word) < 3 or word in exceptions:
continue
# Проверка по окончаниям
if any(word.endswith(end) for end in verb_endings):
# Проверка характерных суффиксов
if any(suff in word for suff in suffixes):
verbs.append(original_word)
continue
# Проверка приставок
if any(word.startswith(pref) for pref in prefixes):
verbs.append(original_word)
continue
# Для возвратных глаголов
if word.endswith(('ся', 'сь')):
base = word[:-2]
if len(base) >= 2 and any(base.endswith(end) for end in verb_endings):
verbs.append(original_word)
return list(set(verbs))
# Пример использования
text = "Решая задачи и думая о жизни, он начал петь, но вдруг остановился, услышав странный звук."
print(find_russian_verbs(text))
# Вывод: ['Решая', 'думая', 'начал', 'петь', 'остановился', 'услышав']