В тексте такое определение ИИ, что если я в Экселе сделал линейную регрессию по данным в столбце, а данные в этом столбце обновляются, то я - разработчик ИИ.
Подход с BERT topic показал плохие результаты с хорошей метрикой silhouette по довольно тривиальной причине: silhouette, как и остальные метрики кластеризации без разметки из Sklearn по своей природе оценивают качество кластеризации для кластеров сферической формы. HDBSCAN (как и DBSCAN и агломеративная кластеризация) порождают кластеры произвольной формы. То есть, используемая метрика не способна оценить кластеризацию HDBSCAN в общем случае.
Какой тут выход?
Использовать метрики сходства кластеризации и имеющейся у вас классификации. То есть что-то, что умеет оценивать похожесть двух категориальных переменных, можно тестом хи-квадрат. Я в подобных случаях использую взаимную информацию, нормированную на энтропию целевой категориальной переменной - очень полезная метрика когда переменные только категориальные, а особенно если в каждой много категорий.
Спасибо за качественную статью, было интересно увидеть сравнение методов на реальных данных.
В статье показаны некоторые методы обработки текстов, чтобы вытянуть некоторые показатели - хорошо для новичка в текстовом анализе. Однако не хватает цели: анализ же никогда не делается для того чтобы что-то посчитать, показатели нужны для выводов.
Сам сталкивался с разведочным анализом текстов, но в моем случае было 2 цели:
1) облегчить работу data scientist, чтобы они на EDA время не тратили
2) ускорить понимание корпуса документов любому члену команды, кому резко потребовалось поработать с теми текстами, что уже попали мне в руки.
Исходя из вышеописанного я бы в набор тех методов, которые описаны в статье, добавил:
1) Расчет TF-IDF и оценку того какая доля уникальных слов покрывает объем всех слов по частоте и по TF-IDF. То есть на выходе получить значения вида: 20% уникальных слов покрывает 50% вхождений всех слов и 35% суммарного TF-IDF.
Так мы поймем насколько уникальны документы и насколько большой должен быть словарь для векторизации через BoW или TF-IDF
2) добавить ключевые слова для тем. Не только расчетом наиболее частотных, но и с помощью, либо легких алгоритмов YAKE, RAKE, либо путем поиска ближайших слов к центроиду тем.
Так мы поймем о чем наши тематики более точно
3) рассчитать все показатели не только для отдельных слов, но и для 2, 3 - грамм. Зачастую n-граммы помогают лучше понять о чем текст.
Так мы улучшим понимание текстов для тех, кто читает наш анализ. В случае, если тексты не сильно уникальные (например отзывы на парикмахерскую), то уже на 3-граммах можно будет отловить основные паттерны и более глублокий анализ может даже не потребоваться.
4) оценка изменения тем во времени. Например, через подсчет кол-ва документов тематик в каждый месяц. Изменение распределения документов в темах от месяца к месяцу даст нам информацию о том, как быстро сменяются (читай, дрифтуют) основные темы в корпусе документов. В случае отзывовов мы поймем ушли ли старые проблемы и добавились ли новые.
5) если есть категориальные переменные, то добавить оценку взаимной информации между темами и категориями. Так мы поймем что у нас есть реальная связь между темой текста и его категорией. Отсюда поймем надо ли тюнить наш алгоритм поиска тем или может действительно связи нет.
6) К LDA я бы добавил LSA (TF-IDF + SVD) и кластеризацию для поиска тематик, так как гадать над количеством тем не очень интересно. В свою очередь такой ручной поиск тематик через кластеризацию дает больше управления и позволяет сделать выводы о том насколько документы однородны. Например, если нас устраивает кластерищация через k-means, значит темы в корпусе документов более-менее четкие. Если же через k-means получается ерунда, но нас устроила клстеризация через (H)DBSCAN, значит темы в документах "расплывчатые" могут перетекать из одной в другую, приводя к тому, что есть множества документов, где каждый похож друг на друга, но все они либо без четкой границы, либо перетекают из темы в тему в рамках макротемы.
Читал в студенчестве, очень полезная была для мышления. Хотя и мусолит одно и то же под разными соусами, здорово что именно такой подход позволяет лучше детектировать жтих самых лебедей в жизни.
Еще классная идея у него это - стратегия штанги
Согласно такой стратегии заводил несколько YouTube каналов и прочувствовал положительного "черного лебедя" в виде выстрелившего ролика.
Для этого достаточно книжки с андроидом, на который установлен obsidian. Прописывается директория со всеми документами в obsidian и все, поиск работает
Я мехматов не заканчивал, по первому пункту сказать ничего не могу, но по оставшимся интересно было бы уточнить:
Ложные/локальные минимумы существующая проблема, с которой пытаются бороться разными методами (запуск гралиентного спуска с разными точками инициализации, например). То есть ML работает со сложными поверхностями целевой функции, а не только с выпуклыми. Не факт что делает это хорошо, но работает.
Связь может быть слабой/сильной: влияет ли факт наличия пьяного бомжа по средам вечером у входа в Пятёрочку на продажи хлеба? - влияет, кто-то передумает заходить в магазин за хлебом. Но каков вес влияния этого фактора на выручку хлебопроизводителя за месяц? Скорее всего очень низкий, настолько, что может затеряться в шуме. Вот в этом случае я бы и сказал, что связь слабая и на данных я бы вообще посчитал ее шумом. А если мы задумается что такое "шум" в данных, то поймем, что это как раз такие очень слабо влиющие факторы, которых просто много и выявить точную связь с ними мы не можем.
Мои мысли описал, если укажите, где я не прав, то буду рад просветиться: больше знаний - лучше
Уточните, что имеется в виду под "требуется анализировать информацию в БД"?
Есть некая БД, SQL запросом вытягивается информация и ваш сервис должен проанализировать (выдать саммари, исходя из контекста) получаемую таблицу?
В этом сценарии подсказть о подходах не могу, так как мы сфокусированы на обработке текстов из баз знаний. Таблицы там тоже есть и мы пока еще выбираем подход к их обработке.
А так, чтобы целенаправленно обрабатывать таблицу из БД - такой варинт есть в планах, но сейчас поделится нечем.
Хорошая обзорная статья, полностью согласен с выводами. Я бы еще добавил, что специалисту по DS полезно было бы еще освоить операции линала в numpy - порой помогает писать значительно более быстрый код
Сложно понять, что вам не понравилось в "такой алгебре". Я не против складывать 1.5 + 0.5 землекопа. В общем-то и теплое с мягким, когда это два вектора, превращенные линейной комбинацией в главную компоненту с интерпретацией 'комфорт".
Приведите пример другой алгебры полезной в прикладном смысле, относительно data science (это ведь тема статьи)
Автор не врет, когда говорит что специалисту в Data science без знания таких концепций не стать настоящими профессионалом.
Сам как аналитик данных подтверждаю, что даже базовое понимание линейной алгебры очень хорошо прокачивает спеца.
А если говорить про инетпретируемый анализ данных, то более сложная математика зачастую противопоказана
Статья интересная, как человеку с экономическим образованием, почитать про реальные проблемы нахождения кривой спроса - очень интересно.
Но как аналитик данных, хочу сказать, что на протяжении всей статитьи в голове мысль: "если строили модель и она не дала хороших результатов, то как-то не так ее строили".
Если вы утверждаете, что "черные лебеди" прилетают и ломают модели, то очень хочется увидеть что были за события и насколько поломались модели.
Более того, уверен, что предсказать заранее влияние ковида или СВО на продажи за адекватное время невозможно. Однако, как вы и делаете сейчас, можно же поделить время на срезы до и после событий такого рода и также рассчитывать прогнозы отдельнотдля каждого периода.
На фоне того как ствтья погружает в проблему поиска решения, результат в виде линейной регрессии на коротких промежутках времени выглядит как Ока на фоне Lamborghini.
Очевидно, что любая функция аппроксимируется линейной и чем меньше промежуток, тем лучше будет работать линейное приближение.
Как заинтересованный читатель я бы очень хотел увидеть в следующих статьях показатели мер связи между предикатами, которые вы использовали и таргетом и ответ на вопрос почему линейная регрессия на коротких промежутках лучше, чем все остальное. И хотелось бы увидеть как подбирали регрессию для сушествующего решения
Нейронки все же учитывают словоформы и синонимы. Так как не все синонимы на 100% схожи по смыслу. Более того они учитывают контекст, то есть несколько смыслов для одного слова.
Смысл в том, что с вектор отражает смысл текста и можно из вектора получить обратно текст. Текст будет похож на исходный.
Очевидно, что с sha256 такое не сделать.
Можно текст вообще в одно число закодировать, только коллизий много будет. Смысл не только в сжатии, а в возможности работать с этой сжатой информацией.
Я бы сказал, что исследователи изучали наименьшую возможную размерность пространства смыслов в которое можно вложить текст
Про экономику у вас очень сильное заявление про страну, которая за 3 года побила рекорд по количеству санкций и не стала напоминать Аргентину.
В праве я не особо понимаю.
А как обладатель дипломов всех 3 уровней образования (на 2021 год) и работающий в смежной с полученным образованием сфере скажу, что имеет смысл ограничить места, в том числе и платные, чтобы простимулировать рост числа именно тех специалистов, на которых есть востребованность.
Если бы я в 17 лет понимал, что не везде, куда думаю, могу поступить, может умнее бы выбирал специальность в ВУЗе.
Сам менеджер и экономист по образованию, работаю аналитиком данных. Надо бы идти на экономическое моделирование или бизнес-информатику
Я понял вашу мысль, и, наверное, соглашусь, что термин "расстояние" чрезмерно расширили, что сбивает с толку. Мне кажется неплохо бы смотрелись понятия "косинусное различие" (которое 1 - косинусная схожесть) или "различие махаланобиса". В общем, есть тут проблема, соглашусь.
Аналогию с графами понять - за рамками моих познаний, надеюсь что пока. Не профильная сфера для меня.
По вашим примерам, видно что понятие расстояния вы рассматриваете только как Евклидово расстояние, то есть расстояние в физическом смысле. В аналитике, по моему мнению, расстояние - это мера непохожести, чем больше расстояние, тем менее похожи объекты. И такое определение нужно чтобы отвечать на вопросв типа "дальше ли по смыслу слон от плитки, чем автомобиль от самолета" или "какой кандидат ближе всех к нашей вакансии". В таких ситуациях фмзического расстояния в метрах не существует, а евклидово не учитывает всех особенностей данных.
Косинусное сходство и косинусное расстояние это похожие штуки и похожи тем, что одно получается если из единицы вычесть второе.
Расстояние в математическом смысле это вполне определенная сущность, первая же ссылка на Википедию в поисковике выдает 4 критерия по которому некий показатель можно считать расстоянием.
6 год работаю аналитиком, только вчера описывал метрику оценки кластеризации, которую надо занести в прод. Метрика включает в себя нормированную энтропию: без математики было бы сложно, так как не существует какой-то одной нормированной энтропии и надо понимать на что ее можно нормировать и как.
Первые 4 года моего стажа математика была особо не нужна (только для оьучения новым алгоритмам и техникам), а потом устроился туда где очень много работы с текстами, тут всю работу можно свести к анализу положения векторов в пространстве или некоему анализу множеств слов. Какие-то базовые штуки типа корреляций в этом мире вообще отсутствуют, приходится что-то поинтереснее узнавать, типа взаимной информации.
Жутко интересно, но крайне мало информации именно по аналитике текстов и приходится постоянно придумывать эвристики. Для эвристик супер сложная математика не нужна, но, например, представлять чем евклидово расстояние от косинусного отличается и почему где-то лучше использовать одно, а где-то другое - надо.
Из чего-то сложного пригодилось понимание факторизации матриц, так как через него понимаешь как вообще представить слова в виде векторов, а отсюда вырастает 80% аналитики текстов.
Ну и уточню, что я не создаю модели машинного обучения, я анализирую тексты, чтобы помочь дата сатанистам и ml-инженерам лучше делать их работу: подобрать размер чанка для РАГа, понять можно ли создать простые эвристики релевантности текста, чтобы не создавать модели ранжирования или не нагружать гпу, используя LLM для классификации и т.п.
Посмотреть на перплексию токенов ответа, сравнить с понятной для модели ситуацией.
Понятная модели ситуация - это такая, которой модель точно обучалась.
В рамках эксперимента чем ближе по длине промпт и ответ, тем более справедливое сравнение.
Замерить перплексию ответов закрытой модели, наверное никак, с открытыми проще, но не просто.
В тексте такое определение ИИ, что если я в Экселе сделал линейную регрессию по данным в столбце, а данные в этом столбце обновляются, то я - разработчик ИИ.
Задача решается интерактивным дашбордом. LLM тут не нужна. Странный кейс
Я что-то не понял а чем плохо, что Яндекс взял веса Квена и начал обучение с них, а не инициализировал их случайно?
Какие тут компетенции и опыт теряются?
Просто экономия компьюта за счет старта обучения из локального минимума из другого, но похожего пространства весов.
Самое сложное и требующее компетенций людей как раз остается и никуда не уходит
Подход с BERT topic показал плохие результаты с хорошей метрикой silhouette по довольно тривиальной причине: silhouette, как и остальные метрики кластеризации без разметки из Sklearn по своей природе оценивают качество кластеризации для кластеров сферической формы. HDBSCAN (как и DBSCAN и агломеративная кластеризация) порождают кластеры произвольной формы. То есть, используемая метрика не способна оценить кластеризацию HDBSCAN в общем случае.
Какой тут выход?
Использовать метрики сходства кластеризации и имеющейся у вас классификации. То есть что-то, что умеет оценивать похожесть двух категориальных переменных, можно тестом хи-квадрат. Я в подобных случаях использую взаимную информацию, нормированную на энтропию целевой категориальной переменной - очень полезная метрика когда переменные только категориальные, а особенно если в каждой много категорий.
Спасибо за качественную статью, было интересно увидеть сравнение методов на реальных данных.
В статье показаны некоторые методы обработки текстов, чтобы вытянуть некоторые показатели - хорошо для новичка в текстовом анализе. Однако не хватает цели: анализ же никогда не делается для того чтобы что-то посчитать, показатели нужны для выводов.
Сам сталкивался с разведочным анализом текстов, но в моем случае было 2 цели:
1) облегчить работу data scientist, чтобы они на EDA время не тратили
2) ускорить понимание корпуса документов любому члену команды, кому резко потребовалось поработать с теми текстами, что уже попали мне в руки.
Исходя из вышеописанного я бы в набор тех методов, которые описаны в статье, добавил:
1) Расчет TF-IDF и оценку того какая доля уникальных слов покрывает объем всех слов по частоте и по TF-IDF. То есть на выходе получить значения вида: 20% уникальных слов покрывает 50% вхождений всех слов и 35% суммарного TF-IDF.
Так мы поймем насколько уникальны документы и насколько большой должен быть словарь для векторизации через BoW или TF-IDF
2) добавить ключевые слова для тем. Не только расчетом наиболее частотных, но и с помощью, либо легких алгоритмов YAKE, RAKE, либо путем поиска ближайших слов к центроиду тем.
Так мы поймем о чем наши тематики более точно
3) рассчитать все показатели не только для отдельных слов, но и для 2, 3 - грамм. Зачастую n-граммы помогают лучше понять о чем текст.
Так мы улучшим понимание текстов для тех, кто читает наш анализ. В случае, если тексты не сильно уникальные (например отзывы на парикмахерскую), то уже на 3-граммах можно будет отловить основные паттерны и более глублокий анализ может даже не потребоваться.
4) оценка изменения тем во времени. Например, через подсчет кол-ва документов тематик в каждый месяц. Изменение распределения документов в темах от месяца к месяцу даст нам информацию о том, как быстро сменяются (читай, дрифтуют) основные темы в корпусе документов. В случае отзывовов мы поймем ушли ли старые проблемы и добавились ли новые.
5) если есть категориальные переменные, то добавить оценку взаимной информации между темами и категориями. Так мы поймем что у нас есть реальная связь между темой текста и его категорией. Отсюда поймем надо ли тюнить наш алгоритм поиска тем или может действительно связи нет.
6) К LDA я бы добавил LSA (TF-IDF + SVD) и кластеризацию для поиска тематик, так как гадать над количеством тем не очень интересно. В свою очередь такой ручной поиск тематик через кластеризацию дает больше управления и позволяет сделать выводы о том насколько документы однородны. Например, если нас устраивает кластерищация через k-means, значит темы в корпусе документов более-менее четкие. Если же через k-means получается ерунда, но нас устроила клстеризация через (H)DBSCAN, значит темы в документах "расплывчатые" могут перетекать из одной в другую, приводя к тому, что есть множества документов, где каждый похож друг на друга, но все они либо без четкой границы, либо перетекают из темы в тему в рамках макротемы.
Читал в студенчестве, очень полезная была для мышления. Хотя и мусолит одно и то же под разными соусами, здорово что именно такой подход позволяет лучше детектировать жтих самых лебедей в жизни.
Еще классная идея у него это - стратегия штанги
Согласно такой стратегии заводил несколько YouTube каналов и прочувствовал положительного "черного лебедя" в виде выстрелившего ролика.
Полезное чтиво.
Для этого достаточно книжки с андроидом, на который установлен obsidian. Прописывается директория со всеми документами в obsidian и все, поиск работает
Как владелец такого же аппарата, на который перешел с samsung galaxy tab s7 plus, подтверждаю, что лучше бы оставил планшет.
Tab ultra C во владении порядка полутора лет. Думаю взять galaxy tab s9 ultra в ближайшее время.
Заметок от руки сделано много и на Самсунге, и на tab ultra C.
Я мехматов не заканчивал, по первому пункту сказать ничего не могу, но по оставшимся интересно было бы уточнить:
Ложные/локальные минимумы существующая проблема, с которой пытаются бороться разными методами (запуск гралиентного спуска с разными точками инициализации, например). То есть ML работает со сложными поверхностями целевой функции, а не только с выпуклыми. Не факт что делает это хорошо, но работает.
Связь может быть слабой/сильной: влияет ли факт наличия пьяного бомжа по средам вечером у входа в Пятёрочку на продажи хлеба? - влияет, кто-то передумает заходить в магазин за хлебом. Но каков вес влияния этого фактора на выручку хлебопроизводителя за месяц? Скорее всего очень низкий, настолько, что может затеряться в шуме. Вот в этом случае я бы и сказал, что связь слабая и на данных я бы вообще посчитал ее шумом. А если мы задумается что такое "шум" в данных, то поймем, что это как раз такие очень слабо влиющие факторы, которых просто много и выявить точную связь с ними мы не можем.
Мои мысли описал, если укажите, где я не прав, то буду рад просветиться: больше знаний - лучше
Спасибо за такую оценку!
Уточните, что имеется в виду под "требуется анализировать информацию в БД"?
Есть некая БД, SQL запросом вытягивается информация и ваш сервис должен проанализировать (выдать саммари, исходя из контекста) получаемую таблицу?
В этом сценарии подсказть о подходах не могу, так как мы сфокусированы на обработке текстов из баз знаний. Таблицы там тоже есть и мы пока еще выбираем подход к их обработке.
А так, чтобы целенаправленно обрабатывать таблицу из БД - такой варинт есть в планах, но сейчас поделится нечем.
Если я не правильно понял вопрос, то уточните.
Хорошая обзорная статья, полностью согласен с выводами. Я бы еще добавил, что специалисту по DS полезно было бы еще освоить операции линала в numpy - порой помогает писать значительно более быстрый код
Сложно понять, что вам не понравилось в "такой алгебре". Я не против складывать 1.5 + 0.5 землекопа. В общем-то и теплое с мягким, когда это два вектора, превращенные линейной комбинацией в главную компоненту с интерпретацией 'комфорт".
Приведите пример другой алгебры полезной в прикладном смысле, относительно data science (это ведь тема статьи)
Автор не врет, когда говорит что специалисту в Data science без знания таких концепций не стать настоящими профессионалом.
Сам как аналитик данных подтверждаю, что даже базовое понимание линейной алгебры очень хорошо прокачивает спеца.
А если говорить про инетпретируемый анализ данных, то более сложная математика зачастую противопоказана
Статья интересная, как человеку с экономическим образованием, почитать про реальные проблемы нахождения кривой спроса - очень интересно.
Но как аналитик данных, хочу сказать, что на протяжении всей статитьи в голове мысль: "если строили модель и она не дала хороших результатов, то как-то не так ее строили".
Если вы утверждаете, что "черные лебеди" прилетают и ломают модели, то очень хочется увидеть что были за события и насколько поломались модели.
Более того, уверен, что предсказать заранее влияние ковида или СВО на продажи за адекватное время невозможно. Однако, как вы и делаете сейчас, можно же поделить время на срезы до и после событий такого рода и также рассчитывать прогнозы отдельнотдля каждого периода.
На фоне того как ствтья погружает в проблему поиска решения, результат в виде линейной регрессии на коротких промежутках времени выглядит как Ока на фоне Lamborghini.
Очевидно, что любая функция аппроксимируется линейной и чем меньше промежуток, тем лучше будет работать линейное приближение.
Как заинтересованный читатель я бы очень хотел увидеть в следующих статьях показатели мер связи между предикатами, которые вы использовали и таргетом и ответ на вопрос почему линейная регрессия на коротких промежутках лучше, чем все остальное. И хотелось бы увидеть как подбирали регрессию для сушествующего решения
Нейронки все же учитывают словоформы и синонимы. Так как не все синонимы на 100% схожи по смыслу. Более того они учитывают контекст, то есть несколько смыслов для одного слова.
Смысл в том, что с вектор отражает смысл текста и можно из вектора получить обратно текст. Текст будет похож на исходный.
Очевидно, что с sha256 такое не сделать.
Можно текст вообще в одно число закодировать, только коллизий много будет. Смысл не только в сжатии, а в возможности работать с этой сжатой информацией.
Я бы сказал, что исследователи изучали наименьшую возможную размерность пространства смыслов в которое можно вложить текст
Про экономику у вас очень сильное заявление про страну, которая за 3 года побила рекорд по количеству санкций и не стала напоминать Аргентину.
В праве я не особо понимаю.
А как обладатель дипломов всех 3 уровней образования (на 2021 год) и работающий в смежной с полученным образованием сфере скажу, что имеет смысл ограничить места, в том числе и платные, чтобы простимулировать рост числа именно тех специалистов, на которых есть востребованность.
Если бы я в 17 лет понимал, что не везде, куда думаю, могу поступить, может умнее бы выбирал специальность в ВУЗе.
Сам менеджер и экономист по образованию, работаю аналитиком данных. Надо бы идти на экономическое моделирование или бизнес-информатику
Я понял вашу мысль, и, наверное, соглашусь, что термин "расстояние" чрезмерно расширили, что сбивает с толку. Мне кажется неплохо бы смотрелись понятия "косинусное различие" (которое 1 - косинусная схожесть) или "различие махаланобиса". В общем, есть тут проблема, соглашусь.
Аналогию с графами понять - за рамками моих познаний, надеюсь что пока. Не профильная сфера для меня.
По вашим примерам, видно что понятие расстояния вы рассматриваете только как Евклидово расстояние, то есть расстояние в физическом смысле. В аналитике, по моему мнению, расстояние - это мера непохожести, чем больше расстояние, тем менее похожи объекты. И такое определение нужно чтобы отвечать на вопросв типа "дальше ли по смыслу слон от плитки, чем автомобиль от самолета" или "какой кандидат ближе всех к нашей вакансии". В таких ситуациях фмзического расстояния в метрах не существует, а евклидово не учитывает всех особенностей данных.
Косинусное сходство и косинусное расстояние это похожие штуки и похожи тем, что одно получается если из единицы вычесть второе.
Расстояние в математическом смысле это вполне определенная сущность, первая же ссылка на Википедию в поисковике выдает 4 критерия по которому некий показатель можно считать расстоянием.
6 год работаю аналитиком, только вчера описывал метрику оценки кластеризации, которую надо занести в прод. Метрика включает в себя нормированную энтропию: без математики было бы сложно, так как не существует какой-то одной нормированной энтропии и надо понимать на что ее можно нормировать и как.
Первые 4 года моего стажа математика была особо не нужна (только для оьучения новым алгоритмам и техникам), а потом устроился туда где очень много работы с текстами, тут всю работу можно свести к анализу положения векторов в пространстве или некоему анализу множеств слов. Какие-то базовые штуки типа корреляций в этом мире вообще отсутствуют, приходится что-то поинтереснее узнавать, типа взаимной информации.
Жутко интересно, но крайне мало информации именно по аналитике текстов и приходится постоянно придумывать эвристики. Для эвристик супер сложная математика не нужна, но, например, представлять чем евклидово расстояние от косинусного отличается и почему где-то лучше использовать одно, а где-то другое - надо.
Из чего-то сложного пригодилось понимание факторизации матриц, так как через него понимаешь как вообще представить слова в виде векторов, а отсюда вырастает 80% аналитики текстов.
Ну и уточню, что я не создаю модели машинного обучения, я анализирую тексты, чтобы помочь дата сатанистам и ml-инженерам лучше делать их работу: подобрать размер чанка для РАГа, понять можно ли создать простые эвристики релевантности текста, чтобы не создавать модели ранжирования или не нагружать гпу, используя LLM для классификации и т.п.