LINUX.ORG.RU

Как вообще определить, что слово - глагол?

 


1

1

Прошло уже более 20 лет с момента создания этой темы - Дополнение к LOR FAQ
хватит терпеть неавтоматизированность этой проверки.

Искины предлагают такое:

  1. использовать лексические базы данных, такие как WordNet (то есть, словари), эти базы должны содержать информацию о части речи;
  2. использовать морфологические анализаторы, такие как pymorphy2 или Natasha;
  3. обучить модель машинного обучения на размеченных данных;
  4. использовать шаблоны и правила, основанные на суффиксах и префиксах, которые часто встречаются в глаголах (но это ненадёжный метод);

Библиотека pymorphy2 написана на python и её будет сложно засунуть в проект на Java, похожий на LOR.

Natasha тоже.

Умеет ли WordNet в русский язык? RuWordNet
Как им пользоваться - вообще неясно, потому что он непубличный:

«Для некоммерческого использования можно получить xml-файлы с данными тезауруса RuWordNet. Для получения файлов обращайтесь по адресу louk_nat@mail.ru.»

Допустим, что в качестве словаря можно скачать викисловарь
<generator>MediaWiki 1.44.0-wmf.25</generator>
что можно дальше сделать на основе этого?

Можно сделать другой, более компактный XML-файл, в котором останутся только глаголы (возможно связанные между собой, там же есть таблицы для форм глаголов и гиперссылки).

Это станет тем самым «размеченным корпусом», на котором надо тренировать нейросеть модель машинного обучения?

Как нейросеть сформирует правила?

Кроме самого слова можно ещё использовать его контекст или контексты, для увеличения вероятности правильного распознавания части речи и выявления факта отношения слова к глаголам. Что-нибудь можно сделать, и что именно?

★★★★

Последнее исправление: Shushundr (всего исправлений: 6)

мыш (кродеться) мимо этой темы.

ALiEN175
()
Последнее исправление: ALiEN175 (всего исправлений: 1)

На самом деле все просто. Нужно задать слову вопрос: что делает. Если в слове в итоге будет мягкий знак или не будет мягкого знака - значит это глагол.

Хм.. Какая интересная задача. Вот питон ругают, а в нем уже есть минимум два готовых и достаточно компактны решения.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

Если в слове в итоге будет мягкий знак или не будет мягкого знака - значит это глагол.

Т.е. любое слово - глагол

PPP328 ★★★★★
()
Свою судьбу ху#ня и блR,
Слегка о прошлом гонорея,
Сказала: «Каравай меня!»,
Прикрыв глаза и батарея

Её весь вечер он вокзал,
от страсти аж оранжерея,
сандал, портал и просто трал,
её экстаза портупея.

Возня синхронно и идея,
всю ночь они горизонтали,
И лишь под утро, ассамблея,
забвенье автомагистрали…
kott ★★★★★
()

Ключевое слово POS tagger. Больше не скажу, понятия не имею, какие существуют для русского языка.

P.S. обычно обходятся без машинлёрнинга-диплёрнинга-блокчейна.

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 1)

использовать шаблоны и правила, основанные на суффиксах и префиксах, которые часто встречаются в глаголах (но это ненадёжный метод)

Неоднозначности возникают почти всегда в регулярном втором спряжении.

Выход – избегать второго спряжения в сомнительных случаях.

Лена коммитит(ь)ся. Лена только собирается коммитит(ь)ся.

Лена коммитается. Лена только собирается коммитаться.

Света дебажит(ь)ся. Света только собирается дебажит(ь)ся.

Света дебагается. Света только собирается дебагаться.
vM ★★
()

Как вообще определить, что слово - глагол?

очень просто - не надо зацикливаЦа на этом

amd_amd ★★★★★
()

Мне вот тоже нужно было to, как инфинитив с маленькой буквы, а как предлог направления с большой. В результате быстрее всего оказалось руками.

dmitry237 ★★★★★
()

Искины предлагают

Нашёл кого слушать: вон они в прошлый раз вообще всю планету в чд упаковали

pihter ★★★★★
()

Без учета контекста в общем случае невозможно определить, что глагол, а что нет.

Например, в предложенииях

Мой дядя самых честных правил

Души прекрасные порывы

правил и души - это существительные или глаголы? =)

Так что задача простыми списками слов и правил не решается.

Кроме самого слова можно ещё использовать его контекст или контексты, для увеличения вероятности правильного распознавания части речи и выявления факта отношения слова к глаголам.

Не можно, а нужно.

Что-нибудь можно сделать, и что именно?

Сейчас из головы вылетело и за пять минут не нашлось, но есть (год назад точно было) сайт для лингвистов, там большая куча разных датасетов и библиотек. Не opencorpora.org - какой-то еще, хотя и этот кое-чем может помочь.

praseodim ★★★★★
()
Последнее исправление: praseodim (всего исправлений: 1)

Пеки хлеб!

Она стоит у печи.

Вот автоматизированно трудно будет различить.

