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

Извлечение символьных N-грамм

ruts.extractors.CharNgramsExtractor

Описание

Модуль для извлечения символьных N-грамм из текста - последовательностей из N символов, взятых окном по строке. Символьные N-граммы - стандартный признак стилометрии и атрибуции авторства (Stamatatos 2009): они захватывают морфологию, пунктуацию и типичные сочетания букв, не требуя лемматизации. Список N-грамм подается в delta как единицы текста вместо слов.

Пробельные символы предварительно схлопываются в один пробел, знаки препинания сохраняются: пробел и знак внутри N-граммы - тоже стилистический сигнал. При within_words=True N-граммы не пересекают границ слов: текст режется токенизатором на слова, знаки препинания отбрасываются, слова короче N N-грамм не дают.

Примечание

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

Параметры

Параметр Тип По умолчанию Описание
n int 2 Длина N-граммы в символах
lowercase bool False Конвертировать текст в нижний регистр
within_words bool False Брать N-граммы только внутри слов
tokenizer Pattern/Сallable None Токенизатор слов для within_words или регулярное выражение

Методы

extract

Выполняет извлечение N-грамм из текста.

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

Пример

from ruts import CharNgramsExtractor

text = "Кот сидел  на окне, а пёс - на полу."

ce = CharNgramsExtractor()
ce.extract(text)[:8]
# ('Ко', 'от', 'т ', ' с', 'си', 'ид', 'де', 'ел')

ce = CharNgramsExtractor(n=3, lowercase=True)
ce.extract(text)[:6]
# ('кот', 'от ', 'т с', ' си', 'сид', 'иде')

CharNgramsExtractor(n=3, lowercase=True, within_words=True).extract(text)
# ('кот', 'сид', 'иде', 'дел', 'окн', 'кне', 'пёс', 'пол', 'олу')

get_most_common

Возвращает список самых частых N-грамм последнего извлечения.

Параметр Тип По умолчанию Описание
n int 10 Количество N-грамм

Пример

ce = CharNgramsExtractor(n=3, lowercase=True)
ce.extract(text)
ce.get_most_common(2)
# [(' на', 2), ('на ', 2)]