Перейти к содержанию

Извлечение слов

ruts.extractors.WordsExtractor

Описание

Модуль для извлечения слов из текста. Позволяет использовать различные токенизаторы, фильтровать стоп-слова, числа и знаки препинания, проводить лемматизацию, формировать N-граммы, а также настраивать минимальную и максимальную длину извлекаемых слов.

Примечание

В качестве токенизитора по умолчанию используется функция tokenize из библиотеки razdel.

Примечание

В качестве морфологического анализитора для лемматизации по умолчанию используется класс MorphAnalyzer из библиотеки pymorphy2.

Параметры

Параметр Тип По умолчанию Описание
tokenizer Pattern/Сallable None Токенизатор или регулярное выражение
filter_punct bool True Фильтровать знаки препинания
filter_nums bool False Фильтровать числа
use_lexemes bool False Использовать леммы слов
stopwords List[str] None Список стоп-слов
lowercase bool False Конвертировать слова в нижний регистр
ngram_range Tuple[int, int] (1, 1) Нижняя и верхняя граница размера N-грамм
min_len int 0 Минимальная длина извлекаемого слова
max_len int 0 Максимальная длина извлекаемого слова

Методы

extract

Выполняет извлечение слов из текста.

Параметр Тип По умолчанию Описание
text str - Строка текста

Рассмотрим пример извлечения слов, используя в качестве токенов биграммы, а также выполнив предварительную фильтрацию стоп-слов и лемматизацию:

Пример

Код:

# Загрузка библиотек
import re
from nltk.corpus import stopwords
from ruts import WordsExtractor

# Подготовка данных
text = "Не имей 100 рублей, а имей 100 друзей"

# Извлечение предложений
we = WordsExtractor(
    use_lexemes=True,
    stopwords=stopwords.words('russian'),
    filter_nums=True,
    ngram_range=(1, 2)
)
we.extract(text)

Результат:

('иметь', 'рубль', 'иметь', 'друг', 'иметь_рубль', 'рубль_иметь', 'иметь_друг')

Предупреждение

Для корректной работы данного примера необходимо иметь предварительно загруженный список стоп-слов библиотеки nltk на локальном компьютере. Сделать это можно, выполнив следующий код:

import nltk
nltk.download('stopwords')

get_most_common

Позволяет получить счетчик топ-слов текста. В качестве параметров принимает количество выводимых топ-слов.

Для иллюстрации работы метода воспользуемся кодом из предыдущего примера:

Пример

Код:

...

# Вывод топ-слов
we.get_most_common(3)

Результат:

[('иметь', 2), ('рубль', 1), ('друг', 1)]

Предупреждение

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