Статья посвящена созданию обучающей выборки для NER. Описан опыт разметки данных с использованием Open Source инструментов и Prodigy, профессионального решения для ускорения процесса создания наборов данных.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Статья описывает приложение, объединяющее GraphRAG и AutoGen-агентов с локальными LLM от Ollama для автономного встраивания и вывода. Рассмотрены ключевые аспекты: интеграция знаний, настройка LLM, вызов функций и интерактивный интерфейс.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍1
🧩 Работай с кодом, как с историей
Читаешь старый код и не понимаешь, как он дошёл до жизни такой?
👉 Совет: анализируй коммиты, историю изменений и комментарии к задачам. Это поможет понять, почему код стал таким, а не просто принять его как данность. Иногда не код плохой — просто контекст утерян.
Читаешь старый код и не понимаешь, как он дошёл до жизни такой?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12
ML Engineer / AI Data Scientist (AI Intent Marketing)
Game Data Analyst
Data Engineer
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🔥1
Статья исследует использование троичных значений (-1, 0, 1) в нейросетевых матрицах. Рассматриваются методы хранения тритов с использованием 32-битной арифметики и подходы к их быстрому умножению через оптимизацию памяти.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
Напишите функцию, которая принимает DataFrame и заменяет отсутствующие значения (NaN) в каждом числовом столбце на среднее значение этого столбца. Если столбец содержит только NaN, оставьте его без изменений.
feature1 feature2 feature3
0 1.0 10.0 NaN
1 2.0 NaN NaN
2 NaN 30.0 NaN
3 4.0 40.0 NaN
feature1 feature2 feature3
0 1.00 10.0 NaN
1 2.00 26.7 NaN
2 2.33 30.0 NaN
3 4.00 40.0 NaN
Решение задачи
import pandas as pd
def fill_missing_with_mean(df):
numeric_columns = df.select_dtypes(include=['float', 'int'])
for column in numeric_columns:
if df[column].notna().any(): # Проверяем, есть ли значения не NaN
df[column] = df[column].fillna(df[column].mean())
return df
# Пример использования:
data = pd.DataFrame({
'feature1': [1.0, 2.0, None, 4.0],
'feature2': [10.0, None, 30.0, 40.0],
'feature3': [None, None, None, None]
})
result = fill_missing_with_mean(data)
print(result)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
• Не бойтесь потоков в Python, они не кусаются
• Рубрика: VPS на пределе возможностей. LLM на CPU с 12Gb RAM
• Предвзятость русскоязычных LLM: кого машина считает «обычным человеком»?
• Семантический веб: краткий обзор технологий и инструментов
• Инструмент обеспечения качества данных: от теории к практике
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Forwarded from .ml
Ранее мы обсуждали с вами RoPE, а теперь поговорим о его модификациях. Собрали много интересного, поэтому будет целых три поста по этой теме. Enjoy!
Как развивалось позиционное кодирование:
📆 2017 год
С появлением ванильного трансформера позиции токенов кодировались тригонометрической функцией, значение которой зависело от позиции и просто прибавлялось к эмбеддингу соответсутвующего слова.
Плюсы — мы умеем кодировать любую позицию, в том числе превосходящую максимальную длину, на которой тренировались.
Минусы — не очень работает на длинных последовательностях, да и вообще не очень хорошо работает.
📆 2018 год
Потом появился гугловский BERT, а вместе с ним новый подход позиционного кодирования: авторы предложиди выкинуть тригонометрию и вместо этого добавить в модель ещё один обучаемый слой nn.Embedding — такой же, как для получения эмбеддингов слов. Он должен кодировать — то есть, превращать в вектор — позицию токена.
Итоговый вектор токена, который будет передан следующим слоям модели — это сумма векторов токена и его позиции. Работает лучше, чем тригонометрия, но при этом никак не экстраполируется: так как векторы выучиваемые, то для позиций, превосходящих максимальную тренировочную длину, мы кодировать не умеем — она вне ключей нашего словаря эмбеддингов, так же, как мы не можем закодировать и незнакомый модели токен.
В это же время впервые появилась идея о том, что нам важны не столько абсолютные позиции слов, сколько относительные. Авторы статьи решили кодировать не абсолютную позицию, а только относительную (Relative Position Encoding, или RPE), то есть близость каждой пары токенов. Здесь же появилась идея, что позицонное кодирование стоит добавлять не в момент создания эмбеддингов слов, а на этапе Attention, добавляя знание о позициии в queries и keys.
Для начала напомним, что Positional Encoding (кодирование позиций слов/токенов) нужен, чтобы передать модели или трансформеру информацию о позициях слов — относительную или же абсолютную.
Как развивалось позиционное кодирование:
📆 2017 год
С появлением ванильного трансформера позиции токенов кодировались тригонометрической функцией, значение которой зависело от позиции и просто прибавлялось к эмбеддингу соответсутвующего слова.
Плюсы — мы умеем кодировать любую позицию, в том числе превосходящую максимальную длину, на которой тренировались.
Минусы — не очень работает на длинных последовательностях, да и вообще не очень хорошо работает.
📆 2018 год
Потом появился гугловский BERT, а вместе с ним новый подход позиционного кодирования: авторы предложиди выкинуть тригонометрию и вместо этого добавить в модель ещё один обучаемый слой nn.Embedding — такой же, как для получения эмбеддингов слов. Он должен кодировать — то есть, превращать в вектор — позицию токена.
Итоговый вектор токена, который будет передан следующим слоям модели — это сумма векторов токена и его позиции. Работает лучше, чем тригонометрия, но при этом никак не экстраполируется: так как векторы выучиваемые, то для позиций, превосходящих максимальную тренировочную длину, мы кодировать не умеем — она вне ключей нашего словаря эмбеддингов, так же, как мы не можем закодировать и незнакомый модели токен.
В это же время впервые появилась идея о том, что нам важны не столько абсолютные позиции слов, сколько относительные. Авторы статьи решили кодировать не абсолютную позицию, а только относительную (Relative Position Encoding, или RPE), то есть близость каждой пары токенов. Здесь же появилась идея, что позицонное кодирование стоит добавлять не в момент создания эмбеддингов слов, а на этапе Attention, добавляя знание о позициии в queries и keys.
❤2
Хочешь запустить большую языковую модель в продакшене, но не знаешь, как совместить простоту развертывания с промышленной надежностью? Комбинация vLLM и TorchServe решает эту задачу. Она обеспечивает как простой запуск, так и продвинутые возможности для масштабирования.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
Напишите скрипт, который удаляет дублирующиеся строки из CSV-файла на основе указанного столбца и сохраняет результат в новый файл.
python remove_duplicates.py input.csv output.csv column_name
id,name,age
1,John,30
2,Jane,25
4,Bob,35
Решение задачи
import pandas as pd
import sys
if len(sys.argv) < 4:
print("Использование: python remove_duplicates.py <input_file> <output_file> <column_name>")
sys.exit(1)
input_file = sys.argv[1]
output_file = sys.argv[2]
column_name = sys.argv[3]
try:
df = pd.read_csv(input_file)
df = df.drop_duplicates(subset=[column_name])
df.to_csv(output_file, index=False)
print(f"Дубликаты удалены. Результат сохранён в {output_file}")
except Exception as e:
print(f"Ошибка: {e}")
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👎2❤1
Junior Data Analyst
Data Scientist
Junior Data Scientist
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Статья раскрывает, как дизайнеры студии используют ИИ для усиления креативности в проектах. Обсуждаются инструменты и подходы, которые помогают сохранить индивидуальность и создать продуманный дизайн с помощью нейросетей.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
Скоринг Middle Data Scientist
• Git, Python, базы данных• Уровень дохода не указан | от 1 годаData Scientist в команду RecSys (middle)
• Машинное обучение, SQL, Python, PostgreSQL, Git, TensorFlow, ClickHouse, Apache Airflow, Pandas• Уровень дохода не указан | от 2 летАналитик данных в сфере HR, middle
• SQL, Power BI, анализ данных, математическая статистика• Уровень дохода не указан | от 2 летPlease open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
Статья рассказывает, как организовать и обработать огромный архив аудиозаписей дневников, созданных задолго до эпохи современных speech-to-text технологий. Рассматриваются инструменты и подходы для упорядочивания данных.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1
Напишите функцию, которая принимает строку и возвращает новую строку, из которой удалены все гласные буквы (
a, e, i, o, u в любом регистре).print(remove_vowels("Hello World")) # Ожидаемый результат: "Hll Wrld"
print(remove_vowels("Python is great")) # Ожидаемый результат: "Pythn s grt"Решение задачи
def remove_vowels(s):
vowels = "aeiouAEIOU"
return ''.join(char for char in s if char not in vowels)
# Пример использования:
print(remove_vowels("Hello World")) # Ожидаемый результат: "Hll Wrld"
print(remove_vowels("Python is great")) # Ожидаемый результат: "Pythn s grt"
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🐳3👎2
Статья посвящена прогнозированию продаж FTTB-FMC для ежедневной отчетности. Рассматриваются подходы к анализу данных, ключевые KPI и методы, используемые для прогнозирования продаж в сегменте ШПД и конвергентных продуктов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤3
Product Analyst
• SQL, Amplitude, Анализ данных, Веб-аналитика• от 2 000 $ | более 3 летДата инженер
• Python, Apache Hadoop, Apache Spark, Apache Airflow, Apache Kafka• Уровень дохода не указан | от 2–3 летSenior Data Scientist в команду ценообразования
• Python, SQL• Уровень дохода не указан | от 3 летPlease open Telegram to view this post
VIEW IN TELEGRAM
❤1
В этой статье я хотел бы показать куда уходят данные и что с ними происходит, когда пайплайны дата-инженеров заканчивают работу.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🐳1
Декораторы — это функции в Python, которые принимают другую функцию в качестве аргумента и возвращают новую функцию с добавленным поведением. Это удобный способ модификации или расширения функциональности без изменения исходного кода функции.
# Декоратор для логирования вызовов функции
def log_call(func):
def wrapper(*args, **kwargs):
print(f"Вызов функции {func.__name__} с аргументами: {args}, {kwargs}")
result = func(*args, **kwargs)
print(f"Результат: {result}")
return result
return wrapper
# Применение декоратора
@log_call
def add(a, b):
return a + b
add(3, 5)
🗣️ В этом примере декоратор log_call добавляет логирование вызовов и результатов функции add. Декораторы позволяют делать код более модульным и удобным для повторного использования.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Давайте рассмотрим концепцию Smart Data и выясним, действительно ли Big Data превращаются во что-то более интеллектуальное.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤1👎1🐳1