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: Официальная документация
Последнее обновление