К счастью, я решил не усложнять.

предыстория

Еще один день, еще один портфельный проект в Codecademy. Речь идет о «базовой рекомендательной программе» на Python. В поисках большого набора данных для тестирования моей программы я обратился к любимому аниме-сериалу моего учителя ИКТ (ИКТ называется Информационно-коммуникационными технологиями и скорее связан с Codecademy CS102), номер 16 в «Списке аниме-сериалов по количеству эпизодов». , Один кусочек. Поскольку никто не должен пытаться смотреть их все, возникает необходимость в рекомендательной программе.

Получение набора данных

Вот первое серьезное препятствие: получение полного списка эпизодов. Оказывается, источники данных в Интернете копируют друг друга, и я не могу найти полный список для всех сезонов.

Таким образом, я просто извлек первую таблицу в Списках эпизодов One Piece — Википедия через Excel (а вы знали, что есть такая функция?) и поместил ее в файл csv для разбора.

Парсинг и поиск данных

Код в значительной степени говорит сам за себя. Он просто анализирует csv, чтобы избавиться от символов, связанных с форматированием, и преобразовать заголовок в удобочитаемую форму. Затем пользователь вводит ключевое слово и может выполнить поиск по заголовку.

Оптимизация

Второе препятствие: этот алгоритм довольно неэффективен. Время выполнения равно O(nm), где n — количество эпизодов, а m — длина заголовка. Нет четких путей оптимизации скорости кода, за исключением сумасшедших методов, таких как кэширование запроса на все основные символы в One Piece, считывание каждого нажатия клавиши перед нажатием клавиши ввода для частичного сужения поиска и т. д. Кроме того, сложность пространства по-прежнему слишком высок, так как содержимое CSV-файла помещается в словарь, а не выполняется построчная фильтрация.

Заключительные слова

Было весело, как всегда. Я закодировал это примерно за 30 минут, просто быстрый проект, ничего больше. Потребовались бы дни, если бы я занимался эффективностью или полнотой набора данных, чему я рад, что не сделал этого.

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

evnchn/one-piece-searcher (github.com)

Не стесняйтесь давать любые предложения относительно того, как ускорить алгоритм.

(также идите смотреть Убийцу Демонов, вместо того, чтобы смотреть 99% филлеров и 1% контента)