Например, мы хотим определить частоту слов в тексте. В Python есть стандартная библиотека collections, она предоставляет нам очень хороший способ отслеживать частоты слов, с помощью специального объекта collections.Counter.
Объект collections.Counter не только отслеживает частоты, но и предоставляет некоторые специальные методы для извлечения наиболее распространенных записей.
Пример:
>>> txt = "Далеко-далеко за словесными горами в стране гласных и согласных живут рыбные тексты. Вдали от всех живут они в буквенных домах на берегу Семантика большого языкового океана. Маленький ручеек Даль журчит по всей стране и обеспечивает ее всеми необходимыми правилами."
>>> from collections import Counter
>>> counts = Counter(txt.split())
>>> counts
Counter({'в': 2, 'стране': 2, 'и': 2, 'живут': 2, 'Далеко-далеко': 1, 'за': 1, 'словесными': 1, 'горами': 1, 'гласных': 1, 'согласных': 1, 'рыбные': 1, 'тексты.': 1, 'Вдали': 1, 'от': 1, 'всех': 1, 'они': 1, 'буквенных': 1, 'домах': 1, 'на': 1, 'берегу': 1, 'Семантика': 1, 'большого': 1, 'языкового': 1, 'океана.': 1, 'Маленький': 1, 'ручеек': 1, 'Даль': 1, 'журчит': 1, 'по': 1, 'всей': 1, 'обеспечивает': 1, 'ее': 1, 'всеми': 1, 'необходимыми': 1, 'правилами.': 1})
Сортируем по частоте по убыванию:
>>> counts.most_common()
[('в', 2), ('стране', 2), ('и', 2), ('живут', 2), ('Далеко-далеко', 1), ('за', 1), ('словесными', 1), ('горами', 1), ('гласных', 1), ('согласных', 1), ('рыбные', 1), ('тексты.', 1), ('Вдали', 1), ('от', 1), ('всех', 1), ('они', 1), ('буквенных', 1), ('домах', 1), ('на', 1), ('берегу', 1), ('Семантика', 1), ('большого', 1), ('языкового', 1), ('океана.', 1), ('Маленький', 1), ('ручеек', 1), ('Даль', 1), ('журчит', 1), ('по', 1), ('всей', 1), ('обеспечивает', 1), ('ее', 1), ('всеми', 1), ('необходимыми', 1), ('правилами.', 1)]
или можно так:
>>> sorted(counts.items(), key=lambda pair: pair[1], reverse=True)
[('в', 2), ('стране', 2), ('и', 2), ('живут', 2), ('Далеко-далеко', 1), ('за', 1), ('словесными', 1), ('горами', 1), ('гласных', 1), ('согласных', 1), ('рыбные', 1), ('тексты.', 1), ('Вдали', 1), ('от', 1), ('всех', 1), ('они', 1), ('буквенных', 1), ('домах', 1), ('на', 1), ('берегу', 1), ('Семантика', 1), ('большого', 1), ('языкового', 1), ('океана.', 1), ('Маленький', 1), ('ручеек', 1), ('Даль', 1), ('журчит', 1), ('по', 1), ('всей', 1), ('обеспечивает', 1), ('ее', 1), ('всеми', 1), ('необходимыми', 1), ('правилами.', 1)]
Получаем ТОП-3 самых частотных слов:
>>> counts.most_common(3)
[('в', 2), ('стране', 2), ('и', 2)]
Получаем ТОП-3 самых непопулярных, редких слов:
>>> counts.most_common()[:-4:-1]
[('правилами.', 1), ('необходимыми', 1), ('всеми', 1)]
Получим частоту в тексте слова "стране":
>>> counts['стране']
2