Psilocybe ★★★★★
()
Ответ на: комментарий от vM

Только никакой «неоднозначности» тут нет и не было. Путать «ться/тся» — это просто самый надёжный маркер олигофрена, неспособного отличить «что делает?» от «что делать?».

alegz ★★★★★
()
Ответ на: комментарий от alegz

Есть ещё продуктивная группа глаголов на -нут(ь)ся:

Света и Лена (что делают?) обещают дебагнут(ь)ся, а потом коммитнут(ь)ся.

vM ★★
()

на удивление, определить можно только в контексте.

«бегло» - это глагол/прилагательное/существительное ? что-ты-длжать-такое

MKuznetsov ★★★★★
()

Как вообще определить, что слово - глагол?

В общем случае никак. В русском нужно как минимум анализировать очень большой контекст вокруг фразы и её смысл.

В английском вообще почти любое слово может быть и глаголом и существительным и прилагательным. И хотя в английском порядок частей речи фиксирован в большинстве случаев, но, опять же, без анализа контекста и смысла не обойтись.

И если контекст ещё как-то можно попытаться анализировать программно, то со смыслом - полнейший облом и никаких перспектив вообще даже в отдалённом будущем.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

На китайский надо переходить. Точный контекст, порядок, смыслы. И все эти проблемы сами отпадут с определениями.

LightDiver ★★★★★
()

И это ещё про «иссяк запал» никто не вспомнил.

JaM
()
Ответ на: комментарий от LightDiver

Нужно задать слову вопрос

Это был эпический комментарий. Прямо-таки языческая оживляющая, анимирующая технология одушевления неживых вещей (в данном случае концепции «слово»). Это близко к первобытному объектно-ориентированному подходу, в котором объекты наделяются умениями, изначально им не присущими (т.е. основанному на комплиментах).

Заставило задуматься меня о том, что я не дал определение понятию «слово». А это было важно, так как должно повлиять на API предполагаемой библиотеки. Если слово - это элемент текста в некотором аспекте (лексическом, например), то надо научиться слова в тексте адресовать, обозначать конкретные для целеуказания.

Но слово это не просто элемент текста, но ещё одновременно и элемент языка. Что с этим можно сделать? Надо хотя бы разными понятиями обозначить эти два концепта (в тексте и в языке). В тексте пусть будет экземпляр словоформы, в языке пусть будет семантическое гнездо.

Shushundr ★★★★
() автор топика

спросить дикпик или открыть учебник по русскому за 5-ый класс. там в зависимости от времени определенные приставки и окончания, те startswith/endswith хватит

rtxtxtrx ★★★
()

Без контекста никак: должна знать знать - что там за части речи?
В контексте тоже не 100%, ибо бывает
1) игра слов:
-Попингуй!
-Сам ты попингуй.
2) многозначный контекст (пила пила)

А ещё нас рать - это глагол или как?

novus ★★
()
Последнее исправление: novus (всего исправлений: 2)

Никак: в английском языке, все большинство слов могут играть роль как существительных, так и глаголов.

next_time ★★★★★
()

В общем случае никак, в частных - знать язык.

ya-betmen ★★★★★
()
Ответ на: комментарий от next_time

В английскомпри наличии полной фразы глагол (сказуемое) элементарно детектится из знания грамматики.

В русском например для этого обязательно нужна лексика.

ya-betmen ★★★★★
()
Ответ на: комментарий от next_time

Ну и другие слова типа «жало».

Причём, это не случайность: такие слова - отголосок более широкого использования отглагольных существительных на ранних этапах развития русского языка

next_time ★★★★★
()
Ответ на: комментарий от ya-betmen

Это да, но без наличия полной фразы, например, при спеллчеке во время ввода, такое особо не продетектить

next_time ★★★★★
()
Ответ на: комментарий от next_time

Для спеллчека это прям не всегда и требуется, различать части речи.

Я скорее к тому, что в русском всякие идеи типа глокой куздры легко контрит дочь генерала.

ya-betmen ★★★★★
()

мне кажется, что все попытки алгоритмически решить твою задачу провалились.

Все пихают в нейросетку и фигачат

max_lapshin ★★★★★
()

В общем случае задача определения части речи не решаема. И чисто pymorphy2/natasha ничего не могут с ней сделать. Причина проста - нужен ещё контекст, т.е. сверху придётся ещё одну нейронку лепить и всё равно ни одна нейронка не даёт 100% точности. Вот тебе примеры:

Я купил ноут в запас

Я запас ноут

С ться тся конечно такое сходу сложнее придумать, но я уверен что что-то найдётся, благо морфологических омонимов в русском языке много.

peregrine ★★★★★
()
Ответ на: комментарий от praseodim

А ещё кожаный мешок мог вложить двойной смысл. Вот как во втором предложении. Даже контекста мало чтоб понять надо ли душить в себе всё прекрасное или у какой-то души есть какие-то порывы.

