Comments 7
Как вообще можно было перепутать 悔 с 梅? :)
Спасибо за статью.
Поделюсь своим опытом. Сейчас работаю над похожим проектом, в рамках которого нужно в базе найти изображение, наиболее похожее на заданное. Сначала пробовал использовать нейросеть (учил сам, показывая ей сдвинутые на несколько пикселей друг относительно друга фрагменты изображения), был достигнут неплохой результат.
Потом появилась идея минимизировать сумму модулей разностей пикселей изображений. Т.е. прогнать в цикле все изображения из базы и для них посчитать эту метрику. Работает быстрее нейросети и убирает необходимость тянуть pytorch за приложением. Было бы интересно применить этот алгоритм к вашей задаче. У меня размер картинок и их количество примерно такое же как в статье.
А так метод с предобученными сетями для image feature extraction интересный, но как будто бы для одноцветных изображений оверкилл. Можете подсказать сколько у вас модель весит?
Модель от timm (PyTorch Image Models) 304M параметров, resnet -- 23 M, обе fp32, так что первая получается ~1,22Gb, вторая ~94Mb. С одной стороны они обе оверкилл. Если подходить чисто теоретически, то учитывая, что в китайском выделяют максимум 214 ключей 256-мерного вектора должно быть вот прям с запасом чтоб очень хорошо и группировать и сепарировать все множество иероглифов. Но у timm размерность -- 1024, у resnet -- 2048. Все эти лишние измерения утяжеляют базу, замедляю работу алгоритма sqlite_vec. С другой стороны использование предобученных сетей избавило меня от такого количества работы, что я готов потерпеть лишние миллисекунды, пока ворочается неэффективная реализация :).
По поводу минимизации суммы модулей разности между пикселями изображения вот ничего особо не скажу. Я когда-то давно читал книжки про классическую обработку изображений (еще времен до нейросетей, с поисками границ объектов или размытием при помощи матриц, то что в библиотеке PIL сейчас и реализовано), но это не мой профиль. Обработка последовательностей (в том числе текстов), мне ближе.
Учусь говорить, а не писать и читать в duolingo полтора года для себя. Писать пиньином, если что. Читать - смартфоном.
Мои приоритеты в порядке убывания: читать, слушать, писать (в том числе от руки), говорить. В duolingo у меня был страйк в 893 дня. Но после окончания курса я продержался месяца два, потом гонять по кругу одни и те же предложения надоело. Сейчас работаю с книгами, их озвучкой и карточками. В anki у меня больше 4000 активных карточек уже крутиться. Поэтому и возникло желание начать быстро находить похожие иероглифы без надежды на свою не очень надежную память. Находить слова, включающие какой-то знак намного проще.
Не учите иероглифы по отдельности.
Учите их в контексте с другими иероглифами: 悔 - 後悔 - сожалеть;梅 - 梅雨 - сезон "сливовых" дождей в Азии и так далее.
для почти всех слов есть свои контексты в предложениях и по одиночке их увидеть почти невозможно, так что постижение языка почти всегда длительная практика и письма, и чтения, и общения с живыми людьми, так что желаю вам терпения и удачи в этом непростом деле!
Спасибо. При изучении языка все средства хороши. И контекст часто выручает. Но вот когда встречаешь новый иероглиф, похожий на старый, мозг упорно хочет видеть уже известный знак. И надо новый знак заучивать и в составе слов, и как писать. А как его заучивать, если он все время из памяти хочет сбежать? Поэтому и пишешь привычное 报, а потом выбираешь из похожих, тот который пытался запомнить недавно и снова сбрасываешь прогресс изучения для него и слов с ним в карточках anki.
Ищем похожие иероглифы при помощи искусственного интеллекта