python's Introduction
python's People
python's Issues
Избавиться от дублирования кода
https://github.com/DmitriiP1/python/blob/56846ed6b88f1d20bed0d518e1844ba2e921fd39/train.py#L56-L60
Повторение двух строчек кода, содержащих определенную и одинаковую логику - это плохо. Нужно избавиться от него
Добавть main
Нужно добавить main, чтобы можно было использовать функции из твоего скрипта
Изменить алгоритм выбора слова
Такого варианта не было в условии задачи (и это не даст тебе настоящий рандом, основанный на частотах). Используй один из вариантов из условия задачи
Изменить стиль комментариев к функциям
https://github.com/DmitriiP1/python/blob/56846ed6b88f1d20bed0d518e1844ba2e921fd39/train.py#L32-L34
Комментарий с описанием функции лучше писать после объявления в стиле:
def foo():
"""My best function"""
pass
Потому что потом такие комментарии всплывают как подсказки в текстовых редакторах
Изменить обработку модели
В словаре можно хранить tuple, не нужно все время разделять строку и объединять обратно. И если ты так делаешь, то как минимум используй format
Убрать переименование переменной
https://github.com/DmitriiP1/python/blob/56846ed6b88f1d20bed0d518e1844ba2e921fd39/train.py#L43
Зачем тебе тут новая переменная, да еще и с таким названием?
Всегда возвращать измененные аргументы
В питоне поведение, когда твоя переменная меняется на месте - контринтуитивно, потому что все аргументы передаются по значению. Поэтому принято все измененные значения возвращать, то есть функции, которые ничего не возвращают - это очень большая редкость. Избавься от них
Заменить на None
https://github.com/DmitriiP1/python/blob/56846ed6b88f1d20bed0d518e1844ba2e921fd39/generate.py#L63
Не используй такие константы, особенно учитывая, что это валидное слово, которое могло встретиться в текстах. Лучше в этом случае использовать None
Использовать возможности модуля collections
https://github.com/DmitriiP1/python/blob/56846ed6b88f1d20bed0d518e1844ba2e921fd39/train.py#L56-L57
Почитай про модуль и в идеале надо избавиться от цикла
Переименовать параметр
https://github.com/DmitriiP1/python/blob/56846ed6b88f1d20bed0d518e1844ba2e921fd39/train.py#L70-L72
dir - это зарезервированное ключевое слово, не нужно его переименовывать. Назови переменную по-другому
Убрать цикл при записи в файл
Убрать артефакты
Расширить help
Представь, что тебе прислали код и ты запускаешь --help, чтобы понять что это и как им пользоваться, пока это не очень понятно.
Избавиться от глобальных переменных
https://github.com/DmitriiP1/python/blob/56846ed6b88f1d20bed0d518e1844ba2e921fd39/train.py#L45
На самом деле данная переменная не является какой-то действительно глобальной. По смыслу она просто аргумент твоей функции
Вынести $ в отдельную глобальную константу или конфиг
Ты в обоих файлах используешь служебный символ $. Лучше всего сделать его общей глобальной переменной для обоих скриптов, чтобы при необходимости изменить этот символ только в одном месте
Добавить try/except или with
https://github.com/DmitriiP1/python/blob/56846ed6b88f1d20bed0d518e1844ba2e921fd39/train.py#L26
Нужно добавить try/except вокруг всего остального кода, либо (что лучше) во время записи модели в файл использовать with
Добавить описание скриптов
https://github.com/DmitriiP1/python/blob/56846ed6b88f1d20bed0d518e1844ba2e921fd39/train.py#L1
Нужно добавить небольшое описание всего скрипта, включая автора, версию и все в этом духе. Аналогично во втором файле.
Исправить логическую ошибку в обработке файлов
Ты неправильно обрабатываешь файлы, точнее неверно записываешь результат в модель. У тебя в разных файлах могут встречаться одинаковые пары слов и не нужно их записывать несколько раз в модель с разными значениями частоты
Ускорить запись модели в файл
https://github.com/DmitriiP1/python/blob/56846ed6b88f1d20bed0d518e1844ba2e921fd39/train.py#L62-L63
Циклы это медленно + ты сам реализуешь логику записи + она плохо реализована (как минимум надо было использовать format). Для сохранения модели есть стандартные методы (pickle, json, csv), используй их
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.