peregrine ★★★★★
()
Ответ на: комментарий от vM

Любимый баян:

«Душа монаха» - душа это деепричастие
«Стих» - это глагол в повелительном наклонении
«семеро козлят» - козлят это глагол.

vel ★★★★★
()
Ответ на: комментарий от peregrine

кожаный мешок мог вложить двойной смысл

В таком случае киберсознание сможет извлечь двойной смысл. Что сразу панику поднимать заранее?

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Shushundr
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 ★★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

Это нейросетка такое выдала? Хороший пример прилично выглядящей хрени.

Во первых, неверный пример использования. С этим примером выдается

['остановился', 'начал']

а не то, что написано что якобы в выводе.

Если внимательно посмотреть на код, то понятно, что остальные глаголы и не могли попасть в список. В коде ошибка, проверка ошибок, приставок, возвратных глаголов должна быть в незасимых секциях, не проверять суффиксы после окончания. Код надо так переписать:

    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):
            verbs.append(original_word)
            continue

        # Проверка характерных суффиксов
        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)

Тогда он более похожее выдает на пример использования

['думая', 'петь', 'Решая', 'начал', 'остановился', 'задачи', 'услышав']

Но как видно, ошибочно слово задачи из-за приставки «за» добавил.

Во вторых, я уже приводил в теме пример с «Мой дядя самых честных правил». Правил - это глагол или существительное? Этот алгоритм думает, что глагол, а также, что «Дядя» - глагол. Видимо деепричастное =)))))))

['правил', 'дядя']

я как написал алгоритм, который первый в голову пришел, нейронка тож самое накалякала. а если она думает как я, то все правильно

Все неправильно, задача очень нетривиальная и в лоб не решается.

P.S. На словарях, регулярках и функциях с ними, наверное, можно 90-95% точность обеспечить, возможно этого даже и достаточно для каких-то практических целей. Но если хотеть действительно очень точного определения, то придется заморочиться попытками учесть контент и даже смысл.

praseodim ★★★★★
()
Последнее исправление: praseodim (всего исправлений: 3)
Ответ на: комментарий от praseodim

и что? нейронка и не способна выдать сразу лучшее решение.

rtxtxtrx ★★★
()
Ответ на: комментарий от rtxtxtrx

Решая задачи и думая о жизни, он начал петь, но вдруг остановился, услышав странный звук.

Чё ты на фигне непонятной тестируешь? Вот норм пример заряди

Дичь тенью скользит по кладбищу.

ya-betmen ★★★★★
()

По самому слову — в общем случае никак. Только распарсив всё предложение целиком и определив связи между частями речи.

CrX ★★★★★
()
Ответ на: комментарий от rtxtxtrx

Вообще не сработает. Если ему нужно и окончание и одновременно с ним или суффикс или приставка или -ся, куча глаголов останется не распознанными как глаголы.

CrX ★★★★★
()

словарем. ты рофлешь? надо от ИИ языковую модель инсталлировать.

jura12 ★★
()
Последнее исправление: jura12 (всего исправлений: 1)
Ответ на: комментарий от CrX

твой то мозг как-то определяет. там, конечно, алгоритм сложнее, но с вычислениями на подкорке, сопроцессором каким-то

rtxtxtrx ★★★
()
Ответ на: комментарий от rtxtxtrx

Не просто сложнее, а на много-много порядков сложнее.

Ну и по одному выдернутому из фразу слова не определяет и мозг в общем случае. Только в составе целой фразы. Есть куча слов, которые могут быть и глаголами и другими частями речи. Вот лишь несколько рандомных примеров:

  • ели пиццу vs росли стройные ели;
  • бодрый запил на гитаре vs запил таблетку водой;
  • пропил в изделии vs пропил все деньги;
  • постой и послушай vs остаться на постой;
  • мечи бисер vs железные мечи;
  • строй мне дом vs строй солдат;
  • запой мне песню vs у вас, батенька, хронический запой;
  • она пила кофе каждый день vs пила двуручная.

И это лишь рандомные примеры, на самом деле таких слов очень, очень много, просто в исключения все руками записать не выйдет. Разве что взять словари и по ним все такие формы автоматически найти.

А если у тебя текст без ударений, то ещё тьма тьмущая прибавляется вроде топи, копи, метал, мести — с разным ударением будет или глагол или существительное.

CrX ★★★★★
()
Ответ на: комментарий от CrX

строй солдат тоже неоднозначно. если строй использовать в значении построй. автор вообще хочет тся/ться править. те и глаголы определять просто… а хотя он неизвестно что хочет, но точно уж ему не нужна супер-логика

rtxtxtrx ★★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

автор вообще хочет тся/ться править. те и глаголы определять просто… а хотя он неизвестно что хочет, но точно уж ему не нужна супер-логика

«Он сторонит(ь)ся готов» как будешь разбирать?

А с учётом того, что исходное предложение не обязательно строго корректное (иначе зачем его проверять), то там и «птиться какадуй» может встретится.

monk ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.