Страницы

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

понедельник, 2 марта 2020 г.

Удаление из строки служебных частей речи(союзы, предлоги частицы, междометия и др.) Python 3

#python #python_3x #строки #обработка #морфология


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

Пример:
Строка до применения: "Однако я так и не смог закончить"
Строка после применения: "я не смог закончить"
    


Ответы

Ответ 1



Если вы хотите удалить избранные части речи из строки, то можно части речи определить [к примеру] используя pymorphy2: import pymorphy2 # $ pip install pymorphy2 def pos(word, morth=pymorphy2.MorphAnalyzer()): "Return a likely part of speech for the *word*.""" return morth.parse(word)[0].tag.POS words = "Однако я так и не смог закончить".split() functors_pos = {'INTJ', 'PRCL', 'CONJ', 'PREP'} # function words print(*[word for word in words if pos(word) not in functors_pos]) # -> я смог закончить Часть речи по одному только слову может быть неверно определена. В частном случае, вы можете просто свой набор слов для удаления поддерживать. Можно разобрать части речи, используя averaged_perceptron_tagger_ru из nltk: import nltk # $ pip install nltk # nltk.download('averaged_perceptron_tagger_ru') words = nltk.word_tokenize("Однако я так и не смог закончить") functors_pos = {'CONJ', 'ADV-PRO', 'CONJ', 'PART'} # function words print(*[word for word, pos in nltk.pos_tag(words, lang='rus') if pos not in functors_pos]) # -> я смог закончить

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

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