Руководство по созданию бота YouTube с помощью LangChain и Pinecone Vectorstore 🤖📹
Просмотр часового видеоролика на YouTube по любой научной теме, безусловно, непростая задача. ИИ может помочь с этим.
К концу этого поста вы сможете создать свой собственный чат-бот для YouTube с искусственным интеллектом.
Я проведу вас через весь процесс шаг за шагом. Вы сможете:
•Создать модели OpenAI
•Загрузить исходные документы
•Разделить текст на фрагменты
• Создать и обработать векторные эмбеддинги
•Задать любой вопрос боту и получить ответ
Инициирование модели OpenAI
Запустим модель LLM и добавим в код ключ API. Мы будем использовать модель gpt-3.5-turbo , но вы можете выбрать любую другую.
Загрузка исходго видео.
Скопируйте и вставьте ссылку на видео с YouTube. Загрузите текст видео с помощью функции
Разделение текста на фрагменты
Размделим весь PDF-файл с текстом из видео на фрагменты с помощью функциии
Создание и хранение векторных эмбеддингов
Настроим функцию эмбедингов
Настроим запросы
С помощью этого чат-бота вы можете загрузить любое видео,, задать любые вопросы по нему и получить искомое за считанные секунды с помощью ии-бота.
📌Бесплатный курс от Activeloop на LangChain & Vector Databases in Production.
📌pinecone
📌Статья
@data_analysis_ml
Просмотр часового видеоролика на YouTube по любой научной теме, безусловно, непростая задача. ИИ может помочь с этим.
К концу этого поста вы сможете создать свой собственный чат-бот для YouTube с искусственным интеллектом.
Я проведу вас через весь процесс шаг за шагом. Вы сможете:
•Создать модели OpenAI
•Загрузить исходные документы
•Разделить текст на фрагменты
• Создать и обработать векторные эмбеддинги
•Задать любой вопрос боту и получить ответ
Инициирование модели OpenAI
Запустим модель LLM и добавим в код ключ API. Мы будем использовать модель gpt-3.5-turbo , но вы можете выбрать любую другую.
from langchain.llms import OpenAI
llm = OpenAI(model_name = 'gpt-3.5-turbo',
openai_api_key = 'ваш ключ',
temperature = 0.7)
Загрузка исходго видео.
Скопируйте и вставьте ссылку на видео с YouTube. Загрузите текст видео с помощью функции
loader.load()
и сохраните его в переменной, как показано ниже.from langchain.document_loaders import YoutubeLoader
loader = YoutubeLoader.from_youtube_url('<https://www.youtube.com/watch?v=ogEalPMUCSY&pp=ygUJTGFuZ2NoaWFu>')
doc = loader.load()
Разделение текста на фрагменты
Размделим весь PDF-файл с текстом из видео на фрагменты с помощью функциии
RecursiveCharacterTextSplitter.
Установим размер фрагмента 1000 и значение перекрытия фрагментов 10. Это позволит разбить документ на фрагменты по 1000 слов.from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=10)
text_chunks = text_splitter.split_documents(doc)
Создание и хранение векторных эмбеддингов
Настроим функцию эмбедингов
OpenAIEmbeddings
и хранилище векторов Pinecone
. Подключим pinecone. Загрузите все текстовые фрагменты в векторное хранилище с помощью функции Pinecone.from_texts.
from langchain.vectorstores import Pinecone
from langchain.embeddings import OpenAIEmbeddings
import pinecone
import tqdm
import os
embeddings = OpenAIEmbeddings(openai_api_key= 'ваш апи ключ')
pinecone.init(
api_key= 'PINECONE_API_KEY'
environment = 'PINECONE_API_ENVIRON'
)
index_name = 'chatchain'
docsearch = Pinecone.from_texts(texts = [t.page_content for t in text_chunks],embedding=embeddings, index_name=index_name)
Настроим запросы
similarity_searh
и k=4 выдаст 4 наиболее релевантных фрагмента, относящихся к нашему запросу. Передайте эти документы в load_qa_chain. Он просуммирует фрагменты в соответствии с нашим запросом и выдаст наилучший возможный ответ.from langchain.chains.question_answering import load_qa_chain
query = 'what is vector embeddings'
docs = docsearch.similarity_search(query, k=4)
chain = load_qa_chain(llm, chain_type = 'stuff')
chain.run(input_documents=docs, question=query)
С помощью этого чат-бота вы можете загрузить любое видео,, задать любые вопросы по нему и получить искомое за считанные секунды с помощью ии-бота.
📌Бесплатный курс от Activeloop на LangChain & Vector Databases in Production.
📌pinecone
📌Статья
@data_analysis_ml
👍13🔥6❤3🤔1
Дата-инженер контролирует и анализирует большие наборы данных. SQL — мощный инструмент выполнения запросов и манипулирования данными, и для создания эффективных решений здесь имеется немало продвинутых функциональных средств. Рассмотрим ряд важных для дата-инженеров тем SQL, иллюстрируя их примерами применения набора данных.
Пример набора данных
Имеется три таблицы:
• product_table с данными различных продуктов — название, цена, категория;
• category_table с данными о категориях продуктов;
• order_table с данными о заказах: заказанный продукт, его количество, дата заказа.
Вот схема каждой таблицы:
product_table
+----+----------------------+-------+-------------+
| id | Название | Цена | category_id |
+----+----------------------+-------+-------------+
| 1 | iPhone 13 | 1000 | 2 |
| 2 | Galaxy S21 | 800 | 2 |
| 3 | Pixel 6 | 700 | 2 |
| 4 | MacBook Air | 1000 | 4 |
| 5 | Surface Pro 8 | 1200 | 4 |
| 6 | iPad Pro | 800 | 3 |
| 7 | iPad Mini | 400 | 9 |
| 8 | Smart TV | 800 | 1 |
| 9 | Home Theater System | 600 | 1 |
| 10 | Galaxy S21 Ultra | 1400 | 2 |
| 11 | iPhone 13 Pro Max | 1300 | 2 |
| 12 | Pixel 6 Pro | 1000 | 2 |
+----+----------------------+-------+-------------+
category_table
+----+-------------+
| id | Название |
+----+-------------+
| 1 | Электроника |
| 2 | Телефоны |
| 3 | Планшеты |
| 4 | Ноутбуки |
| 5 | Бытовая техника |
| 6 | Одежда |
| 7 | Спорттовары |
| 8 | Игрушки |
| 9 | Аксессуары |
+----+-------------+
order_table
+----+------------+-------------+------------+
| id | product_id | Количество | Дата |
+----+------------+-------------+------------+
| 1 | 1 | 2 | 2022-03-28 |
| 2 | 2 | 1 | 2022-03-28 |
| 3 | 3 | 3 | 2022-03-29 |
| 4 | 4 | 1 | 2022-03-30 |
| 5 | 5 | 2 | 2022-03-31 |
| 6 | 6 | 3 | 2022-03-31 |
| 7 | 7 | 2 | 2022-03-31 |
| 8 | 8 | 1 | 2022-03-31 |
| 9 | 9 | 1 | 2022-03-31 |
+--------------------------------------------+
Фильтрация данных
Предложение WHERE — это важный SQL-функционал для фильтрования данных по конкретным условиям. WHERE, которым определяется условие включения данных в результаты, добавляется в конце оператора SELECT.
Пример. Чтобы получить все продукты дороже 1000 $, применяем WHERE для их фильтрации по цене, в результаты включаются только продукты дороже 1000 $:
SELECT *
FROM product_table
WHERE price > 1000;
Возвращаемый результат:
+----+---------------------+-------+-------------+
| id | Название | Цена | category_id |
+----+---------------------+-------+-------------+
| 5 | Surface Pro 8 | 1200 | 4 |
| 10 | Galaxy S21 Ultra | 1400 | 2 |
| 11 | iPhone 13 Pro Max | 1300 | 2 |
+----+---------------------+-------+-------------+
Объединения
Чтобы иметь полную картину о данных нескольких таблиц, эти таблицы объединяют. Для этого в SQL имеются внутренние, левые, правые и полные внешние объединения.
Пример. Чтобы получить список всех заказов и название заказанного продукта, с помощью объединения в SQL объединяем таблицы: в одной данные о заказе, в другой — о продукте:
SELECT order_table.*, product_table.name
FROM order_table
INNER JOIN product_table ON order_table.product_id = product_table.id;
📌 Читать дальше
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🥱11❤2🔥2
🗺 Визуализируем графы взаимосвязей на картах
GraphMining (далее –GM) – одно из направлений анализа данных, которое позволяет представить комплексные данные в виде графов.
В Python наиболее популярными библиотеками для GM являются NetworkX, pyviz и graph-tool. С их помощью можно формировать и кастомизировать различные виды графов, а, так же, вычислять множество метрик для анализа.
Однако, есть проблема: стандартные библиотеки GM не работают с картами, а библиотеки для работы с картами не формируют графы. На самом деле существует очевидное и простое решение, которое я опишу далее.
В начале – импортируем необходимые библиотеки:
В 75% строках датасета количество операций от отправителя к получателю 5 или меньше. Отфильтруем данные, оставив наиболее сильные связи:
Далее, необходимо получить набор точек (nodes) с идентификаторами клиентов и их координатами и посчитать общую сумму операций у клиента – отправлений и поступлений:
Нормализуем объем операций, данный столбец будет использоваться в качестве параметра размера точки:
Обогащаем информацией о суммах отправлений и поступлений каждого идентификатора:
Получил всю необходимую информацию для нанесения точек на карту:
Далее эти точки необходимо соединить – формирую список ребер:
📌 Читать дальше
@data_analysis_ml
GraphMining (далее –GM) – одно из направлений анализа данных, которое позволяет представить комплексные данные в виде графов.
В Python наиболее популярными библиотеками для GM являются NetworkX, pyviz и graph-tool. С их помощью можно формировать и кастомизировать различные виды графов, а, так же, вычислять множество метрик для анализа.
Однако, есть проблема: стандартные библиотеки GM не работают с картами, а библиотеки для работы с картами не формируют графы. На самом деле существует очевидное и простое решение, которое я опишу далее.
В начале – импортируем необходимые библиотеки:
import folium
import pandas as pd
import numpy as np
Допустим, что у меня имеется датасет с аггрегированной информацией о переводах от одного клиента другому:data = pd.read_csv('data.csv', sep = ';')
В 75% строках датасета количество операций от отправителя к получателю 5 или меньше. Отфильтруем данные, оставив наиболее сильные связи:
data_clean = data[data['opers_cnt']>5]
Далее, необходимо получить набор точек (nodes) с идентификаторами клиентов и их координатами и посчитать общую сумму операций у клиента – отправлений и поступлений:
data_senders = data_clean.rename(
columns = {'id_send':'id','lat_send':'lat','lon_send':'lon'})[['id','lat','lon','opers_sum']]
data_receivers = data_clean.rename(
columns = {'id_recei':'id','lat_rec':'lat','lon_rec':'lon'})[['id','lat','lon','opers_sum']]
nodes = (pd.concat([data_senders, data_receivers])
.groupby(['id','lat','lon'])['opers_sum']
.sum()
.reset_index())
Нормализуем объем операций, данный столбец будет использоваться в качестве параметра размера точки:
nodes['opers_sum_scaled'] = (nodes['opers_sum']-nodes['opers_sum'].min()) / (nodes['opers_sum'].max()-nodes['opers_sum'].min())*20
Обогащаем информацией о суммах отправлений и поступлений каждого идентификатора:
id_send_opers = (data_clean.groupby(['id_send'])['opers_sum'].sum()
.reset_index()
.rename(columns = {'id_send':'id','opers_sum':'send_sum'}))
id_rec_opers = (data_clean.groupby(['id_recei'])['opers_sum'].sum()
.reset_index()
.rename(columns = {'id_recei':'id','opers_sum':'rec_sum'}))
nodes = nodes.merge(id_send_opers, on ='id', how = 'left')
nodes = nodes.merge(id_rec_opers, on ='id', how = 'left')
nodes = nodes.fillna(0)
Получил всю необходимую информацию для нанесения точек на карту:
Далее эти точки необходимо соединить – формирую список ребер:
edges = (pd.DataFrame(np.unique(np.array(['-'.join(sorted(edge)) for edge in zip(for_edges['id_send'],for_edges['id_recei'])])))[0]
.str.split('-', expand = True).rename(columns=({0:'id_x', 1:'id_y'})))
coords_list = nodes[['id','lat','lon']]
edges = edges.merge(coords_list.rename(columns={'id':'id_x'}), on ='id_x', how = 'left')
edges = edges.merge(coords_list.rename(columns={'id':'id_y'}), on ='id_y', how = 'left')
📌 Читать дальше
@data_analysis_ml
👍10❤5🔥5
🟡 Дайджест полезных материалов из мира Data science за неделю
Почитать:
— ML-искусство переживать проблемы: как избегать разочарований и находить аналоги товаров в периоды out-of-stock
— Генеративный ИИ с базой данных SQL: Персональный чатбот разработчика SQL
— Как мы научили ML-модель выбирать товары для акций в СберМаркете и увеличили ROI скидок в 8 раз
— Руководство по созданию бота YouTube с помощью LangChain и Pinecone
— Распределённое обучение с PyTorch на кластере для тех, кто спешит
— У вас неправильные перцептроны
— Как аугментация помогает нейронным сетям решать уравнения в частных производных
— Дропаем ранжирующие метрики в рекомендательной системе, часть 1: визуальный анализ и popularity bias
— «Диалектик», независимое социалистическое медиа, рассказывает о своих NLP проектах, публикует датасеты и делится кодом
— Скрытая угроза: критерии классификации атак на нейронные сети
— Список популярных утечек с GitHub: Анализ репозиториев компаний
— ИИ самоучка: модель реконструкции голограмм с самоконтролируемым обучением
— Основные ресурсы нейронных сетей для начинающих и энтузиастов
— Анализ настроений в отзывах Trip Advisor с помощью модели трансформеров Hugging Face
— SaaS platform with integrated 3D body measurement technology
— Visualizing shapefiles in R with sf and ggplot2!
— Reading data from csv file
— Roadmap to Become a Database Engineer
— Integration of Machine Learning through AWS Batch
— ScoreCast: A Tool for Predicting Football Game Outcomes in Minor Leagues
— Global Generalization Injection: Using Generated Sentences in Pre-Training Transformers
— Grammar of Graphics: how it helps us to create clear visualizations and tell stories with data
— Data Science Zero to Hero - 2.1: The Machine Learning Cycle
— How Fast Does Your Website Need to Be?
Посмотреть:
🌐Как работать с декораторами в Python. Часть 1
🌐 Методы сокращения и улучшения кода на Python
🌐 Продвинутые методы улучшения кода на Python
🌐 Создаем продвинутый интерфейс на Python
🌐 Harvard CS50’s Artificial Intelligence with Python – Full University Course
🌐Реальное Собеседование Data Science | ВСЯ ТЕОРИЯ В ОДНОМ ВИДЕО
Хорошего дня!
❤️ Лайк, если полезно
@data_analysis_ml
Почитать:
— ML-искусство переживать проблемы: как избегать разочарований и находить аналоги товаров в периоды out-of-stock
— Генеративный ИИ с базой данных SQL: Персональный чатбот разработчика SQL
— Как мы научили ML-модель выбирать товары для акций в СберМаркете и увеличили ROI скидок в 8 раз
— Руководство по созданию бота YouTube с помощью LangChain и Pinecone
— Распределённое обучение с PyTorch на кластере для тех, кто спешит
— У вас неправильные перцептроны
— Как аугментация помогает нейронным сетям решать уравнения в частных производных
— Дропаем ранжирующие метрики в рекомендательной системе, часть 1: визуальный анализ и popularity bias
— «Диалектик», независимое социалистическое медиа, рассказывает о своих NLP проектах, публикует датасеты и делится кодом
— Скрытая угроза: критерии классификации атак на нейронные сети
— Список популярных утечек с GitHub: Анализ репозиториев компаний
— ИИ самоучка: модель реконструкции голограмм с самоконтролируемым обучением
— Основные ресурсы нейронных сетей для начинающих и энтузиастов
— Анализ настроений в отзывах Trip Advisor с помощью модели трансформеров Hugging Face
— SaaS platform with integrated 3D body measurement technology
— Visualizing shapefiles in R with sf and ggplot2!
— Reading data from csv file
— Roadmap to Become a Database Engineer
— Integration of Machine Learning through AWS Batch
— ScoreCast: A Tool for Predicting Football Game Outcomes in Minor Leagues
— Global Generalization Injection: Using Generated Sentences in Pre-Training Transformers
— Grammar of Graphics: how it helps us to create clear visualizations and tell stories with data
— Data Science Zero to Hero - 2.1: The Machine Learning Cycle
— How Fast Does Your Website Need to Be?
Посмотреть:
🌐Как работать с декораторами в Python. Часть 1
🌐 Методы сокращения и улучшения кода на Python
🌐 Продвинутые методы улучшения кода на Python
🌐 Создаем продвинутый интерфейс на Python
🌐 Harvard CS50’s Artificial Intelligence with Python – Full University Course
🌐Реальное Собеседование Data Science | ВСЯ ТЕОРИЯ В ОДНОМ ВИДЕО
Хорошего дня!
❤️ Лайк, если полезно
@data_analysis_ml
❤30👍6🔥6
🤗Гайд по развертыванию моделей Hugging Faceс помощью BentoML: DeepFloyd IF.
В этой статье показано, как интегрировать DeepFloyd IF с BentoML.
▪DeepFloyd IF - это современная модель преобразования текста в изображение с открытым исходным кодом.
▪BentoML - это платформа с открытым исходным кодом для настройки и развертывания моделей машинного обучения.
📌 Читать
@data_analysis_ml
В этой статье показано, как интегрировать DeepFloyd IF с BentoML.
▪DeepFloyd IF - это современная модель преобразования текста в изображение с открытым исходным кодом.
▪BentoML - это платформа с открытым исходным кодом для настройки и развертывания моделей машинного обучения.
📌 Читать
@data_analysis_ml
👍6❤3🔥3
🔍 Анализ данных для задач НЛП
• Для успешного NLP-проекта одним из важнейших этапов является предварительная обработка данных. В этой статье мы рассмотрим все шаги, связанные с анализом данных для любой задачи НЛП.
• Для анализа данных мы можем использовать статистические методы, вычислительные алгоритмы, чтобы обработать данные и повысить производительность модели. Шаги, описанные в этом посте, могут быть использованы для анализа данных для любой задачи НЛП.
Настройка среды
▪Первым шагом любого проекта является настройка среды, т.е. установка важных пакетов и импорт важных библиотек.
Обзор данных
▪Следующим этапом проекта будет загрузка датасета. В данном случае мы будем использовать набор данных твитов о катастрофах из Kaggle.
▪Мы можем загрузить наш датасет с помощью библиотеки pandas.
▪Для того чтобы получить общее представление о данных, мы можем просмотреть верхние строки набора данных с помощью функции head в pandas:
Для анализа столбца ключевых слов мы используем библиотеку seaborn, которая позволяет визуализировать распределение ключевых слов и их корреляцию с целью.
📌 Продолжение
@data_analysis_ml
• Для успешного NLP-проекта одним из важнейших этапов является предварительная обработка данных. В этой статье мы рассмотрим все шаги, связанные с анализом данных для любой задачи НЛП.
• Для анализа данных мы можем использовать статистические методы, вычислительные алгоритмы, чтобы обработать данные и повысить производительность модели. Шаги, описанные в этом посте, могут быть использованы для анализа данных для любой задачи НЛП.
Настройка среды
▪Первым шагом любого проекта является настройка среды, т.е. установка важных пакетов и импорт важных библиотек.
!pip install nltk
!pip install pandas
import pandas as pd
import nltk
from nltk.tokenize import sent_tokenize,word_tokenize
from nltk.stem import PorterStemmer
from nltk.corpus import stopwords
import re
Обзор данных
▪Следующим этапом проекта будет загрузка датасета. В данном случае мы будем использовать набор данных твитов о катастрофах из Kaggle.
▪Мы можем загрузить наш датасет с помощью библиотеки pandas.
df = pd.read_csv("/train.csv")
▪Для того чтобы получить общее представление о данных, мы можем просмотреть верхние строки набора данных с помощью функции head в pandas:
df.head(10)
Для анализа столбца ключевых слов мы используем библиотеку seaborn, которая позволяет визуализировать распределение ключевых слов и их корреляцию с целью.
plt.figure(figsize=(10,70))
sns.countplot(data=df,y="keyword",hue="target",saturation=0.50)
plt.legend(bbox_to_anchor=(1.02, 1), loc='upper left', borderaxespad=0)
plt.show()
📌 Продолжение
@data_analysis_ml
❤12👍3🔥1
При выборе баз данных для текущего проекта (или при замене тех, которые не отвечают вашим текущим потребностям) количество возможных вариантов очень велико. Это и хорошо, и плохо, ведь нужны какие-то критерии фильтрации.
Сегодня есть гораздо больше баз данных, чем когда-либо. В декабре 2012 года, когда DB-Engines.com впервые начал ранжировать базы данных, у него получился список из 73 систем (существенный рост по сравнению с самым первым списком из 18 систем). Спустя десять лет, на декабрь 2022 года в списке было уже почти четыреста систем. За последнее десятилетие произошёл настоящий кембрийский взрыв технологий баз данных.
Нужно ориентироваться в обширном пространстве вариантов: SQL, NoSQL, множество «многомодельных» баз данных, которые могут быть сочетанием SQL и NoSQL, или множественные модели данных NoSQL (сочетающие две или более опций: документы, ключи-значения, широкие столбцы, графы и так далее).
Кроме того, пользователи не должны путать популярность с применимостью для них. Хотя сетевой эффект имеет свои преимущества («Все пользуются X, поэтому не ошибусь, если выберу её»), он также может привести к групповому мышлению, торможению инноваций и конкуренции.
▪ Читать статью
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1🔥1😱1
erid: LjN8KUZML
50 000 ₽ за хорошего аналитика
Присмотритесь к своим друзьями и знакомым — вдруг среди них есть Android-аналитик который ищет работу мечты. А тут Финтех Яндекса как раз нанимает, обещает ценить и хорошо платить, да ещё и даёт 50 000 ₽ за рекомендацию.
Всё что нужно — заполнить короткую анкету на сайте Финтеха Яндекса. И все будут в плюсе: у знакомого — хорошая работа, у Яндекса — крутой специалист, а у вас — бонус за рекомендацию
Реклама, ООО «Яндекс»
50 000 ₽ за хорошего аналитика
Присмотритесь к своим друзьями и знакомым — вдруг среди них есть Android-аналитик который ищет работу мечты. А тут Финтех Яндекса как раз нанимает, обещает ценить и хорошо платить, да ещё и даёт 50 000 ₽ за рекомендацию.
Всё что нужно — заполнить короткую анкету на сайте Финтеха Яндекса. И все будут в плюсе: у знакомого — хорошая работа, у Яндекса — крутой специалист, а у вас — бонус за рекомендацию
Реклама, ООО «Яндекс»
👍8🤩3❤1🤨1
🔢 Как аугментация помогает нейронным сетям решать уравнения в частных производных
Обширные явления реального мира, такие как турбулентность, атмосферная циркуляция и напряжение деформируемых материалов и т.д., описываются лежащими в их основе дифференциальными уравнениями в частных производных (PDEs).
Следовательно, решение PDEs является общей фундаментальной проблемой для многих научных и инженерных областей и может принести дальнейшую пользу важным приложениям реального мира. Например, моделирование воздушного потока для проектирования аэродинамического профиля крыла летательного аппарата, моделирование атмосферы для прогнозирования погоды, молекулярная динамика и т.д.
Традиционный подход к численному решению PDEs основан на использовании различных солверов, которые используют те или иные классические методы. Например, метод конечных элементов (FEM) или метод конечных разностей (FDM), которые решают PDEs путем дискретизации расчетной области. Однако, в этом случае точность численного решения сильно зависит от дискретизации расчетной сетки: грубые сетки работают быстро, но менее точно; мелкие — точны, но медленны. В реальных приложениях решение PDEs обычно требует очень хорошей дискретизации и, следовательно, очень сложны, времязатратны и трудоемки для традиционных солверов.
В последние несколько лет на решение этой проблемы направлены усилия ученых, занимающихся нейронными сетями (NNs). Широко известно, что NNs являются универсальными аппроксиматорами непрерывных функций. Более важным фактом является то, что NN с одним скрытым слоем может точно аппроксимировать любой нелинейный непрерывный оператор. Недавно в рамках нового направления было предложено изучение бесконечномерных операторов с помощью NNs. Нейронный оператор устраняет зависящую от сетки дискретизацию, создавая единый набор параметров NN, которые можно использовать с различными дискретизациями расчетной сетки.
В этом случае мы имеем возможность передавать решения между расчетными сетками. Кроме того, нейронный оператор нужно обучить только один раз. Наконец, нейронный оператор не требует знания лежащего в основе PDE, только данные, полученные экспериментально или с помощью солверов.
📌 Читать дальше
@data_analysis_ml
Обширные явления реального мира, такие как турбулентность, атмосферная циркуляция и напряжение деформируемых материалов и т.д., описываются лежащими в их основе дифференциальными уравнениями в частных производных (PDEs).
Следовательно, решение PDEs является общей фундаментальной проблемой для многих научных и инженерных областей и может принести дальнейшую пользу важным приложениям реального мира. Например, моделирование воздушного потока для проектирования аэродинамического профиля крыла летательного аппарата, моделирование атмосферы для прогнозирования погоды, молекулярная динамика и т.д.
Традиционный подход к численному решению PDEs основан на использовании различных солверов, которые используют те или иные классические методы. Например, метод конечных элементов (FEM) или метод конечных разностей (FDM), которые решают PDEs путем дискретизации расчетной области. Однако, в этом случае точность численного решения сильно зависит от дискретизации расчетной сетки: грубые сетки работают быстро, но менее точно; мелкие — точны, но медленны. В реальных приложениях решение PDEs обычно требует очень хорошей дискретизации и, следовательно, очень сложны, времязатратны и трудоемки для традиционных солверов.
В последние несколько лет на решение этой проблемы направлены усилия ученых, занимающихся нейронными сетями (NNs). Широко известно, что NNs являются универсальными аппроксиматорами непрерывных функций. Более важным фактом является то, что NN с одним скрытым слоем может точно аппроксимировать любой нелинейный непрерывный оператор. Недавно в рамках нового направления было предложено изучение бесконечномерных операторов с помощью NNs. Нейронный оператор устраняет зависящую от сетки дискретизацию, создавая единый набор параметров NN, которые можно использовать с различными дискретизациями расчетной сетки.
В этом случае мы имеем возможность передавать решения между расчетными сетками. Кроме того, нейронный оператор нужно обучить только один раз. Наконец, нейронный оператор не требует знания лежащего в основе PDE, только данные, полученные экспериментально или с помощью солверов.
📌 Читать дальше
@data_analysis_ml
👍13❤3🔥1
Сегодня я рассмотрю алгоритм чтения и парсинга .
pst
файлов, написанный на python. Для работы с одним файлом и оставлю в стороне параллельную обработку, которую стоит использовать при работе с большим числом архивов.Для открытия и чтения .pst файлов воспользуюсь pypff – python оберткой для библиотеки libpff, написанной на C. Эта библиотека позволяет работать с форматами PFF (Personal Folder File) и OFF (Offline Folder File), в которые как раз и входит формат .pst, наряду с форматами .pab (Personal Address Book) и .ost (Offline Storage Table).
# Установка библиотеки
pip install libpff-python
# Импортирование библиотеки
import pypff
Работа с файлом будет подобна работе с древовидным архивом. Поэтому в первую очередь после чтения файла необходимо получить корневую папку:
pst = pypff.file()
pst.open(“example.pst”)
root = pst.get_root_folder()
Дальше порядок действий будет отличаться в зависимости от задач. Например, вы можете посмотреть список дочерних писем или папок и выбрать из них нужные и обработать только их.
В случае с задачей поиска идентификаторов, буду вынужден обрабатывать все письма из всех папок, так как обрабатываемые почтовые ящики имеют разную структуру папок (в первую очередь разные названия и степени вложенности).
Для получения списка всех писем воспользуюсь рекурсивным методом, который проходит по папке и собирает содержимое из нее и её дочерних папок:
def parse_folder(base):
messages = []
for folder in base.sub_folders:
if folder.number_of_sub_folders:
# Извлечение писем из дочерней папки
messages += parse_folder(folder)
# Обработка писем в текущей папке
for message in folder.sub_messages:
messages.append({
"folder": folder.name,
"subject": message.subject,
"sender_name": message.sender_name,
"sender_email": get_sender_email(message),
"datetime": message.client_submit_time,
"body_plain": get_body(message)
})
return messages
# Извлечение всех писем из файла
messages = parse_folder(root)
Для анализа была необходима следующая информация: тема письма, тело письма, папка, дата и время и данные об отправителе. Большую часть этой информации можно получить, просто взяв сами атрибуты объекта, но такой вариант не сработает для тела письма и почтового адреса отправителя.
Как можно видеть из списка атрибутов
pff.message
, письмо может иметь тело в трех форматах (plain_text, html, rtf), а точнее в одном из этих трех. Для задачи меня будет интересовать получение тела письма в формате текста, поэтому необходимо конвертировать html строки (которых оказалось больше всего). Для этого воспользуемся библиотекой BeautilfulSoup: создадим объект bs на основе нашего html_body и воспользуемся методом get_text(), чтобы получить очищенный от
html
тегов текст письма. На этом можно было бы остановится, но в результирующих строках оставались комментарии с описанием стилей и шрифтов, поэтому дополнительно производится их удаление с помощью регулярных выражений, а также замена двойных символов перевода строки на одинарные.📌Читать дальше
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤2🔥2
⚡ Data Cleaning and Preprocessing for data science beginners
В этом руководстве рассмотрены все важнейшие этапы с примера кода по очистке и предварительной обработке данных.
В книге описано, как качество данных может напрямую влиять на эффективность прогностических моделей и выводы, которые можно сделать на основе проведенного анализа. Понимание этих основополагающих процессов позволит превратить беспорядочные данные реального мира в золотую жилу надежных выводов.
📚Скачать книгу
@data_analysis_ml
В этом руководстве рассмотрены все важнейшие этапы с примера кода по очистке и предварительной обработке данных.
В книге описано, как качество данных может напрямую влиять на эффективность прогностических моделей и выводы, которые можно сделать на основе проведенного анализа. Понимание этих основополагающих процессов позволит превратить беспорядочные данные реального мира в золотую жилу надежных выводов.
📚Скачать книгу
@data_analysis_ml
👍10🔥4❤1
Эмбеддинг - это как переводчик, преобразующий слова в числа, чтобы алгоритмы могли их понять.
Chroma позволяет легко создавать эмбеддинги из документов и находить похожие результаты, используя всего нескольких строк кода.
▪Github
▪Colab
@data_analysis_ml
Chroma позволяет легко создавать эмбеддинги из документов и находить похожие результаты, используя всего нескольких строк кода.
▪Github
▪Colab
@data_analysis_ml
👍19❤1🔥1🤔1
Яндекс уже применяет нейросеть YandexGPT в браузере и в Алисе, голосовом помощнике. Какие профессии нужны, чтобы нейросеть становилась умнее, и как отбирают данные для обучения — расскажут сотрудники, работающие над YandexGPT.
→ Бесплатно, 21 августа в 19:00 Мск
Наши спикеры:
◾️Николай Зинов
Руководитель группы YaLM Alignment в Яндексе
◾️Ирина Барская
Руководитель службы аналитики и исследований в Яндексе
Вы узнаете:
— что такое нейросетевые языковые модели;
— как модель предобучают на гигантском наборе текстов, а затем учат делать то, что попросит человек;
— кто в этом участвует: разработчики, аналитики и другие специалисты;
— как аналитики собирают данные и почему эти данные так важны.
→ Зарегистрируйтесь на вебинар
Реклама АНО ДПО "Образовательные технологии Яндекса", ИНН:7704282033, erid:LjN8JvPzS
→ Бесплатно, 21 августа в 19:00 Мск
Наши спикеры:
◾️Николай Зинов
Руководитель группы YaLM Alignment в Яндексе
◾️Ирина Барская
Руководитель службы аналитики и исследований в Яндексе
Вы узнаете:
— что такое нейросетевые языковые модели;
— как модель предобучают на гигантском наборе текстов, а затем учат делать то, что попросит человек;
— кто в этом участвует: разработчики, аналитики и другие специалисты;
— как аналитики собирают данные и почему эти данные так важны.
→ Зарегистрируйтесь на вебинар
Реклама АНО ДПО "Образовательные технологии Яндекса", ИНН:7704282033, erid:LjN8JvPzS
👍5👎2
✔ Redis Explained
Глубокое техническое погружение во все тонкости Redis.
В статье рассматриваются различные топологии Redis, персистентность данных и форкинг процессов.
Отличная иллюстрированная статья для глубокого понимания Redis.
▪Читать
@data_analysis_ml
Глубокое техническое погружение во все тонкости Redis.
В статье рассматриваются различные топологии Redis, персистентность данных и форкинг процессов.
Отличная иллюстрированная статья для глубокого понимания Redis.
▪Читать
@data_analysis_ml
👍10🔥2❤1
Для решения задачи мониторинга данных в голландском банке ING была разработана библиотека Popmon для Python, название которой является сокращением от «population monitoring» — «наблюдение за популяцией».
В качестве датасета для демонстрации я буду использовать данные ежедневных замеров метеорологических сенсоров с 1961 по 1978 год: показания трех датчиков, минимальная и максимальная температура воздуха, минимальная температура травы, количество осадков и скорость ветра. Целью датасета является предсказание скорости ветра. Источник находится здесь.
Данная библиотека позволяет найти отклонения по входным и выходным данным в датасетах. Также имеется возможность провести сравнительный анализ датасета на основе статистики из другого.
Popmon умеет работать с датафреймами из библиотек Pandas и PySpark. В целях демонстрации я буду использовать Pandas.
▪Читать дальше
▪Github
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🥰1
🟡 Дайджест полезных материалов из мира : Data Science за неделю
Почитать:
— Опыт работы с данными или с чем может столкнуться аналитик
— Кто, как и ради чего создаёт онлайн-образование в IT-сфере: истории пяти экспертов
— Тестирование грамматики Llama Cpp, основанной на ограничениях выборки
— 2 ВИЗУАЛИЗАЦИИ, КОТОРЫЕ ЛЕГЧЕ С ПИТОНОМ (по сравнению с TABLEAU)
— Как получить real-time данные смарт-контракта, используя The Graph (пишем свой сабграф)
— Apache Spark 3.4 для Databricks Runtime 13.0
— ML-искусство переживать проблемы: как избегать разочарований и находить аналоги товаров в периоды out-of-stock
— Enhancing Database Performance: In-Depth Query Optimization with ApacheAGE
— Step by step guide to becoming a Data Scientist in 2023
— Visual Language Processing: Bridging Vision and Language with Transformers
— Guia Avançado do Método `merge` no Pandas com Exemplos
— 8 Completely FREE Big Data Resources
— CV-based self-diagnosis telemedicine application
— A Powerful Tool for Data Engineers: Apache Doris 2.0.0 is Production-Ready!
— Embracing Modularity: Template for Structuring Machine Learning Projects
— ⛏ Get Mining into Data with These Top 5 Resources
— Python Data Type
Посмотреть:
🌐 Универсальный рецепт по написанию и аннотированию декораторов Python.
🌐 NVIDIA Omniverse: Virtual Worlds Come Alive
🌐 Lightning Interview "Hands-On Generative AI Applications"
Хорошего дня!
@data_analysis_ml
Почитать:
— Опыт работы с данными или с чем может столкнуться аналитик
— Кто, как и ради чего создаёт онлайн-образование в IT-сфере: истории пяти экспертов
— Тестирование грамматики Llama Cpp, основанной на ограничениях выборки
— 2 ВИЗУАЛИЗАЦИИ, КОТОРЫЕ ЛЕГЧЕ С ПИТОНОМ (по сравнению с TABLEAU)
— Как получить real-time данные смарт-контракта, используя The Graph (пишем свой сабграф)
— Apache Spark 3.4 для Databricks Runtime 13.0
— ML-искусство переживать проблемы: как избегать разочарований и находить аналоги товаров в периоды out-of-stock
— Enhancing Database Performance: In-Depth Query Optimization with ApacheAGE
— Step by step guide to becoming a Data Scientist in 2023
— Visual Language Processing: Bridging Vision and Language with Transformers
— Guia Avançado do Método `merge` no Pandas com Exemplos
— 8 Completely FREE Big Data Resources
— CV-based self-diagnosis telemedicine application
— A Powerful Tool for Data Engineers: Apache Doris 2.0.0 is Production-Ready!
— Embracing Modularity: Template for Structuring Machine Learning Projects
— ⛏ Get Mining into Data with These Top 5 Resources
— Python Data Type
Посмотреть:
🌐 Универсальный рецепт по написанию и аннотированию декораторов Python.
🌐 NVIDIA Omniverse: Virtual Worlds Come Alive
🌐 Lightning Interview "Hands-On Generative AI Applications"
Хорошего дня!
@data_analysis_ml
👍8🔥4❤3
Если вы хотите автоматически спарить веб-сайт за несколько строк кода на #Python, попробуйте autoscraper.
С помощью autoscraper можно извлекать элементы с определенными шаблонами, просто предоставив текст с этим шаблоном.
$ pip install autoscraper
▪Github
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥4❤1
Парсинг или веб-скрапинг — это автоматизированный сбор и структурирование информации из открытых источников при помощи специальной программы, называемой парсером. Технически получить доступ к открытой информации можно с помощью API, но как правило доступ ограничен или требует вложения денежных средств.
Рассмотрим принцип работы парсинга. Данный процесс происходит в несколько этапов:
1. Отправка HTTP-запроса на сервер.
2. Поиск необходимых данных.
3. Трансформация полученных данных.
При отправке HTTP-запроса на сервер у нас есть два варианта:
• отправить запрос и ждать, пока сервер даст ответ (синхронный запрос);
• отправить запрос и продолжить работу. Когда данные будут получены, программа вызовет функцию обработчик события (асинхронный запрос).
У каждой из представленных реализаций есть свои плюсы и минусы. Так, например, асинхронный запрос значительно увеличивает производительность кода, поскольку позволяет обрабатывать несколько запросов одновременно, но его довольно сложно реализовать. В свою очередь, синхронный запрос прост в разработке и отладке, но имеет низкую эффективность за счёт последовательной отправки HTTP-запросов.
Основные проблемы парсинга
Парсинг, как и любая технология, сталкивается с рядом проблем. Перечислим наиболее актуальные:
• блокировка доступа к данным: использование CAPTCHA, блокирование IP-адресов и другое;
• скорость выполнения: большой объем данных требует много ресурсов и времени;
• сложность обработки ошибок: ошибки соединения, ошибки синтаксиса и другие;
• работа с динамическим контентом: необходимо разрабатывать специальные инструменты для анализа сайтов, использующих технологии ajax и javascript.
Реализация парсера на основе Beautiful Soup. Обзор возможностей.
Beautiful Soup — это библиотека Python для извлечения данных из файлов форматов HTML и XML. Beautiful Soup (или BS4) использует DOM-модель (Document Object Model) для трансформации и извлечения данных.
Основными возможностями BS4 являются:
• поиск элементов на странице по тегу, классу, id и другим атрибутам;
• извлечение текста и атрибутов элементов;
• навигация по дереву элементов страницы;
• манипуляции с HTML-кодом, такие как добавление, удаление или изменение элементов.
Для извлечения данных из HTML-кода необходимо использовать конструктор BeautifulSoup(), который принимает два аргумента: разметку (HTML-код) и анализатор (необходим для обработки HTML-кода). BS4 поддерживает различные библиотеки для синтаксического анализа, включая стандартные html.parser, а также более быстрые, такие как lxml и html5lib. В нашем случае будем использовать lxml. Также, для отправки запросов на сайт воспользуемся библиотекой requests.
Реализация кода на базе Beautiful Soup
Для начала установим и импортируем библиотеки.
# установка
pip install beautifulsoup4
pip install requests
pip install lxml
# импорт
from bs4 import BeautifulSoup
import requests
📌 Продолжение
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍5🔥2