К счастью, я решил не усложнять.
предыстория
Еще один день, еще один портфельный проект в 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% контента)