Python: Подсчет слов в строке или файле
В этом учебнике вы узнаете, как использовать Python для подсчета количества слов и частот слов как в строке, так и в текстовом файле. Умение считать слова и частоты слов — это полезный навык. Например, знание того, как это делать, может быть важно в алгоритмах машинного обучения для классификации текста.
К концу этого учебника вы узнаете:
Как подсчитать количество слов в строке
Как подсчитать количество слов в текстовом файле
Как вычислять частоты слов с использованием Python
Содержание
Подсчет количества слов в Python с использованием
split()
Подсчет количества слов в Python с использованием Regex
Вычисление частот слов в Python
Заключение
Дополнительные ресурсы
Чтение текстового файла в Python
Процессы подсчета слов и вычисления частот слов, показанные ниже, одинаковы для строки и для всего текстового файла. Поэтому в этом разделе кратко описывается, как читать текстовый файл в Python.
Если вы хотите получить более подробное руководство по чтению текстового файла в Python, ознакомьтесь с этим учебником. Вот быстрый пример кода, который можно использовать для загрузки содержимого текстового файла в строку Python:
# Чтение текстового файла в Python
file_path = '/Users/datagy/Desktop/sample_text.txt'
with open(file_path) as file:
text = file.read()
Я рекомендую ознакомиться с учебником, чтобы узнать, почему и как работает этот подход. Однако, если вы спешите, просто знайте, что этот процесс открывает файл, читает его содержимое и затем закрывает файл.
Подсчет количества слов в Python с использованием split()
split()
Один из самых простых способов подсчитать количество слов в строке Python — использовать функцию split()
. Функция split()
выглядит следующим образом:
# Понимание функции split()
str.split(
sep=None # Разделитель для разделения
maxsplit=-1 # Количество разделений
)
По умолчанию Python будет рассматривать последовательности пробелов как единый разделитель. Это означает, что если в нашей строке было несколько пробелов, они будут рассматриваться как единый разделитель. Давайте посмотрим, что возвращает этот метод:
# Разделение строки с помощью .split()
text = 'Welcome to datagy! Here you will learn Python and data science.'
print(text.split())
# Возвращает: ['Welcome', 'to', 'datagy!', 'Here', 'you', 'will', 'learn', 'Python', 'and', 'data', 'science.']
Мы видим, что метод теперь возвращает список элементов. Поскольку мы можем использовать функцию len()
для подсчета количества элементов в списке, мы можем создать подсчет слов. Давайте посмотрим, как это выглядит:
# Подсчет слов с помощью .split()
text = 'Welcome to datagy! Here you will learn Python and data science.'
print(len(text.split()))
# Возвращает: 11
Подсчет количества слов в Python с использованием Regex
Еще один простой способ подсчитать количество слов в строке Python — использовать библиотеку регулярных выражений re. Библиотека включает функцию findall()
, которая позволяет искать различные шаблоны строк.
Поскольку мы можем использовать регулярные выражения для поиска шаблонов, сначала нужно определить наш шаблон. В этом случае мы хотим шаблоны алфавитно-цифровых символов, разделенных пробелами.
Для этого мы можем использовать шаблон \w+
, где \w
представляет любой алфавитно-цифровой символ, а +
обозначает одно или несколько вхождений. Как только шаблон встречает пробел, например, пробел, он останавливает шаблон там.
Давайте посмотрим, как мы можем использовать этот метод для создания подсчета слов с использованием библиотеки регулярных выражений re:
# Подсчет слов с использованием регулярных выражений
import re
text = 'Welcome to datagy! Here you will learn Python and data science.'
print(len(re.findall(r'\w+', text)))
# Возвращает: 11
Вычисление частот слов в Python
Для вычисления частот слов мы можем использовать либо класс defaultdict
, либо класс Counter
. Частоты слов представляют, как часто определенное слово встречается в тексте.
Использование defaultdict для вычисления частот слов в Python
Давайте посмотрим, как мы можем использовать defaultdict
для вычисления частот слов в Python. Класс defaultdict
расширяет обычный словарь Python, предоставляя полезные функции для инициализации отсутствующих ключей.
Благодаря этому мы можем пройтись по тексту и подсчитать количество вхождений каждого слова. Давайте посмотрим, как мы можем использовать его для создания частот слов для данной строки:
# Создание частот слов с использованием defaultdict
from collections import defaultdict
import re
text = 'welcome to datagy! datagy will teach data. data is fun. data data data!'
counts = defaultdict(int)
for word in re.findall(r'\w+', text):
counts[word] += 1
print(counts)
# Возвращает:
# defaultdict(<class 'int'>, {'welcome': 1, 'to': 1, 'datagy': 2, 'will': 1, 'teach': 1, 'data': 5, 'is': 1, 'fun': 1})
Давайте разберем, что мы сделали:
Мы импортировали как функцию
defaultdict
, так и библиотеку reМы загрузили текст и создали экземпляр
defaultdict
с использованием функцииint
Затем мы прошли по каждому слову в списке слов и добавили одно для каждого вхождения
Использование Counter для создания частот слов в Python
Другой способ сделать это — использовать класс Counter
. Преимущество этого подхода заключается в том, что мы можем легко определить самое частотное слово. Давайте посмотрим, как мы можем использовать этот подход:
# Создание частот слов с использованием Counter
from collections import Counter
import re
text = 'welcome to datagy! datagy will teach data. data is fun. data data data!'
counts = Counter(re.findall(r'\w+', text))
print(counts)
# Возвращает:
# Counter({'data': 5, 'datagy': 2, 'welcome': 1, 'to': 1, 'will': 1, 'teach': 1, 'is': 1, 'fun': 1})
Давайте разберем, что мы сделали:
Мы импортировали необходимые библиотеки и классы
Мы передали результирующий список из функции
findall()
в классCounter
Мы напечатали результат этого класса
Одним из преимуществ этого подхода является то, что мы можем легко найти самое частотное слово, используя функцию .most_common()
. Эта функция возвращает отсортированный список кортежей, упорядочивая элементы от самого частого к наименее частому. Благодаря этому мы можем просто получить доступ к 0-му индексу, чтобы найти самое частое слово:
# Поиск самого частого слова
from collections import Counter
import re
text = 'welcome to datagy! datagy will teach data. data is fun. data data data!'
counts = Counter(re.findall(r'\w+', text))
print(counts.most_common()[0])
# Возвращает:
# ('data', 5)
Заключение
В этом учебнике вы узнали, как создавать подсчеты слов и частоты слов с использованием Python. Вы узнали несколько различных способов подсчета слов, включая использование метода .split()
и библиотеки re. Затем вы узнали различные способы создания частот слов с использованием defaultdict
и Counter
. Используя метод Counter,
вы смогли найти самое частое слово в строке.
Дополнительные ресурсы
Чтобы узнать больше о связанных темах, ознакомьтесь с учебниками ниже:
Python Defaultdict: Обзор и примеры
Python: Подсчет количества вхождений в списке (6 способов)
Python: Подсчет количества вхождений в строке (4 способа!)
Python re: Официальная документация
Last updated