Определите задачу и нужные свидетельства
Начните с локальной спецификации: задачи модели, единицы разметки, выбранного сообщества и правил включения. Для первой небольшой проверки изучите комментарии, полученные из MachineLearning, вместо обещания набора обо всех обсуждениях машинного обучения. Архив независимый и исторический, не официальный сервис Reddit и не живые данные. Он не подтверждает происхождение сертификатом, правильность меток, представительность или пригодность материала для конкретной модели.
Сообщества могут различаться сленгом, сокращениями и контекстом обсуждений. Описывайте то, что наблюдаете в полученной выборке; название сообщества не доказывает язык, экспертность или одинаковое качество записей. Правила очистки и их влияние на включение должны быть частью вашей спецификации. Не превращайте удаление непонятных фрагментов в необъяснённое решение, после которого остаются только удобные примеры. Сохраняйте причины исключений отдельно от исходного текста.
Выберите доступные поля для сохранения и правила работы с пропусками. Запишите маршрут, фильтры, время получения и фактические файлы ответов рядом с выборкой. Метаданные могут отсутствовать, ссылки — не разрешаться. Это документация, которую вы составляете из наблюдаемого, а не обязательный сертификат источника для каждой записи. Сохраняйте материал, потому что повторное удалённое получение не обязано возвращать тот же вход.
Получите страницу и отделите источник от разметки
Начните с https://api.redditdatasets.com/v1/comments?subreddit=MachineLearning&limit=3 — примера на главной. Используйте X-API-Key: <ключ> либо Authorization: Bearer <ключ> на сервере. Маршрут comments ограничивает выдачу комментариями, subreddit выбирает сообщество, limit запрашивает не больше трёх записей. Страница ключа объясняет регистрацию до оплаты и сохранение однократно показанного секрета вне открытых файлов разметки. Наличие сообщества в параметре не гарантирует доступности его записей.
Маршруты содержимого принимают q, subreddit, author, kind, from, to, min_score, limit и page. kind использует post или comment; специализированные маршруты сохраняют ограничение типа. Даты используют YYYY-MM-DD UTC по created_utc с полным включением последнего дня to. min_score задаёт порог без сортировки, проверки экспертности или удаления спама. Эти фильтры выполняют поиск, а не случайный отбор или автоматическую балансировку вашего набора.
Проверьте data, затем перенесите выбранные записи в собственную очередь разметки с локальным сопоставлением исходному ответу. Храните метки и причины исключения отдельно от оригинального текста. Плоские записи с имеющимися parent_id или link_id можно группировать локально без полной беседы. Фильтров поиска по этим идентификаторам нет. /v1/subreddits принимает prefix и limit для поиска названий, не гарантированного охвата нужной темы.
limit и page принимают от 1 до 100, по одной странице за запрос. Внутренний порядок _doc не является хронологией, релевантностью, оценкой или случайным порядком. Читайте total с relation: eq — точный итог запроса, gte — нижняя граница, unknown — ненадёжный итог, возможно null. Полная локальная очередь полученного не доказывает полной загрузки архива. Фиксируйте встретившиеся границы, не представляя пагинацию массовым экспортом.
Проверьте локальное разделение и объясните исключения
До разделения на обучение и оценку проверьте повторяющиеся идентификаторы и доступные ссылки на обсуждения среди полученных записей. Можно решить сохранять локально распознанные связанные записи в одной части, чтобы уменьшить конкретный риск пересечения. Это ваше правило разделения, не функция API и не гарантия, что найдены все дубли, связанные беседы или случаи прежнего использования текстов при обучении моделей.
Опишите, что попало в разметку, что было исключено и почему. Отличайте пропуск метаданных от нулевого значения, собственные метки — от архивного текста. Наличие архивной оценки не означает возможности голосовать и не подтверждает правильности записи. Локальная сортировка, удаление дублей и разбиение дат организуют выборку без подтверждения полноты, отсутствия смещения или одинакового повторного получения. Сохраняйте исходный материал отдельно от результатов собственной обработки.
Каждое успешное получение стоит один кредит, даже пустое и повторное. Некорректные запросы не списываются; сбой источника возвращает резерв. Потеря ответа клиентом может скрывать оплаченный успех, а локальная ошибка разметки или записи не возвращает его стоимость. При 400 исправьте параметры, при 401 проверьте ключ и домен, при 402 — баланс, при 429 ограничьте и отложите повторы. Обработка сохранённого локального ответа не вызывает API.
Документация описывает ограничения маршрутов, цены — $1 за 1000 успешных запросов и минимум $50 за 50000 оплаченных кредитов. Страница ключа объясняет условные пробные кредиты и перевыпуск с подтверждением пароля, сразу отключающий старый ключ. Публичный /v1/status подтверждает только HTTP-ответ и статическое описание, не качество набора или состояние поиска. Соблюдайте применимое законодательство и права третьих лиц при хранении, разметке или распространении выборки.