Сбор
Чтение групп через Telethon, с личного аккаунта и только там, где доступ есть законно. Забирается история и всё новое, что появляется дальше. Никаких «выкачать чужую закрытую базу» — работаем с тем, что человек и так видит у себя в приложении.
Кейс 10 · Чаты → база объектов
Рынок недвижимости Дубая живёт в Telegram-группах: предложения приходят обычным текстом, вперемешку с болтовнёй, и через час тонут в ленте. Собрал пайплайн, который читает эти группы, достаёт из сообщений поля и складывает объекты в базу и в Excel. Точность извлечения — около 97%, и это измеренная цифра, а не самооценка.
сообщений прочитано и разобрано
структурированных карточек объектов на выходе
точность извлечения полей, проверена сверкой с исходниками
Брокеры в Дубае обмениваются объектами в Telegram. Не в базе, не в CRM — в группах, обычными сообщениями: район, проект, площадь, этаж, условия, контакт. Формат у каждого свой, половина сообщений — с эмодзи и сокращениями, одно и то же предложение ходит по пяти группам сразу.
Пока лента идёт, работать с ней можно только глазами. Вопрос клиента «что есть в этом районе с такой площадью» превращается в перелистывание чатов и в память конкретного человека. Найденное вчера сегодня уже не находится, а объект, который был показан три часа назад, всплывает снова — от другого посредника и с другими деталями.
Нужно было превратить поток переписки в то, к чему можно задать вопрос: таблицу объектов, где у каждого есть поля, и одинаковые объекты не лежат пятью строками.
Чтение групп через Telethon, с личного аккаунта и только там, где доступ есть законно. Забирается история и всё новое, что появляется дальше. Никаких «выкачать чужую закрытую базу» — работаем с тем, что человек и так видит у себя в приложении.
Здесь регулярные выражения ломаются: живой текст брокера не имеет формата. Разбор делает языковая модель по жёсткой схеме полей — район, проект, тип объекта, площадь, этажность, условия сделки, кто разместил. Одно сообщение часто содержит не один объект, а список из нескольких, поэтому карточек на выходе оказалось больше, чем сообщений на входе: 83 000 против 47 000.
Одно предложение публикуется в нескольких группах и пересылается дальше. Похожие карточки сводятся между собой, чтобы в базе объект был один, а не пять его отражений. Без этого шага таблица красивая, но пользоваться ей нельзя.
Проверял не тот процесс, который извлекал: случайные карточки сверялись с исходными сообщениями поле за полем. Отсюда цифра ~97% и её прямое следствие — примерно три карточки из ста нуждаются в человеческом взгляде. Поэтому я и называю 97, а не пишу «полная точность».
SQLite — чтобы задавать вопросы запросом и подключать к чему угодно. Excel — чтобы открыть и отфильтровать без всякого обучения. Плюс карточки объектов в виде, пригодном для отправки клиенту: брокер выбирает объект и отправляет готовое описание, а не пересобирает его руками из чужого сообщения.
ПОХОЖАЯ ЗАДАЧА → РАЗБОР · 0 ₽ · ДО КОНЦА ДНЯ
Опишите её в двух-трёх предложениях. За рабочий день верну разбор: что автоматизируется, что не стоит трогать, срок и вилка.
Что придёт в ответ
Недвижимость тут не главное — главное, что ценные данные лежат в переписке. Тем же способом я разбирал офлайн-экспорты рабочих чатов с поставщиками: 17 400 структурированных офферов с ценами и условиями плюс Excel-дашборд поверх них.
Это работает везде, где предложения, заявки или прайсы приходят текстом: закупки в чатах с поставщиками, входящие запросы в рабочих группах, объявления в отраслевых каналах. Вход — доступ к чатам или их экспорт. Выход — таблица с полями, по которой можно искать, считать и строить отчёты.
Если объём небольшой и всё помещается в голове одного менеджера, я скажу об этом прямо и не возьмусь: пайплайн окупается тогда, когда поток не помещается в человека.
Python и Telethon для сбора · языковая модель для разбора неструктурированного текста · SQLite как база · Excel как выдача для людей · отдельная проверка качества извлечения.
Кирилл Юсупов, Москва, собрал пайплайн, который прочитал 47 000 сообщений из групп по недвижимости Дубая и разложил их в 83 000 структурированных карточек объектов в SQLite и Excel. Сообщения написаны живым текстом без формата, поэтому поля извлекает языковая модель по заданной схеме, а не регулярные выражения; дубли одного объекта из разных групп сводятся в одну запись.
Около 97% полей — цифра измеренная: случайные карточки сверялись с исходными сообщениями отдельной проверкой, а не тем же процессом, который извлекал данные. Практический вывод честный: примерно три карточки из ста требуют человеческого взгляда, поэтому в проекте называется 97%, а не «полная точность».
Тем, у кого предложения, заявки или прайсы приходят обычным текстом в мессенджер: закупки в чатах с поставщиками, отраслевые каналы с объявлениями, входящий поток в рабочих группах. Тем же способом Кирилл Юсупов разобрал экспорты чатов с поставщиками и получил 17 400 структурированных офферов с Excel-дашбордом. Если поток небольшой и его держит в голове один менеджер, он говорит об этом на разборе и не берётся.
Разберу структуру ваших сообщений и скажу, какие поля извлекаются надёжно, а какие придётся проверять руками.
Москва · работаю только с чатами, доступ к которым у вас есть законно