Добавить в корзинуПозвонить
Найти в Дзене
Цифровая Переплавка

Как O3-mini «симулировала» вычисления TF-IDF и поразила любителей Python

В современном мире нейросетей мы уже привыкли, что языковые модели отлично справляются с задачами вроде написания кода или перевода. Но одно дело – просто сгенерировать фрагмент Python-скрипта, и совсем другое – точно «предсказать» результат вычислений, которые обычно делегируются сторонним библиотекам. Недавно появилась любопытная история (описанная пользователем Emsi), где модель O3-mini не только написала тестовый скрипт для библиотеки scikit-learn, но и буквально «симулировала» его вывод, удивительно точно совпавший с реальным результатом. Автор поста хотел наглядно продемонстрировать поведение TfidfVectorizer из scikit-learn в разных режимах, особенно с параметрами use_idf и binary. Для этого был составлен небольшой «учебный» скрипт на Python: from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [
"apple apple orange",
"apple banana banana banana",
"banana orange",
"kiwi"
]
vec_default = TfidfVectorizer(use_idf=True, binary=False)
tfidf_default =
Оглавление

В современном мире нейросетей мы уже привыкли, что языковые модели отлично справляются с задачами вроде написания кода или перевода. Но одно дело – просто сгенерировать фрагмент Python-скрипта, и совсем другое – точно «предсказать» результат вычислений, которые обычно делегируются сторонним библиотекам. Недавно появилась любопытная история (описанная пользователем Emsi), где модель O3-mini не только написала тестовый скрипт для библиотеки scikit-learn, но и буквально «симулировала» его вывод, удивительно точно совпавший с реальным результатом.

Предыстория и удивительная находка

Автор поста хотел наглядно продемонстрировать поведение TfidfVectorizer из scikit-learn в разных режимах, особенно с параметрами use_idf и binary. Для этого был составлен небольшой «учебный» скрипт на Python:

from sklearn.feature_extraction.text import TfidfVectorizer

corpus = [
"apple apple orange",
"apple banana banana banana",
"banana orange",
"kiwi"
]

vec_default = TfidfVectorizer(use_idf=True, binary=False)
tfidf_default = vec_default.fit_transform(corpus)

И далее по аналогии: создавались вариации векторайзера со включённым binary=True, а также сценарий без IDF. Каждый блок кода в итоге печатал получившуюся TF-IDF или бинарную матрицу.

Однако самое интересное началось, когда O3-mini (модель без «интерактивного Python-окружения» или кода-интерпретатора) просто выдала готовый результат матриц TF-IDF — и оказалось, что цифры почти полностью совпадают с тем, что человек действительно получил при запуске кода «вживую» в терминале!

Почему это так удивительно?

Для большинства языковых моделей характерно «погружение» в статистическую связь слов и наборов данных, но прямой расчёт TF-IDF (особенно с учётом нюансов scikit-learn) – совсем другая задача. Несколько возможных причин, почему O3-mini справилась с этим так точно:

🧩 Наличие встроенного «арифметического движка»
Некоторые модели обучены решать математические задачи в процессе обучения на огромных объёмах кода и текстов. Более того, разработчики могли дополнительно прокачивать модель методами цепочки рассуждений (chain-of-thought reasoning), что позволяет аккуратно выводить результат вычислений.

🧩 Знание формул TF-IDF
TF-IDF хоть и достаточно прост в теории (TF = частота слова в документе, IDF = логарифм отношения общего числа документов к числу документов со словом), но точные значения зависят и от нормировки, и от параметров вроде binary=True. Модель могла «знать» это из обучающего датасета, либо «сыграть» сложную эвристику, имитируя логику scikit-learn.

🧩 Сопоставление с ранее встреченными примерами
Возможно, в ходе обучения модель «видела» похожие кодовые сниппеты (TfidfVectorizer + определённый corpus) и запомнила закономерность матриц, возникающих при вводе этих же строк. Так или иначе, результат впечатляет.

Личный взгляд: «Симуляция» как новая реальность?

Для меня эта история – отличный пример того, как языковые модели начинают напоминать не просто «генераторы предложений», а полноценные инструменты, которые могут предвосхищать вычислительные процессы. Мы уже знаем о попытках делать «модели-калькуляторы» (например, Code Interpreter в ChatGPT), но здесь мы видим, что даже модель без специального окружения смогла правильно вывести результирующие значения.

Конечно, остаётся вопрос, насколько часто и при каких условиях это работает. Ведь повезло ли O3-mini «угадать» конкретную матрицу, опираясь на некий уже заученный пример? Или действительно модель воспроизвела шаги алгоритма TF-IDF? Точно сказать сложно. Но в любом случае, это здорово впечатляет и напоминает, что мы ещё не до конца понимаем потенциал и «внутренние механизмы» современных языковых моделей.

Технические детали TF-IDF, которые стоит помнить

🔍 TF (Term Frequency): частота слова в документе (может быть просто счётчиком или более сложным).
🔍
IDF (Inverse Document Frequency): как часто слово встречается во всех документах (чем реже, тем вес выше).
🔍
binary=True: вместо подсчёта количества вхождений (TF), мы фиксируем 1, если слово встречается в документе, и 0, если нет.
🔍
use_idf=False: тогда итоговый вектор не учитывает инвертированную частоту; фактически это «сырые» (или бинарные) значения TF.

И получается, что при комбинации binary=True и use_idf=True TF-IDF-модель учитывает не количество повторений слова в документе, а лишь факт присутствия, но при этом всё ещё обогащает значение редких слов за счёт логарифмических коэффициентов IDF.

Итог

Случай с O3-mini напоминает, что языковые модели «умеют» чуть больше, чем кажутся на первый взгляд. Возможно, в будущем мы увидим ещё более сложные примеры «симуляции» результатов, причём не только для TF-IDF, но и для других ML-библиотек.

Если резюмировать: то ли мы, действительно, «живём в матрице», то ли это просто удачное попадание модели в результат. Как бы там ни было, эксперимент наглядно показывает, что инструменты на базе нейросетей способны удивлять даже тех, кто уже многое повидал в сфере ИИ.

Ссылки на оригинальную новость и дополнительные материалы

🔗 Оригинальный пост «o3-mini is insane at simulating computations»
O3-mini simulated scikit calculations

Если вас интересуют подробности о поведении TfidfVectorizer в scikit-learn, рекомендую заглянуть в официальную документацию scikit-learn.

И помните: ИИ способен делать больше, чем мы думаем – и порой точность его ответов оказывается совсем не случайной!