@@ -9,6 +9,8 @@ class BasicStats():
99
1010 Аргументы:
1111 source (str|Doc): Источник данных (строка или объект Doc)
12+ sents_tokenizer (func|Pattern): Токенизатор для предложений (функция или регулярное выражение)
13+ words_tokenizer (func|Pattern): Токенизатор для слов (функция или регулярное выражение)
1214
1315 Атрибуты:
1416 c_chars (dict[int, int]): Распределение слов по количеству символов
@@ -31,15 +33,15 @@ class BasicStats():
3133 ValueError: Если анализируемый текст является пустой строкой
3234 """
3335
34- def __init__ (self , source ):
35- if isinstance (source , Doc ):
36+ def __init__ (self , source , sents_tokenizer = None , words_tokenizer = None ):
37+ if isinstance (source , Doc ):
3638 text = source .text
3739 sents = source .sents
3840 words = tuple (word .text for word in source )
3941 elif isinstance (source , str ):
4042 text = source
41- sents = extract_sents (text )
42- words = tuple (extract_words (text , use_lexemes = False ))
43+ sents = extract_sents (text , tokenizer = sents_tokenizer )
44+ words = tuple (extract_words (text , tokenizer = words_tokenizer , use_lexemes = False ))
4345 else :
4446 raise TypeError ("Некорректный источник данных" )
4547 if not text :
@@ -96,7 +98,8 @@ def print_stats(self):
9698
9799if __name__ == "__main__" :
98100 from pprint import pprint
101+ import re
99102 text = "Существуют три вида лжи: ложь, наглая ложь и статистика"
100- bs = BasicStats (text )
103+ bs = BasicStats (text , words_tokenizer = re . compile ( r'[^\w]+' ) )
101104 pprint (bs .get_stats ())
102105 bs .print_stats ()
0 commit comments