Как узнать сколько раз встречается слово в тексте
Перейти к содержимому

Как узнать сколько раз встречается слово в тексте

  • автор:

Подсчет Частоты Повторения Слова в Файле с Помощью Python

Abder-Rahman Ali

Abder-Rahman Ali Last updated Jul 1, 2016

Вы когда нибудь задавались вопросом, как быстро определить основную тему какого-то документа? О чем в нем говорится больше всего? Позвольте я вам подскажу. Составьте список уникальных слов упоминающихся в документе, и подсчитайте сколько раз каждое слово упоминалось (частоту). Это покажет вам, чему, в первую очередь, посвящен документ. Но сделать это в ручную не просто, поэтому нам нужно какое-то средство для автоматизации, не так ли?

Да, автоматизировав процесс, справится с такой задачей гораздо проще. Давайте посмотрим, каким образом мы можем составить список слов из файла и посчитать частоту их употребления, используя Python.

Тестовый Файл

В этом уроке, мы будем использовать файл test.txt в качестве тестового. Предлагаю вам его закачать, прямо сейчас, только не открывайте его! Давайте лучше поиграем немного. Текст в этом файле из одного из моих уроков на Envato Tuts+. Давайте попробуем угадать, на основании частотности словоупотребления, из какого урока был взят этот текст.

Начнем нашу игру!

Регулярные Выражения

Так как мы собираемся применять шаблоны в нашей игре, нам нужно воспользоваться регулярными выражениями (regex). Если «регулярные выражения» для вас незнакомый термин, посмотрите определение из Википедии:

Если вы хотите узнать больше о регулярных выражениях, прежде чем продолжать этот урок, вы можете посмотреть тьюториал Регулярные выражения в Python, и потом вновь вернуться к этому уроку.

Пишем Программу

Давайте начнем шаг за шагом работать над нашей программой. Первое, что мы должны сделать — сохранить текстовый файл в виде строковой переменной.

Теперь, давайте сделаем все буквы в нашем документе строчными, что бы нам легче было применить регулярное выражение, используем при этом функцию lower():

Давайте теперь запишем регулярное выражение, которое вернет нам все слова, количество букв в которых лежит в диапазоне [3-15] . То, что мы начнем с 3 , поможет отсеять не интересные для частотного анализа слова такие как и, с, не, а и другие, а слова длинна которых больше 15 букв, могут быть неправильными. Регулярное выражение для такого случая, запишется следующим образом:

https://amdy.su/wp-admin/options-general.php?page=ad-inserter.php#tab-8

\b относится к границам слова. Что бы узнать об этом побольше, посмотрите этот урок.

Поиск на основе данного регулярного выражения может быть описан таким кодом:

Так как мы хотим пройтись по всем словам в документа, мы должны использовать функцию findall :

Мы хотели бы определить частоту с которой каждое слово повторяется в документе. В этом случае нам удобно использовать Словари Python, так как нам нужны пары ключ-значение , где ключ — это слово, а значение — представляет частоту появления слова в документе.

Допустим мы инициировали пустой словарь frequency = < >, сказанное выше можно записать следующим образом:

Вот так используются ключи:

И наконец, что бы получить слово и его частоту (количество упоминаний в тексте), мы должны сделать следующее:

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

Собираем Все Вместе

Обсудив все детали нашего кода, давайте взглянем, что у нас в итоге получилось:

Если вы запустите программу, у вас должно получится что-то вроде этого:

Mac OS X terminalMac OS X terminal Mac OS X terminal

Вернемся к нашей игре. Взгляните на частоту для слов, и скажите, о чем говорится в текстовом файле (текст для которого взят из моего другого урока по Python)?

Макрос для подсчета частоты упоминаемых слов

Мой начальник дал такое задание: нужно определить в разных документах частоту упоминаемых слов. Причем не отдельно выбранного слова, а именно сколько раз какое слово встречается. Если дадите готовое решение, буду очень благодарен.

Андрей, у меня есть нужный вам макрос с функцией. Но писал его не я, а по моей просьбе иноязычный товарищ (дело было в августе прошлого года). Вставляет в конце каждого упоминаемого слова в скобках количество его вхождений в тексте.

Правда, макрос вставляет и лишние символы (да и вообще, может быть избыточный код в нем). Просто скопируйте весь код в редактор VB для Word-а и запустите.

Если вы не знаете, как подключить к документу и применить эти макросы, изучите следующие заметки с сайта:

Поиск и подсчет найденных слов в большом текстовом файле.

Приветствую вас дорогие форумчани! У меня есть задача и для того чтобы решить ее я нуждаюсь в Вашей помощи. Работаю в debian, без использования графического интерфейса. Задача: Есть большой текстовый файл и нужно посчитать сколько раз встречаются определенные слова в тексте.

Сейчас объясню на примере, что бы было понятнее. Допустим есть такой текст "Команда ls для каждого имени каталога распечатывает список входящих в этот каталог файлов. Команда ls отображает список файлов. Этот список очень длинный. " Так вот мне нужно найти например слова "ls", "файлов", "список" и узнать сколько раз встречались в тексте эти слова. То есть результат должен быть примерно таким:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *