Небольшой проект на PyTorch для определения раскладки текста по фразе или слову.
Модель LayoutDetectC1 классифицирует вход как один из классов:
SYMBOL— символы/прочееRUS— русский текстENG— английский текстRUS_ON_ENG— русский текст на английской раскладкеENG_ON_RUS— английский текст на русской раскладке
- Python 3.10+
torch
- Убедитесь, что файл модели лежит по пути
out/LayoutDetectC1.pth. - Запустите:
python main.pyПосле запуска программа попросит ввести фразу и выведет предсказанный класс и список классов по словам.
Запуск:
python api.pyПримеры запросов:
curl -X POST http://127.0.0.1:5000/word \
-H "Content-Type: application/json" \
-d '{"word":"ghbdtn"}'
curl -X POST http://127.0.0.1:5000/phrase \
-H "Content-Type: application/json" \
-d '{"phrase":"ghbdtn world"}'Enter phrase: ghbdtn world
Class: WordClass.ENG_ON_RUS
Values: [<WordClass.ENG_ON_RUS: 4>, <WordClass.ENG: 2>]
Текст приводится к нижнему регистру, обрезается до 64 символов и кодируется как one-hot по символам. Затем свёрточная сеть делает предсказание для каждого слова, а итоговый класс фразы берётся как медиана по словам.
main.py— точка входаmodel.py— модель и логика классификации