Подсчитываем частоту слов в тексте с Python и модулем re

Здравствуйте! Наверняка, многие сталкивались с проблемой определения содержания массивного текста, при невозможности прочесть его от начала и до конца. В таком случае, на помощь может прийти анализ частоты ключевых слов. И кстати, с помощью этого же подхода возможен массовый поиcк содержимого по файлам, о чем подробнее рассказывается в видеокурсе Написание лайфхаков на Python. В сегодняшней статье мы рассмотрим скрипт для подсчета частоты слов в тексте посредством Python и встроенных модулей re и collections.

import re
from collections import Counter

def word_frequency(text):
    # Очистка текста от знаков препинания и приведение к нижнему регистру
    cleaned_text = re.sub(r'[^ws]', '', text).lower()
    # Разделение текста на слова
    words = cleaned_text.split()
    # Фильтрация слов длиной менее трех символов
    words = [word for word in words if len(word) >= 3]
    # Подсчет частоты слов и их сортировка
    word_count = Counter(words)
    sorted_words = word_count.most_common()
    return sorted_words

# Пример текста для анализа
with open('words.txt', 'r', encoding='utf-8') as f:
    input_text = f.read()

# Обработка текста и вывод результатов
result = word_frequency(input_text)
for word, frequency in result:
    print(f'Word: {word}, Frequency: {frequency}')

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

Вариант применения. Допустим, у нас есть текстовый файл, содержащий отзывы о продукте или услуге. Мы загружаем этот текст в программу, и она проводит анализ. Мы получаем список слов, упорядоченных по их частоте встречаемости. Это позволяет нам легко выявить ключевые темы или понять, какие аспекты нашего продукта/услуги обсуждаются чаще всего. Таким образом, мы создали простейший анализатор текста на основе частоты упомянутых в нем слов, при помощи Python и регулярных выражений.

Источник