Революция в чтении: новая технология для понимания английской литературы | 30 октября 2024 года, 22:46

Усовершенствовал свой конвертер EPUB для чтения сложных английских художественных текстов. В предыдущей версии я засылал в ChatGPT главы, и просил перевести в скобках сложные слова. Меня спросили в комментариях, а как определяются какие слова сложные. В общем, пока дочитал первую четверть книги в таком виде понял, что не все сложные слова ChatGPT считает за сложные. Включая очевидно сложные. И не переводит.

В итоге, я сделал новую версию. Визуально она отличается тем, что переводы теперь идут над словами. Это не разбивает предложения на куски, как это было в случае, когда перевод шел в скобках. Но это не все.

Изменен способ нахождения «сложных слов, требующих перевода». Она теперь оперирует списком из 300000 слов с частотой их использования в английском языке. Первые 3.5% этого отсортированного по частоте использования списка (подобрал эмпирически) теперь считаются несложными и перевода не требуют. Остальные — требуют. Технически у меня для каждого слова еще есть группа сложности 1-30, но к сожалению в Books нельзя выделять цветом.

Дальше слово нужно как-то перевести на русский. Чтобы не использовать для этого LLM, я нашел словарь Мюллера на 55954 слова. Слово, которое нужно перевести, переводится в нормальную форму, и ищется в словаре. Если находится, берется первое определение из словаря. К сожалению, первое не всегда верное, но в большинстве случаев ок. Если в словаре Мюллера не нашлось, система идет в LLM. Тут у меня есть две реализации — использование локальной LLAMA3 и использование OpenAI. Локальная очевидно медленнее и качество перевода хуже, но зато бесплатная. Есть отдельная система, которая контроллирует что перевела LLAMA3 и заставляет ее переделать, если она возвращает что-то непотребное (например, длинное или имеющее спецсимволы).

Кроме этого, для перевода через LLM системе сообщается еще контекст — предложение, в котором находится переводимое слово. Так перевод ближе к тексту. Все равно есть косяки мелкие, но в целом с ними можно жить.

Но даже со всем этим перевод через LLM низкого качества. В идеале, конечно, подключить еще другие словари, чтобы в случае, если не нашлось в Миллере, пробовались еще другие, и если не нашлось и в них, вот тогда уже LLM. У меня уже появился один, буду экспериментировать.

Если система помечает слишком много очевидных слов, я могу подправить один коэфициент, и частотная группа, из которой не переводятся слова, будет больше, и наверняка эти очевидные слова перестанут переводиться. Конечно, всегда есть слова из «редких», которые переводить не надо, потому что их перевод очевиден. Но научить скрипт отличать такие непросто, проще забить, оно нечасто случается.

Далее перевод выводится над словом. Для Books это тоже пляски с бубном, но в итоге заработало на iPad и ноутбуке. На телефоне, к сожалению, нужно чуть иначе делать, в итоге версия книжки для телефона и версия для iPad/компа будут разными. Ну это меня не очень напрягает, какая разница.

Оставьте комментарий