вообще интересно, что такие методы (алгоритмические/эврестические/классическое NLP) довольно хорошо решают реальные проблемы, даже во время нейросетей всяких. Хотя у них есть граница применимости и времени они требуют больше на настройку
аббревиатуры и сокращения - вечная тема) постоянно их пытаемся расшифровать. Приведение к каноническому виде - идея интересная, но боюсь сложно реализуется, в общем случае...
ну python тут даже не рассматривается, он очень медленный
но ощущение, что Java тоже не спасет... например, у нас 5 млн. текстовых строк (короткие разнообразные названия, товары) надо выделить группы похожий между собой в моем понимании Java это не сделает без оптимизаций и векторов... или как это можно сделать?
А почему нейросети не рассматриваете для семантического поиска?
я как раз наоборот, не знаю других способов семантики, кроме bertов. вообще они дают неплохой результат. Иногда так делаем: берем список -> для каждого элемента LLM делает описание -> векторизация -> далее уже кластеризация для или k-NN и графовый анализ
куп. раздел. верх 2 черепа - купе раздельное верхняя полка 2 места, Череповец))
мы обычно явно отделяем неточный поиск от семантического поиска. На удивление, много задач именно неточный поиск требуют. например, данные вводились с клавиатуры разными людьми, надо найти опечатки, ошибки. Обычно строчки состоят из 2-5 слов, т.е. ngram довольно хорошо позволяют найти то, что нужно
если возникает семантика, тогда применяем нейросети, тоже перевод в вектора. классика на русском языке - intfloat/multilingual-e5-large. Иногда с дообучением. Иногда кросс-энкодерный подход, вместо би-энкодерного.
а вообще тема поиска близких объектов действительно обширная и глубокая)
" Берём 400-летний период Григорианского календаря, формулируем условие «((y × M) & MASK) ≤ T ⇔ високосный» как задачу выполнимости для 400 остатков. Далее отдаём её SMT-решателю Z3 с критерием «минимизировать сумму 22-битных констант M, MASK, T». Z3 за доли секунды подбирает первую модель, потом скрипт автоматически проверяет её на всём диапазоне 0 – 9 999 лет — получаем три нужных числа. "
спросил grok, он как обычно всё мне объяснил) реально, первое ощущение, что 10 мышей - недостаточный объем данный. Но прочитав ниже я прямо понял! почему это достаточно и как работает
# grok
Простое объяснение
Представь, что каждая колба имеет уникальный «код» из 10 бит (0 или 1), как номер в двоичной системе. Мы используем 10 мышей, и каждая мышь отвечает за один бит:
Мышь 1 пьёт из всех колб, у которых в коде на первой позиции стоит 1.
Мышь 2 — для второй позиции, и так далее.
Через час смотрим, какие мыши умерли. Если мышь умерла, значит, в её бите стоит 1, если жива — 0. Это даёт нам 10-битный код отравленной колбы.
Почему 10? Потому что 2¹⁰ = 1024, а нам нужно закодировать 1000 колб, и 10 бит — это минимальное число, чтобы хватило уникальных кодов (2⁹ = 512 — уже мало).
я раньше думал, что портрет графа = визуализация графа (года 3 так думал) сейчас обсудил с grok, оказывается это не так))) имел ввиду, конечно, просто визуализацию Спасибо за комментарий!
Именно относительно создания прототипов/драфтов - удобно, что и микроменеджмента нет. Можно быстро проверять свои идеи. Да, некоторые моменты нейросеть сделает по-своему, но это обычно не критично
Согласен, самые интересные моменты начинаются после слов: "а давайте проверим...", "а что если...", "ну а предположим, что ...", и после этих слов любопытства, начинается проверка самых интересных и порой безумных идей :)
Если сравнивать нейросети VS калькуляторы, электричество, ДВГ и т.д. Всё таки есть ощущение, что нейросети имеют какой то иной по масштабу потенциал... Посмотрим. Про роль человека я до сих пор не знаю, как она будет выглядеть в будущем. Копи-пастить код и вайбкодить явно развлечение только на ближайшие годы.
Вообще есть некоторый эффект расслабления с ними. И тут важно активно мотивированно узнавать новое и учиться, тогда они станут инструментом и помогут. Если отключить голову - действительно будут отуплять. Всй как с любым мощным инструментом, можно во благо, можно во вред
На самом деле довольно редко переформатирую. Т.к. время потраченное на переформатирование, не всегда окупается качеством). И обычно только выделяю разделы логические.
Отдельный запрос (а-ля GPTs) рассматривал, но не стал так делать. Опять же - экономия времени. За это же время, я успею получить ответ и задать уточняющий вопрос/изменить подход. Скорость итераций пока важнее оказывается
GPTs у меня такой был:
Below is description of the task. You should make it more structured. While restructuring follow the rules:
break down task into basic logical steps in order to support succesful completion of the task;
use markdown language markup;
step sequence is important. Reorder steps if needed;
clearly state inputs and outputs of the task (format, size, etc.);
Такие объемы кода и сложность кода - это будущее, согласен У меня запросы проще, базовая математика, статистика, python. Объемы кода на вход/выход не более ~2000 строк. В этих случаях все работает хорошо. А это сейчас основные потребители нейросетей (high level python + простые и средненькие по сложности алгоритмы, обычно data analysis + базовая автоматизация)
на моих запросах perplexity ищет средне по качеству. А в каком надо искать? Единственное, что нашел лучше - grok и open ai.
По одновременному поиску: я обычно это широко использую. Далее по диагонали определяю, какая модель ответила лучше. Обычно минусов не видел в таком подходе...
Согласен При использовании английского есть минусы, но их не много: - его надо знать - если текст очень специфический (спец. термины/сокращения/аббревиатуры) или запрос связан с русскоязычными источниками, то лучше русский
обычно плюсы английского перевешивают, но зависит от запроса, конечно
В некоторых случаях - да, еще пользуюсь гуглом. Но кардинально меньше. Вспоминаю, как было 2-3 года назад - совершенно другой подход. Там как раз дефолтом был - гугл и stack overflow.
Ну и в целом, я думаю, что нейросети сильно изменят наш мир.
я не уверен, что в python такой цикл будет быстрее (я только на python пишу). networkx вроде на плюсах написан, так что по скорости может и выиграть у двойного цикла питона А сама идея понятна, алгоритмическая сложность у вашего алгоритма лучше, конечно
какой объем данных был?
я давно думаю, что критические части кода на быстрый язык переписать, но руки не доходят(
вообще интересно, что такие методы (алгоритмические/эврестические/классическое NLP) довольно хорошо решают реальные проблемы, даже во время нейросетей всяких. Хотя у них есть граница применимости и времени они требуют больше на настройку
аббревиатуры и сокращения - вечная тема) постоянно их пытаемся расшифровать. Приведение к каноническому виде - идея интересная, но боюсь сложно реализуется, в общем случае...
ну python тут даже не рассматривается, он очень медленный
но ощущение, что Java тоже не спасет...
например, у нас 5 млн. текстовых строк (короткие разнообразные названия, товары)
надо выделить группы похожий между собой
в моем понимании Java это не сделает без оптимизаций и векторов... или как это можно сделать?
А почему нейросети не рассматриваете для семантического поиска?
я как раз наоборот, не знаю других способов семантики, кроме bertов. вообще они дают неплохой результат. Иногда так делаем: берем список -> для каждого элемента LLM делает описание -> векторизация -> далее уже кластеризация для или k-NN и графовый анализ
куп. раздел. верх 2 черепа - купе раздельное верхняя полка 2 места, Череповец))
мы обычно явно отделяем неточный поиск от семантического поиска. На удивление, много задач именно неточный поиск требуют. например, данные вводились с клавиатуры разными людьми, надо найти опечатки, ошибки. Обычно строчки состоят из 2-5 слов, т.е. ngram довольно хорошо позволяют найти то, что нужно
если возникает семантика, тогда применяем нейросети, тоже перевод в вектора. классика на русском языке - intfloat/multilingual-e5-large. Иногда с дообучением. Иногда кросс-энкодерный подход, вместо би-энкодерного.
а вообще тема поиска близких объектов действительно обширная и глубокая)
просто для интереса сделал:
до 9999 года нашел еще такую формулу, 22 бита.
static inline bool is_leap22(uint32_t y)
{
return ((y * 1648277u) & 0x3FFFFFu) <= 5103u;
}
" Берём 400-летний период Григорианского календаря, формулируем условие «((y × M) & MASK) ≤ T ⇔ високосный» как задачу выполнимости для 400 остатков. Далее отдаём её SMT-решателю Z3 с критерием «минимизировать сумму 22-битных констант M, MASK, T». Z3 за доли секунды подбирает первую модель, потом скрипт автоматически проверяет её на всём диапазоне 0 – 9 999 лет — получаем три нужных числа. "
спросил grok, он как обычно всё мне объяснил)
реально, первое ощущение, что 10 мышей - недостаточный объем данный. Но прочитав ниже я прямо понял! почему это достаточно и как работает
# grok
Простое объяснение
Представь, что каждая колба имеет уникальный «код» из 10 бит (0 или 1), как номер в двоичной системе. Мы используем 10 мышей, и каждая мышь отвечает за один бит:
Мышь 1 пьёт из всех колб, у которых в коде на первой позиции стоит 1.
Мышь 2 — для второй позиции, и так далее.
Через час смотрим, какие мыши умерли. Если мышь умерла, значит, в её бите стоит 1, если жива — 0. Это даёт нам 10-битный код отравленной колбы.
Почему 10? Потому что 2¹⁰ = 1024, а нам нужно закодировать 1000 колб, и 10 бит — это минимальное число, чтобы хватило уникальных кодов (2⁹ = 512 — уже мало).
я раньше думал, что портрет графа = визуализация графа (года 3 так думал)
сейчас обсудил с grok, оказывается это не так)))
имел ввиду, конечно, просто визуализацию
Спасибо за комментарий!
сама статья писалась руками)
про "замыкания" - просто хотел сказать, что обычный кодинг я более менее знаю (python). Просто некоторые сразу с вайбкодинга начинают - не мой случай
Именно относительно создания прототипов/драфтов - удобно, что и микроменеджмента нет. Можно быстро проверять свои идеи. Да, некоторые моменты нейросеть сделает по-своему, но это обычно не критично
не совсем, в задаче "Математика из telegram" нейросеть заменила мне скорее научного консультанта и преподавателя по линалу
Согласен, самые интересные моменты начинаются после слов: "а давайте проверим...", "а что если...", "ну а предположим, что ...", и после этих слов любопытства, начинается проверка самых интересных и порой безумных идей :)
Если сравнивать нейросети VS калькуляторы, электричество, ДВГ и т.д. Всё таки есть ощущение, что нейросети имеют какой то иной по масштабу потенциал... Посмотрим. Про роль человека я до сих пор не знаю, как она будет выглядеть в будущем. Копи-пастить код и вайбкодить явно развлечение только на ближайшие годы.
Есть такое)
Вообще есть некоторый эффект расслабления с ними. И тут важно активно мотивированно узнавать новое и учиться, тогда они станут инструментом и помогут. Если отключить голову - действительно будут отуплять.
Всй как с любым мощным инструментом, можно во благо, можно во вред
На самом деле довольно редко переформатирую. Т.к. время потраченное на переформатирование, не всегда окупается качеством). И обычно только выделяю разделы логические.
Отдельный запрос (а-ля GPTs) рассматривал, но не стал так делать. Опять же - экономия времени. За это же время, я успею получить ответ и задать уточняющий вопрос/изменить подход. Скорость итераций пока важнее оказывается
GPTs у меня такой был:
Below is description of the task. You should make it more structured.
While restructuring follow the rules:
break down task into basic logical steps in order to support succesful completion of the task;
use markdown language markup;
step sequence is important. Reorder steps if needed;
clearly state inputs and outputs of the task (format, size, etc.);
task should be consice and short;
use only valid words and terms;
correct grammar errors and semantic errors;
you should only reformulate task;
DO NOT solve task;
Такие объемы кода и сложность кода - это будущее, согласен
У меня запросы проще, базовая математика, статистика, python. Объемы кода на вход/выход не более ~2000 строк. В этих случаях все работает хорошо. А это сейчас основные потребители нейросетей (high level python + простые и средненькие по сложности алгоритмы, обычно data analysis + базовая автоматизация)
на моих запросах perplexity ищет средне по качеству. А в каком надо искать? Единственное, что нашел лучше - grok и open ai.
По одновременному поиску: я обычно это широко использую. Далее по диагонали определяю, какая модель ответила лучше. Обычно минусов не видел в таком подходе...
Согласен
При использовании английского есть минусы, но их не много:
- его надо знать
- если текст очень специфический (спец. термины/сокращения/аббревиатуры) или запрос связан с русскоязычными источниками, то лучше русский
обычно плюсы английского перевешивают, но зависит от запроса, конечно
На самом деле все верно - 71 минута, там под спойлерами большие промты и ответы нейросетей))
В некоторых случаях - да, еще пользуюсь гуглом. Но кардинально меньше.
Вспоминаю, как было 2-3 года назад - совершенно другой подход. Там как раз дефолтом был - гугл и stack overflow.
Ну и в целом, я думаю, что нейросети сильно изменят наш мир.
я не уверен, что в python такой цикл будет быстрее (я только на python пишу). networkx вроде на плюсах написан, так что по скорости может и выиграть у двойного цикла питона
А сама идея понятна, алгоритмическая сложность у вашего алгоритма лучше, конечно
Код понял, логичный. В целом canonical переменная не нужна даже. Можно и так было, наверное даже логичнее.
Просто подход с графами мне интуитивно чуть понятнее, естественнее