Язык программирования Python

Подсчет частоты слов в файле с помощью Python

Вы когда-нибудь задумывались, есть ли быстрый способ узнать, чему посвящен тот или иной документ, какая тематика?

Предлагаю вам один простой прием.

Составьте список слов, упоминающихся в документе, а затем проверьте, сколько раз встречалось каждое слово (его частоту).

Таким образом, мы будем иметь небольшое представление о том, о чем идет речь. Как минимум верхнеуровнево.

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

Предположим, что у вас есть некий файл text.txt.

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

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

В данной статье мы будем использовать их для создания выборки слов.

Реализация программы

Первое, что нам нужно сделать, это сохранить текст из файла в строковую переменную.

document_text = open('test.txt', 'r') text_string = document_text.read()
Code language: JavaScript (javascript)

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

text_string = document_text.read().lower()

Давайте напишем наше регулярное выражение. Его функция заключается в возврате всех слов, длина которых находится в заданном диапазоне. Для данного примера и чтобы избавиться от таких слов как “на”, “от”, “в и пр., мы дадим диапазон от 3 до 15 символов. Регулярное выражение для такого шаблона будет выглядеть следующим образом:

b[а-я]{3,15}b

b означает ограничение на количество символов.

Регулярное выражение можно реализовать следующим образом:

match_pattern = re.search(r'b[а-я]{3,15}b', text_string)
Code language: JavaScript (javascript)

Поскольку мы хотим перебирать все слова в документе, мы можем использовать функцию findall. На данном этапе мы хотим найти частоту каждого слова в документе. Здесь мы используем концепцию словарей Python, поскольку нам нужны пары ключ-значение, где ключ – это слово, а значение представляет собой частоту появления слов в документе.

Если предположить, что мы объявили пустой словарь frequency = {}, то реализация этого будет выглядеть следующим образом:

for word in match_pattern: count = frequency.get(word,0) frequency[word] = count + 1

Теперь мы можем смотреть наши ключи с помощью:

frequency_list = frequency.keys()

Чтобы получить все слова и их частоту (количество раз, когда они встречаются в текстовом файле), мы можем сделать следующее:

for words in frequency_list: print words, frequency[words]
Code language: CSS (css)

Давайте соберем все месте.

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

В как это будет выглядеть:

import re import string frequency = {} document_text = open('test.txt', 'r') text_string = document_text.read().lower() match_pattern = re.findall(r'b[a-z]{3,15}b', text_string) for word in match_pattern: count = frequency.get(word,0) frequency[word] = count + 1 frequency_list = frequency.keys() for words in frequency_list: print words, frequency[words]
Code language: JavaScript (javascript)

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

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