Частота слов в расшифровке через Python Counter: как получить список для проверки
Подсчёт русских слов в TXT через collections.Counter: правила выделения, стоп-слова, словоформы и контрольный пример. Почему частота не равна важности темы.
Оставьте для подсчёта именно речь
Частотный список полезен как первый просмотр длинной расшифровки: увидеть повторяющиеся формы, заметить возможную ошибку распознавания или выбрать слова для поиска. Он особенно удобен, когда нужно разобраться в одном файле, а полноценный анализ ещё не начат.
Подготовьте speech.txt с текстом реплик. Удалите из рабочей копии повторяющиеся подписи говорящих и служебные заголовки, если не хотите считать их слова. Сохраняйте исходник отдельно и запишите, какие части исключили. Иначе имя участника или слово «Спикер» может оказаться среди самых частых единиц.
Получить основу можно через расшифровку аудио. Сначала проверьте ключевые имена и термины по записи: счётчик аккуратно посчитает и систематическую ошибку, если она осталась в тексте.
Определите, что считается словом
Учебный код ниже выделяет последовательности русских букв и сохраняет дефис между ними. Цифры, латинские обозначения и смешанные слова он не включает. Это осознанное ограничение примера, а не универсальное определение слова для всех интервью.
Копия приводится к NFC и casefold. Поэтому «Срок» и «срок» считаются вместе. Слова «срок», «срока» и «сроки» останутся разными формами; «е» и «ё» тоже не объединяются этим правилом. Для трудностей с составом символов пригодится разбор нормализации Unicode.
Стоп-слова исключаются только из selected; общее число tokens выводится отдельно. Список исключений здесь маленький и учебный. Не удаляйте отрицание «не» автоматически: его наличие способно менять смысл, даже если частотность сама по себе не показывает этого.
Запустите Counter и проверьте короткий пример
Сохраните код как count_words.py рядом с speech.txt и выполните python count_words.py или python3 count_words.py — в зависимости от Вашей системы. Дополнительные библиотеки для этого примера не нужны. Counter считает элементы последовательности, а most_common(20) выбирает до двадцати наиболее частых.
from collections import Counter
from pathlib import Path
import re
import unicodedata
text = Path("speech.txt").read_text(encoding="utf-8-sig")
search_copy = unicodedata.normalize("NFC", text).casefold()
tokens = re.findall(r"[а-яё]+(?:-[а-яё]+)*", search_copy)
stop_words = {"и", "в", "на", "а", "но", "это"}
selected = [word for word in tokens if word not in stop_words]
counts = Counter(selected)
print("Всего выделено слов:", len(tokens))
print("После исключений:", len(selected))
for word, count in counts.most_common(20):
print(word, count)
Для контроля используйте вымышленный текст: «Срок, срок и сроки. План — план». По правилам примера получается срок: 2, план: 2, сроки: 1; «и» исключено. При равной частоте не воспринимайте порядок в списке как дополнительный показатель важности.
Затем запустите код на рабочей копии. Проверьте несколько самых частых слов вручную. Если вверху списка остались служебные подписи, исправьте подготовку входа, а не делайте вывод, что разговор посвящён именам участников.
Используйте список как навигацию к репликам
Частое слово может быть частью стандартного вопроса интервьюера или повторяющегося вводного оборота. Редкое слово способно относиться к единственной, но важной договорённости. Не называйте тему главной только потому, что её обозначение встретилось чаще.
Возьмите интересующую форму и найдите контексты в тексте. Для большого TXT-архива подойдёт поиск через SQLite FTS5. Прочитайте соседние реплики и отметьте, кто говорит и на какой вопрос отвечает.
При сравнении интервью учитывайте длину, состав говорящих и одинаковые правила подготовки. Двадцать употреблений в двухчасовой записи и десять в десятиминутной нельзя оценивать только по абсолютному числу. Даже доля слов не заменяет содержательного анализа и проверки по аудио.
Учебный пример: формы и значения
Вымышленный короткий текст показывает, какие единицы объединяются, а какие сохраняются отдельно.
| Фрагмент | Счётчик | Что учитывать |
|---|---|---|
| Срок, срок | срок: 2 | Регистр объединён |
| сроки | сроки: 1 | Другая словоформа |
| План — план | план: 2 | Тире не стало словом |
Если нужен подсчёт понятий, сначала определите словарь вариантов и проверьте неоднозначные употребления. Простое суммирование похожих слов может смешать разные значения.
Паспорт частотного списка
Исходный файл: [имя и версия] Исключённые служебные части: [список] Правило слова: [описание] Стоп-слова: [точный список] Нормализация: [NFC + casefold] Контрольный пример: [текст и результат] Форма для проверки: [слово] Контексты и таймкоды: [места] Вывод после чтения: [наблюдение]
Частые вопросы
Counter объединяет «срок» и «сроки»?
Нет. В этом примере это разные формы. Для их объединения нужно отдельное правило.
Частое слово означает главную тему?
Нет. Частота зависит от вопросов, повторов и структуры речи. Проверьте контекст.
Почему код не считает английские слова?
В учебном регулярном выражении указаны русские буквы. Изменяйте правило под задачу и проверяйте результат.
Можно сравнить две записи по первым двадцати словам?
Это только начальное наблюдение. Нужны сопоставимые правила подготовки, учёт длины и чтение контекстов.