Вы когда-нибудь задумывались, есть ли быстрый способ узнать, чему посвящен тот или иной документ, какая тематика?
Предлагаю вам один простой прием.
Составьте список слов, упоминающихся в документе, а затем проверьте, сколько раз встречалось каждое слово (его частоту).
Таким образом, мы будем иметь небольшое представление о том, о чем идет речь. Как минимум верхнеуровнево.
Давайте посмотрим, как можно перечислить уникальные слова в текстовом файле и проверить частоту каждого из них.
Предположим, что у вас есть некий файл 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)