Страницы

Поиск по вопросам

среда, 26 февраля 2020 г.

Отбросить приставку слова

#python #nlp #pymorphy2 #морфология


Мне нужно получить инфинитив слова и отбросить его приставку с помощью pymorphy2.
Я пытался найти нужную информацию в документации, но не нашёл (есть KnownPrefixAnalyzer,
но ничего не написано про то, как им пользоваться. Очевидно, это внутренний анализатор).
Буду благодарен за любую помощь.
    


Ответы

Ответ 1



Попробуйте так: from pymorphy2 import MorphAnalyzer from pymorphy2.units.by_analogy import KnownPrefixAnalyzer, UnknownPrefixAnalyzer morph = MorphAnalyzer() def cut_prefix(word, morph=MorphAnalyzer()): analyzers = [ KnownPrefixAnalyzer(morph), UnknownPrefixAnalyzer(morph)] seen = set() word_lower = word.lower() res = [] for analyzer in analyzers: parsed = analyzer.parse(word, word_lower, seen) if not parsed: continue tmp = parsed[0] res.extend(tmp) if len(tmp) >= 5: if tmp[4] and tmp[4][0]: return morph.normal_forms(tmp[4][0][1])[0] return res тесты: In [131]: cut_prefix("приукрасила") Out[131]: 'украсить' In [132]: cut_prefix("подловил") Out[132]: 'ловить' In [133]: cut_prefix("мегаабракадабра") Out[133]: 'абракадабра' In [134]: cut_prefix("перенедоел") Out[134]: 'недоесть' In [140]: cut_prefix("безопасный") Out[140]: 'опасный' In [141]: cut_prefix("безобразие") Out[141]: 'образие'

Комментариев нет:

Отправить комментарий