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

Морфологические статистики

ruts.morph_stats.MorphStats

Описание

Модуль для вычисления морфологических статистик текста. В качестве источника данных может использоваться как непосредственно текст, так и объект класса Doc библиотеки spaCy.

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

Для морфологического разбора текста используется библиотека pymorphy2. Описание статистик взяты из корпуса OpenCorpora.

Примечание

Вычисление статистик происходит в момент инициализации объекта класса MorphStats.

Параметры

Параметр Тип По умолчанию Описание
source str/Doc - Источник данных (строка или объект Doc)
words_extractor WordsExtractor None Инструмент для извлечения слов

Атрибуты

Атрибут Тип Описание
words tuple[str] Кортеж извлеченных слов
tags tuple[str] Кортеж извлеченных тэгов OpenCorpora
pos tuple[str] Кортеж значений части речи
animacy tuple[str] Кортеж значений одушевленности
aspect tuple[str] Кортеж значений вида
case tuple[str] Кортеж значений падежа
gender tuple[str] Кортеж значений пола
involvement tuple[str] Кортеж значений совместности
mood tuple[str] Кортеж значений наклонения
number tuple[str] Кортеж значений числа
person tuple[str] Кортеж значений лица
tense tuple[str] Кортеж значений времени
transitivity tuple[str] Кортеж значений переходности
voice tuple[str] Кортеж значений залога

Методы

get_stats

Возвращает справочник с вычисленными морфологическими статистиками.

Параметры:

Параметр Тип По умолчанию Описание
args tuple[str] - Перечень выбранных статистик
filter_none bool False Фильтровать пустые значения

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

Для выбора необходимых статистик их наименования необходимо передавать в метод непосредственно через запятую.

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

Пример

Код:

# Загрузка библиотек
from ruts import MorphStats

# Подготовка данных
text = "Постарайтесь получить то, что любите, иначе придется полюбить то, что получили"

# Вычисление статистик
ms = MorphStats(text)
ms.get_stats(
    'pos', 'tense', 'number', 'person',
    filter_none=True
)

Результат:

{'number': {'plur': 3, 'sing': 1},
'person': {'2per': 1, '3per': 1},
'pos': {'ADVB': 1, 'CONJ': 4, 'INFN': 2, 'VERB': 4},
'tense': {'futr': 1, 'past': 1, 'pres': 1}}

Выводит на экран таблицу с вычисленными морфологическими статистиками.

Параметры:

Параметр Тип По умолчанию Описание
args tuple[str] - Перечень выбранных статистик
filter_none bool False Фильтровать пустые значения

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

Для выбора необходимых статистик их наименования необходимо передавать в метод непосредственно через запятую.

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

Пример

Код:

...

# Отображение таблицы вычисленных статистик
ms.print_stats(
    'pos', 'tense', 'number', 'person',
    filter_none=True
)

Результат:

---------------Часть речи---------------
Глагол (личная форма)         |    4     
Союз                          |    4     
Глагол (инфинитив)            |    2     
Наречие                       |    1     

-----------------Время------------------
Настоящее                     |    1     
Будущее                       |    1     
Прошедшее                     |    1     

-----------------Число------------------
Множественное                 |    3     
Единственное                  |    1     

------------------Лицо------------------
2                             |    1     
3                             |    1    

explain_text

Выполняет разбор текста по морфологическим статистикам. Возвращает словарь, в котором ключами являются слова текста, а значениями - словарь их морфологических статистик.

Параметры:

Параметр Тип По умолчанию Описание
args tuple[str] - Перечень выбранных статистик
filter_none bool False Фильтровать пустые значения

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

Для выбора необходимых статистик их наименования необходимо передавать в метод непосредственно через запятую.

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

Пример

Код:

...

# Разбор текста по морфологическим статистикам
ms.explain_text(
    'pos', 'tense', 'number', 'person',
    filter_none=True
)

Результат:

(('Постарайтесь', {'number': 'plur', 'pos': 'VERB'}),
('получить', {'pos': 'INFN'}),
('то', {'pos': 'CONJ'}),
('что', {'pos': 'CONJ'}),
('любите', {'number': 'plur', 'person': '2per', 'pos': 'VERB', 'tense': 'pres'}),
('иначе', {'pos': 'ADVB'}),
('придется', {'number': 'sing', 'person': '3per', 'pos': 'VERB', 'tense': 'futr'}),
('полюбить', {'pos': 'INFN'}),
('то', {'pos': 'CONJ'}),
('что', {'pos': 'CONJ'}),
('получили', {'number': 'plur', 'pos': 'VERB', 'tense': 'past'}))