Anonymous
А ты сделал [username] или оставил свой val?
Alex
Спасибо щас гляну
Я вообще не тебе отвечал, но тем не менее.
Bubble jungle ✙
на том, на чем умеешь.
Я с горем пополам знаю только pyqt, у него очень кривые grid'ы и меня это выбесило. Мне спокойнее будет выучить новый язык и писать что-то красивое, чем на питоне пытаться вытянуть что-то с qt
Alex
кривые? правда?
Alex
может быть ты просто не осилил?
Bubble jungle ✙
Bubble jungle ✙
Возможно
Alex
Да кривые
пруфов конечно же не будет
Bubble jungle ✙
Но интерфейсы на нём меня не впечетляют
namor
а если в новом языке тож чо-то окажется кривым? )
Bubble jungle ✙
То что ты скинул про дорогой и качественный продукт — я бы не сказал что там заебись интерфейс
Roman
Стоп, почему это много?
Ну хочется быстрее :) Spacy делает полный разбор статьи про BDD с английской википедии за 0.5 секунды, а если добавить в pipeline мой фильтр - за 50 секунд. Ясно, что задача фильтрации мата - сложная, но разница на 2 порядка - это фигово.
Viktor
а тебе нужны рюшечки или ехать?
интерфейс должен быть таким, чтобы с ним было приятно работать, а не выкинуть в сортир
Viktor
Да, но это уже другой вопрос)
🍁 Jaŭhien
Пили биндинг на си)
Экстеншн то есть
Roman
Пили биндинг на си)
Там проблема в большом количестве перебора. Переписывание на C не поможет (ну ОК, даже если в 2 раза быстрее станет, всё равно не 2 порядка), надо алгоритм оптимизировать. Я думаю, что если в автомате Левенштейна кешировать, то может в несколько раз скорость возрасти.
Alex
Вопрос 1й - умеет ли фреймворк делать красивые интерфейсы? Да умет, см. QtQuick. 2й - позволяет строить сложные интерфейсы - Да позволяет. 3й - эффективно? в сравнении с электроном - очень даже. 4й - легко ли с ним работать? нет, не легко, т.к. фреймворк достаточно большой, развесистый и сложный.
Alex
Если тебе срать на пользователей и нужно сделать говно чтобы сразу в продакшн - берешь электрон. Если только винда - .NET + WPF
Viktor
а .net core кросплатформенный тоже)
Viktor
почему говно? :)
Alex
а .net core кросплатформенный тоже)
в .net core нет UI, а про кроссплатформенный WPF подробнее.
Alex
а чем электрон плох?)
потому что дает дикий оверхед на небольших приложениях.
Roman
в spacy запилили модель русского языка?
Я же пишу, с английской википедии. А вообще: https://github.com/buriy/spacy-ru/ Только я не проверял, потому что последняя версия spacy не поддерживается, а она мне и нужна.
Viktor
там правда датагрид еще не реализован, но основные контролы и подход wpf - да
Aragaer
а то есть мат ты фильтруешь опять же английский?
Aragaer
просто я где-то примерно год назад нашел для себя spacy, но тогда русской модели не было
Roman
Ну так у вас же юзкейс другой и мне кажется, что вполне ок. Не совсем понятно, зачем быстрее.
Есть вот такая либа: https://github.com/vzhou842/profanity-check Она не умеет в глубокий анализ, зато на основе ML написана. Там есть (некорректное) сравнение с моей либой по скорости. Хочу, чтобы их либа была не во столько раз быстрее.
Roman
а то есть мат ты фильтруешь опять же английский?
Нет, русский тоже: https://github.com/rominf/profanity-filter/#overview
Aragaer
тогда я не понял - как работает твой фильтр, если ты не используешь модель русского языка?
Tishka17
Если вдруг кому интересно, начал тыкать pyright. Вроде даже что-то опознает, хотя косячит местами. Сделал докерфайл ему https://github.com/Tishka17/pyright_docker
Tishka17
Если осилю, попробую обзор соорудить, хотя хз
Alex
ldd /usr/bin/telegram-desktop ... libQt5Network.so.5 => /usr/lib/libQt5Network.so.5 (0x00007f39e0c83000) libQt5Widgets.so.5 => /usr/lib/libQt5Widgets.so.5 (0x00007f39e0613000) libQt5Gui.so.5 => /usr/lib/libQt5Gui.so.5 (0x00007f39e0058000) libQt5DBus.so.5 => /usr/lib/libQt5DBus.so.5 (0x00007f39dffc7000) libQt5Core.so.5 => /usr/lib/libQt5Core.so.5 (0x00007f39dfa97000)
Alex
ой... неожиданно правда?
Roman
тогда я не понял - как работает твой фильтр, если ты не используешь модель русского языка?
Я писал одной заинтересованной девчонке, как работает моя библиотека, процитирую: В библиотеки нет ключевой идеи, поэтому расскажу шаги. 1. Токенизируем текст элементарным регулярным выражением и бинарным поиском по списку токенов разбиваем текст на куски на одном языке с помощью библиотеки polyglot. 2. Проходим по кускам на одном языке, токенизируем с помощью spacy (spacy работает на основе моделей для конкретного языка, поэтому мы его можем использовать только для этого этапа и дальше). Для каждого токена мы вызываем функцию, которая цензурирует слово, разбирая его на подстроки. 3. В цикле, который завершается когда на очередной итерации мы ничего не зацензурировали, мы разбиваем слово в текущем состоянии на подстроки и выкидываем оттуда все подстроки, которые мы уже умеем цензурировать, а так же подстроки этих подстрок (их мы тоже умеем цензурировать, ведь мы же отцензурировали саму подстроку). Каждую подстроку цензурируем как отдельное слово. Если у нас выключен глубокий анализ, то после первой подстроки (то есть самого слова) мы заканчиваем. 4. Сначала мы с помощью всех доступных средств леммы слово. Если глубокий анализ включен, и лемма не является словарным словом, мы выбрасываем все символы, не являющиеся буквами. Потом мы смотрим, если все леммы у нас без мата, значит возвращаем слово как есть. Если у нас это слово уже было отцензурировано, то возвращаем его. Проходим по леммам. Если лемма попадает в мат, то цензурируем слово. Если нет и включён глубокий анализ, проверяем есть ли слово в нормальном словаре. Если слово есть, то дальше разбирать его не нужно. Если в нормальном словаре слова нет, то с помощью автомата Левенштейна ищем похожие на мат леммы. Если нашли, то цензурируем слово. Пример (прошу прощения за мат :)): "бля" -> лемма "бля" -> поиск по словарю мата -> зацензурировали. "корабля" -> леммы "корабль", "корабля" -> мата нет -> проверяем по нормальному словарю -> есть в словаре, глубже не идём и часть слова "кораБЛЯ" не зацензурируем. "ухтыжбля" -> деление на подстроки -> "жбля" -> лемма "жбля" -> в словаре мата нет -> в нормальном словаре нет -> автомат Левенштейна находит похожесть на "бля" -> зацензурировали. В общем это всё, за исключением некоторых тонкостей, которые проще понять из кода. Чего не умеет библиотека: ASCII art из мата, выявление сложных конструкций типа "ты козёл!", строки типа "б л я" (из-за вычислительной сложности).
Roman
Она обещала перевести на английский (мне влом), но пока своё обещание не сдержала. Как только переведёт - выложу в README.md.
Roman
Что лучше взять для реализации REST API? Я понимаю, что будущее за асинхронными фреймворками, поэтому у меня 2 претендента: aiohttp и sanic. Я бы взял aiohttp (был хороший опыт), но sanic типа быстрее. Кто что думает?
Bogdan (SirEdvin)
А зачем вам асинхронный фреймворк? У вас же вроде cpu-based задача
Bogdan (SirEdvin)
На них асинхронность лишний оверхед
Roman
А зачем вам асинхронный фреймворк? У вас же вроде cpu-based задача
То есть лучше просто Flask взять и не париться?
Bogdan (SirEdvin)
Типо того
Bogdan (SirEdvin)
Асинхронные штуки дают преимущество, когда много io задач, типо запросов по сети
Roman
На них асинхронность лишний оверхед
Ну да, наверное вы правы. У меня просто в голове шаблон "асинхронность - это круто", а смысла в ней в конкретном случае, действительно, наверное, не много. Спасибо.
Tigran
Как и у всех здесь!
Aragaer
неправильный шаблон
Aragaer
правильный это "асинхронность это вынужденно"
Aragaer
то есть если ты не успеваешь все сделать синхронно, тогда можно подумать об асинхронности
Bogdan (SirEdvin)
Если у вас почти все время работы мячик на стороне приложения, то асинхронность сделает хуже из-за ивент-лупа
Bogdan (SirEdvin)
то есть если ты не успеваешь все сделать синхронно, тогда можно подумать об асинхронности
Эм, зачем? Если вы работаете с бд в приложении, на 90% уверен, асинхронность для вас
Aragaer
это и есть "не успеваешь сделать синхронно"
Bogdan (SirEdvin)
У нас есть запросы по 5-6 секунд в бд (
Bogdan (SirEdvin)
На джанго)
Tigran
Жоска
Pavel
У нас есть запросы по 5-6 секунд в бд (
возможно вы что то делаете ужасно не так
Aragaer
ой. Ну я б тут для начала посмотрел на explain, может быть можно сами запросы соптимизировать
Pavel
На джанго)
теперь понятно что
Bogdan (SirEdvin)
Я даже знаю что, просто жалуюсь)
Aragaer
ну а вот и получается же
Aragaer
"у нас запросы 5-6 секунд, но мы не будем это фиксить, потому что у нас асинхронность"
Tishka17
а потом все транзакции встают в очередь
Bogdan (SirEdvin)
Не думаю, пользователю же все равно видно
Pavel
а потом все транзакции встают в очередь
тишка, а вы говорят вертику юзаете
Bogdan (SirEdvin)
теперь понятно что
Джангофобы, они уже на деревьях!)