Here's the translation of your content into Russian:
Вот решение Python для создания словаря уникальных слов из текстового файла:
import re
def create_unique_word_dict(file_path):
with open(file_path, 'r') as f:
text = f.read()
# Переводим в нижний регистр и удаляем пунктуацию
text = re.sub(r'[^\w\s]', '', text).lower()
# Разбиваем на слова
words = text.split()
# Создаем множество уникальных слов
unique_words = set(words)
return dict((word, 1) for word in unique_words)
# Пример использования:
file_path = 'example.txt'
unique_word_dict = create_unique_word_dict(file_path)
print(unique_word_dict)
Вот объяснение кода:
Мы открываем текстовый файл с помощью open и читаем его содержимое в строку с помощью read.
Мы используем регулярные выражения для перевода текста в нижний регистр и удаления пунктуации с помощью re.sub. Паттерн [^\w\s] matches любое символ, которое не является буквенным символом (\w) или пробелом (\s). Мы заменяем эти символы пустой строкой, эффективно удалив их.
Мы разбиваем текст на отдельные слова с помощью метода split без аргументов, который разбивает на пробелах по умолчанию.
Мы создаем множество уникальных слов из списка слов с помощью конструктора set. Множество - это неупорядоченная коллекция уникальных элементов.
Наконец, мы преобразуем множество в словарь с помощью генератора выражения, который создает пары ключ-значение для каждого уникального слова как для ключа и значение 1.
Время выполнения этого алгоритма равно O(n), где n - количество слов в текстовом файле. Это потому что мы только нужно проходить текст один раз, чтобы создать список слов, а затем снова, чтобы создать множество уникальных слов. Операция set имеет среднее время выполнения O(1) для поиска, поэтому это доминирует общее время выполнения.
В вашем примере обработка 3-мегабайтового файла с ~63,000 уникальными словами занимает около 3 секунд. Это потому что операция set относительно быстро для больших множеств, и накладные расходы на создание словаря являются незначительными.
Обратите внимание, если вы хотите считать частоту каждого слова вместо создания множества уникальных слов, вы можете модифицировать код следующим образом:
word_freq = dict((word, words.count(word)) for word in unique_words)
Это создаст словарь, где каждый ключ - это уникальное слово, а соответствующее значение - частота этого слова в тексте.
Описание алгоритма составления словаря всех уникальных слов, встречающихся в текстовом файле, с тестированием на обработку файла объемом 3 Мб.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS