Подсчет Частоты Повторения Слова в Файле с Помощью Python
Abder-Rahman Ali Last updated Jul 1, 2016
Вы когда нибудь задавались вопросом, как быстро определить основную тему какого-то документа? О чем в нем говорится больше всего? Позвольте я вам подскажу. Составьте список уникальных слов упоминающихся в документе, и подсчитайте сколько раз каждое слово упоминалось (частоту). Это покажет вам, чему, в первую очередь, посвящен документ. Но сделать это в ручную не просто, поэтому нам нужно какое-то средство для автоматизации, не так ли?
Да, автоматизировав процесс, справится с такой задачей гораздо проще. Давайте посмотрим, каким образом мы можем составить список слов из файла и посчитать частоту их употребления, используя Python.
Тестовый Файл
В этом уроке, мы будем использовать файл test.txt в качестве тестового. Предлагаю вам его закачать, прямо сейчас, только не открывайте его! Давайте лучше поиграем немного. Текст в этом файле из одного из моих уроков на Envato Tuts+. Давайте попробуем угадать, на основании частотности словоупотребления, из какого урока был взят этот текст.
Начнем нашу игру!
Регулярные Выражения
Так как мы собираемся применять шаблоны в нашей игре, нам нужно воспользоваться регулярными выражениями (regex). Если «регулярные выражения» для вас незнакомый термин, посмотрите определение из Википедии:
Если вы хотите узнать больше о регулярных выражениях, прежде чем продолжать этот урок, вы можете посмотреть тьюториал Регулярные выражения в Python, и потом вновь вернуться к этому уроку.
Пишем Программу
Давайте начнем шаг за шагом работать над нашей программой. Первое, что мы должны сделать — сохранить текстовый файл в виде строковой переменной.
Теперь, давайте сделаем все буквы в нашем документе строчными, что бы нам легче было применить регулярное выражение, используем при этом функцию lower():
Давайте теперь запишем регулярное выражение, которое вернет нам все слова, количество букв в которых лежит в диапазоне [3-15] . То, что мы начнем с 3 , поможет отсеять не интересные для частотного анализа слова такие как и, с, не, а и другие, а слова длинна которых больше 15 букв, могут быть неправильными. Регулярное выражение для такого случая, запишется следующим образом:
\b относится к границам слова. Что бы узнать об этом побольше, посмотрите этот урок.
Поиск на основе данного регулярного выражения может быть описан таким кодом:
Так как мы хотим пройтись по всем словам в документа, мы должны использовать функцию findall :
Мы хотели бы определить частоту с которой каждое слово повторяется в документе. В этом случае нам удобно использовать Словари Python, так как нам нужны пары ключ-значение , где ключ — это слово, а значение — представляет частоту появления слова в документе.
Допустим мы инициировали пустой словарь frequency = < >, сказанное выше можно записать следующим образом:
Вот так используются ключи:
И наконец, что бы получить слово и его частоту (количество упоминаний в тексте), мы должны сделать следующее:
Давайте в следующем разделе, соберем все вместе, и посмотрим, что у нас получится на выходе.
Собираем Все Вместе
Обсудив все детали нашего кода, давайте взглянем, что у нас в итоге получилось:
Если вы запустите программу, у вас должно получится что-то вроде этого:
Вернемся к нашей игре. Взгляните на частоту для слов, и скажите, о чем говорится в текстовом файле (текст для которого взят из моего другого урока по Python)?
Макрос для подсчета частоты упоминаемых слов
Мой начальник дал такое задание: нужно определить в разных документах частоту упоминаемых слов. Причем не отдельно выбранного слова, а именно сколько раз какое слово встречается. Если дадите готовое решение, буду очень благодарен.
Андрей, у меня есть нужный вам макрос с функцией. Но писал его не я, а по моей просьбе иноязычный товарищ (дело было в августе прошлого года). Вставляет в конце каждого упоминаемого слова в скобках количество его вхождений в тексте.
Правда, макрос вставляет и лишние символы (да и вообще, может быть избыточный код в нем). Просто скопируйте весь код в редактор VB для Word-а и запустите.
Если вы не знаете, как подключить к документу и применить эти макросы, изучите следующие заметки с сайта:
Поиск и подсчет найденных слов в большом текстовом файле.
Приветствую вас дорогие форумчани! У меня есть задача и для того чтобы решить ее я нуждаюсь в Вашей помощи. Работаю в debian, без использования графического интерфейса. Задача: Есть большой текстовый файл и нужно посчитать сколько раз встречаются определенные слова в тексте.
Сейчас объясню на примере, что бы было понятнее. Допустим есть такой текст "Команда ls для каждого имени каталога распечатывает список входящих в этот каталог файлов. Команда ls отображает список файлов. Этот список очень длинный. " Так вот мне нужно найти например слова "ls", "файлов", "список" и узнать сколько раз встречались в тексте эти слова. То есть результат должен быть примерно таким: