Извлечение предложений¶
SentsExtractor(tokenizer=None, min_len=0, max_len=0)
Класс для извлечения предложений из текста.
Исключения:
ParameterError- граница длины, которая не целое число, отрицательная граница, минимум больше максимума.
Класс расширяет SentsExtractor ядра anyTS крючком русского языка: его токенизатор по умолчанию, метод sentenize(text), - предложения сегментатора anySeg: строка без конечного знака (заголовок, пункт списка) и предложение после точки без пробела - отдельные предложения.
from ruts import SentsExtractor
text = "Не имей 100 рублей, а имей 100 друзей. Так говорил проф. Иванов... А вы?"
SentsExtractor().extract(text)
('Не имей 100 рублей, а имей 100 друзей.', 'Так говорил проф. Иванов...', 'А вы?')
Параметры¶
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
tokenizer |
Pattern / Callable |
None |
Токенизатор или регулярное выражение; по умолчанию метод sentenize |
min_len |
int |
0 |
Минимальная длина извлекаемого предложения в символах, 0 - без ограничения |
max_len |
int |
0 |
Максимальная длина извлекаемого предложения в символах, 0 - без ограничения |
Примечание
Регулярное выражение в роли токенизатора - разделитель для re.split. Пустая строка - перевод строки, необязательные пробельные символы и еще один перевод строки - завершает предложение любого токенизатора: текст сначала режется по пустым строкам и каждая часть отдается токенизатору, поэтому заголовок или абзац без конечного знака - отдельное предложение, как и часть без слов, например строка звездочек, которую статистики не считают. С краев предложений до проверки границ длины срезаются пробельные символы, а пустые предложения отбрасываются.
Примечание
В качестве токенизатора можно передать пайплайн spaCy: tokenizer=lambda text: (sent.text for sent in nlp(text).sents).
Методы¶
extract(text) извлекает предложения из текста.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
text |
str |
- | Строка текста |
Текст, который не строка, и токенизатор, который нельзя вызвать или который возвращает не строки, дают SourceTypeError.
import re
SentsExtractor().extract("Что нового\n\nБыстрый импорт\nМеньше ошибок\n\nСпасибо за внимание!")
SentsExtractor(tokenizer=re.compile(r", ")).extract("Не имей 100 рублей, а имей 100 друзей")
('Что нового', 'Быстрый импорт', 'Меньше ошибок', 'Спасибо за внимание!')
('Не имей 100 рублей', 'а имей 100 друзей')