Самое важное в жизни - красиво умереть! Вкатываемся в ML/AI!

01.07.26

Интеграция - Нейросети

Реальный ML там, где вы зачем-то используете AI. Вкатываемся под катом!

Слушайте, Джойс, — сказал Иван. — Вот русский мальчик спрашивает, что вы будете делать, когда разбогатеете? 
Ладно, — сказал он. — Я знаю, какого ответа ждёт мальчик. Поэтому спрошу я. Мальчик вырастет и станет взрослым мужчиной. Всю жизнь он будет заниматься своей… как это вы говорите… интересной работой. Но вот он состарится и не сможет больше работать. Чем тогда он будет заниматься, этот мальчик?
Я… не знаю, я как-то не думал… Я постараюсь умереть раньше, чем не смогу работать…
Брови бармена полезли на лоб, он испуганно оглянулся на Ивана. В полнейшем смятении Юра заявил:
И вообще я считаю, что самое важное в жизни для человека — это красиво умереть!

Стажеры, Стругацкие

Всем привет!

Вот и мне пришло время красиво умереть как 1С-негу, но это пока не точно. А красота требует жертв, поэтому я решил, что донесу до сообщества красивый проектик на стыке 1С и ML. Проектик классификации заявок ЖКХ.

 

КЛАССИФИКАЦИЯ ЗАЯВОК ЖКХ

Жизнь 1С-нега прекрасна, она изобилует желтым солнечным светом платформы в красных глазах после ночного обновления, т.к. реструктуризация до сих пор не влезает в нужные три секунды. Динамическое обновление чаще имеет признаки демонического, ибо никогда не знаешь, что там дальше. Поэтому финальная часть спринта заканчивается поставкой инкремента на прод в ноль часов, от чего глаза краснеют, и помочь им даже желтый цвет оформления продуктовой базы не в состоянии. Помимо прочего, от этого желтого начинает тошнить, а если вас тошнит, то что? Правильно - смените профиль! И тут на работе совершенно случайно образуется свободное время в количестве трех дней, ибо задачи сделаны, а новых нет. А если нет новых, то давайте их создадим!

Итак, о чем это я? Да, о заявках в ЖКХ, как поставщике неплохого грязного и шумного датасета для обучения модели. Зачем? Ну чтобы сонные диспетчера не елозили по стулу, силясь выбрать из расплодившейся номенклатуры услуг ту самую, притом частенько промахиваясь из-за дрожания руки. При этом промахиваясь очень избирательно и выбирая "консультация менеджера" вместо того, что стоило бы выбрать.

 

ВИЖУ ЦЕЛЬ - НЕ ВИЖУ ПРЕПЯТСТВИЙ!

Давайте сформулируем задачу: есть 10к заявок, в которых выбрана какая-то услуга, нужно собрать из этого датасет, обучить модель и запилить сервис инференса для классификации, чтобы диспетчер не просто выбирал услугу, а получал варианты услуг по тексту заявки с оценкой того, на сколько модель уверена в том, что сотворила.

 

ДАТАСЕТ

Начнем с элементарного - сохраним датасет, и это единственное, что тут будет на языке 1С:

Запрос = Новый Запрос(
  "ВЫБРАТЬ ТекстЗаявки, Услуга.Код ИЗ Документ.Заявка");

Датасет = Новый Массив;
Для Каждого Строка Из Запрос.Выполнить().Выгрузить() Цикл
  Датасет.Добавить(
    Новый Структура("текст,категория", Строка.ТекстЗаявки, Строка.УслугаКод)
  );
КонецЦикла;
// какая-то наша функция сохранения
ЗапишемJSONвФайл(Датасет);

Получим какой-то такой датасет (мне его Алиса мутнула, как и картинку для статейки):

[
  {
    "текст": "Здравствуйте! В подъезде на 5 этаже перегорела лампочка, темень такая, что ногу сломать можно. Задолбали уже!",
    "категория": "Освещение"
  },
  {
    "текст": "В квартире из крана вместо горячей воды идёт еле тёплая. Уже третий день так, невозможно мыться!",
    "категория": "Водоснабжение"
  },
...
  {
    "текст": "Лифт опять не работает, уже второй раз за неделю! Невозможно с коляской подниматься, это издевательство!",
    "категория": "Лифты"
  }
]

Отличненько! Будем с этим работать дальше. Но для начала поглядим, что же тут не так? А не так тут прям вот все - все эти приветствия, эмоции, дательные и винительные падежи, времена глаголов и все то, что нам ни разу не упало. Поэтому для начала нам надо данные почистить. Как? А вот тут 1С уже делать нечего, сорян желтизна!

 

ЧИСТКА ДАННЫХ

Тут будем пользоваться питончиком и библиотекой pymorphy3.

pymorphy3 — это популярная библиотека для Python, которая выполняет морфологический анализ и лемматизацию (приведение к начальной форме) слов на русском языке.

Напишем чистильщик нашего датасета в несколько строчек некоторого кода:

# все эти либы: для регулярок и для морфологии
import re
import pymorphy3

# Инициализируем инструмент для лемматизации русского языка
morph = pymorphy3.MorphAnalyzer()

# Наш кастомный список стоп-слов для ЖКХ (слова уже в начальной форме!)
JKH_STOP_WORDS = {
    'здравствуйте', 'приветствовать', 'добрый', 'день', 'вечер', 'утро', 
    'пожалуйста', 'уважаемый', 'администрация', 'просить', 'заявить', 
    'обращаться', 'обращение', 'жалоба', 'писать', 'сообщать', 'хотеть',
    'наш', 'мой', 'свой', 'который', 'этот', 'тот', 'какой-то', 'какой'
}

# функция очистки и лемматизации
def clean_and_lemmatize(text):
    if not isinstance(text, str):
        return ""
    
    # 1. Очистка от спецсимволов и цифр
    text = text.lower()
    text = re.sub(r'[^а-яёa-z\s-]', ' ', text)
    
    # 2. Разбиваем на слова
    words = text.split()
    
    lemmatized_words = []
    for word in words:
        # Получаем список разборов
        parsed_variants = morph.parse(word)
        
        # БЕРЕМ ПЕРВЫЙ ВАРИАНТ ИЗ СПИСКА [0] и у него вызываем normal_form
        lemma = parsed_variants[0].normal_form
        
        # 3. Фильтрация стоп-слов
        if lemma not in JKH_STOP_WORDS:
            lemmatized_words.append(lemma)
        
    return " ".join(lemmatized_words)

Что тут у нас происходит? Передаем "грязную" строку, получаем "чистую":

[
    {
        "текст":"в подъезд на этаж перегореть лампочка темень такой что нога сломать можно задолбать уже",
        "категория":"Освещение"
    },
    {
        "текст":"в квартира из кран вместо горячий вода идти еле тёплый уже третий так невозможно мыться",
        "категория":"Водоснабжение"
    },
    {
        "текст":"лифт опять не работать уже второй раз за неделя невозможно с коляска подниматься это издевательство",
        "категория":"Лифты"
    }
]

// Все истории выдуманы, все совпадения случайны.

Вот как-то так и этак получили мы чистой воды датасет. Да, он все-равно несколько шумноват, но уже куда веселее, чем был.

Перейдем к обучению модели!

 

ОБУЧЕНИЕ

Для таких вот задач классификации я пробовал использовать много всякого, например catboost от Яндекса. На конкретно этой задаче он показал очень слабенький результат и требовал достаточно большого времени на обучение. У меня STT-модель меньше училась на 200 часах шумного аугментированного и частотно порезанного звука телефонных разговоров с ненормативной лексикой, чем catboost на 40к заявках. Так что в лес. В итоге остановился на scikit-learn с его LinearSVC.

Как это все работает? Достаточно просто:

1. Берем панду для чтения датафрейма из нашего json.

2. Выделяем оттуда массивы Х и У для текста и категорий.

3. Разделяем данные на обучающую выборку и тест.

4. Создаем цепочку из вектризатора и LinearSVC.

5. Учим модель.

6. Проверяем.

7. Сохраняем.

Вот такой получается код функции для обучения и записывания данных:

def train_and_save_pipeline(cleaned_json_file, output_model_file="jkh_pipeline.pkl"):
    # грузим-грузим датасет
    with open(cleaned_json_file, 'r', encoding='utf-8') as f:
        data = json.load(f)

    # мутим датафрейм
    df = pd.DataFrame(data)

    X = df['текст']
    y = df['категория']
    
    # разделяем на на обучающие и тестовые данные
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)

    # Склеиваем векторизатор и классификатор в единую цепочку.
    pipeline = Pipeline([
        ('tfidf', TfidfVectorizer(ngram_range=(1, 2), max_features=5000)),
        ('clf', LinearSVC(random_state=42, C=1.0, class_weight='balanced'))
    ])
    
    # Передаем сырой (но уже очищенный нами) текст X_train. 
    # Пайплайн сам внутри вызовет fit_transform для TF-IDF и fit для LinearSVC.
    pipeline.fit(X_train, y_train)
    
    # Для предсказания просто передаем текстовый X_test. Пайплайн сам векторизует его внутри себя.
    y_pred = pipeline.predict(X_test)
    print(classification_report(y_test, y_pred, zero_division=0))
    
    # Сохраняем файл, в котором «зашиты» и правила перевода слов в числа, и логика модели.
    joblib.dump(pipeline, output_model_file)

 

ИНФЕРЕНС

Для инференса нам надо загрузить модель и пропустить через нее очищенный текст. Для этого наваяем такой вот код:

class JkhClassifier:
    def __init__(self, pipeline_path="jkh_pipeline.pkl"):
        self.pipeline = joblib.load(pipeline_path)
        
        # Достаем саму модель и список классов из пайплайна, чтобы знать имена категорий
        self.model = self.pipeline.named_steps['clf']
        self.classes = self.model.classes_

    def predict_top_k(self, raw_text, k=3):
        # Прогоняем текст через векторизатор пайплайна
        # Шаг векторизации в пайплайне называется 'tfidf'
        vectorized_text = self.pipeline.named_steps['tfidf'].transform([cleaned_text])
        
        # Получаем расстояния до гиперплоскостей
        distances = self.model.decision_function(vectorized_text)[0]
        
        # Сортируем индексы оценок по возрастанию и берем последние K
        top_indices = np.argsort(distances)[::-1][:k]
        
        # Формируем красивый список результатов
        results = []
        for idx in top_indices:
            results.append({
                "category": self.classes[idx],
                "score": round(float(distances[idx]), 3) # Оценка уверенности (чем выше, тем лучше)
            })
            
        return results

if __name__ == "__main__":
    # Запускаем классификатор
    classifier = JkhClassifier("jkh_pipeline.pkl")
    
    # Тестовые заявки от джимми
    new_tickets = [
        "Добрый вечер!!! Подскажите, почему опять отключили горячую воду на Ленина 45?? Из крана идет ледяная!",
        "У нас в первом подъезде на пятом этаже лампочка перегорела, темень невозможная, почините пожалуйста.",
        "Алло, аварийная? Срочно!!! Из квартиры сверху хлещет вода, нас заливает, весь потолок в коридоре мокрый!"
    ]

    for complex_ticket in new_tickets:
        # Получаем Топ-3 категории
        ticket = clean_and_lemmatize(complex_ticket)
        top_3_categories = classifier.predict_top_k(ticket)
        
        print(f"Входящая заявка:\n\"{complex_ticket}\"\n")
        print(f"Входящая заявка очищенная:\n\"{ticket}\"\n")

        print("Предложенные моделью категории (Топ-3):")
        
        for i, res in enumerate(top_3_categories, 1):
            print(f"  {i}. {res['category']} (Уверенность: {res['score']})")

И вот что получаем на выходе:

"У нас в первом подъезде на пятом этаже лампочка перегорела, темень невозможная, почините, пожалуйста."

Входящая заявка очищенная:
"у мы в первый подъезд на пятый этаж лампочка перегореть темень невозможный починить"

Предложенные моделью категории (Топ-3):
  1. Освещение (Уверенность: -0.169)
  2. Благоустройство (Уверенность: -0.568)
  3. Авария/Протечка (Уверенность: -0.58)

"Алло, аварийная? Срочно!!! Из квартиры сверху хлещет вода, нас заливает, весь потолок в коридоре мокрый!"

Входящая заявка очищенная:
"алло аварийный срочно из квартира сверху хлестать вода мы заливать весь потолок в коридор мокрый"

Предложенные моделью категории (Топ-3):
  1. Авария/Протечка (Уверенность: -0.237)
  2. Водоснабжение (Уверенность: -0.517)
  3. Благоустройство (Уверенность: -0.626)

Ну и не сложно догадаться, как дальше с этим всем можно работать. Пользуйтесь!

Всем всех благ: счастья, здоровья, ума.

Подписывайтесь на каналы, ставьте лайки, флудите в комментах - делайте свое дело!

Вступайте в нашу телеграмм-группу Инфостарт

ИИ AI ML машинное обучение scikit-learn pymorphy3 LinearSVC

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    63795    130    36    

137

Нейросети Программист Бесплатно (free)

Новые результаты теста топовых ИИ в вайбкодинге на 1С. Это продолжение прошлой статьи, где нейросети написали внешнюю обработку за 19 минут. Теперь же с этой же задачей справляются за 3–4 минуты. Прошло всего несколько недель. Что будет дальше?

24.07.2026    6711    top_1c    14    

29

Нейросети Бесплатно (free)

OneBase продолжает развиваться благодаря обратной связи сообщества. В этом обновлении платформа получила ИИ-помощника, визуальный конструктор форм, СКД, push-уведомления и множество других улучшений. Рассказываю, что изменилось, какие решения были приняты и почему OneBase постепенно превращается из pet-проекта в полноценную open-source платформу для разработки бизнес-приложений.

21.07.2026    1807    Ibrogim    42    

18

Нейросети Программист Бесплатно (free)

Мы привыкли считать читаемый код, понятные имена и отсутствие дублирования законами хорошей разработки — но что, если это всего лишь правила нашей профессиональной Флатландии? В новой статье разбираю, каким станет программирование, когда ИИ перестанет писать код для людей и начнёт формировать его по собственным правилам.

21.07.2026    1057    IgorVasilyev    23    

8

Мастера заполнения Нейросети Пользователь 1С 8.3 Абонемент ($m)

Заполнение справочников и документов с предпросмотром, возвратом и локальной ИИ на вашем компьютере.

3 стартмани

14.07.2026    746    2    Rafael-87    14    

7

Нейросети Бесплатно (free)

История одного твитта: как Андрей Карпати случайно запустил хайп про "вайб-кодинг", а потом сам от него открестился. Разбираем, чем вайб-кодинг отличается от агентной инженерии, почему 1С угадала суть раньше Карпати, и что делать разработчику 1С в 2026 году. Часть 2.

09.07.2026    1258    Junior_1C    7    

7

Нейросети Программист Бесплатно (free)

Нейросеть для 1С, которая пишет рабочий код на BSL по вашей конфигурации: четыре месяца и больше сорока релизов после первой статьи про бесплатный MCP-сервер mcp-1c. Разберём, что изменилось: память на больших базах упала в разы, поиск по коду ускорился, добавилась параллельная работа и совместимость с Claude, Cursor и другими ИИ-клиентами. И что осталось прежним.

08.07.2026    7957    VyachGo    5    

26

Нейросети EDT Программист 1С:Предприятие 8 Россия Абонемент ($m)

LLM-агенты уже неплохо рассуждают о коде 1С — но рассуждают вслепую. Модель не видит вашу конфигурацию: ей либо копируют модули в чат руками, либо выгружают конфигурацию в файлы и индексируют — и индекс устаревает в момент первой правки. А главное — агент не может ничего сделать: прочитал, посоветовал, а вносить правку снова человеку. Мы решали эту задачу для своей линейки 1C Intelligence Suite — это её вторая часть, о которой мы рассказываем публично.

1 стартмани

08.07.2026    3783    galich    13    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. chuevsf 408 01.07.26 12:23 Сейчас в теме
Тот кто мертв, умереть не может!)))
Shade_echo; bulpi; starik-2005; Xershi; +4 Ответить
2. user-z99999 78 01.07.26 13:31 Сейчас в теме
На каком железе можно пробовать?
В первую очередь интересует видеокарта, гб и модель?

На входе в ЖКХ это звонок или сайт жкх? Просто на входе можно уже пытаться фильтровать данные.
Если звонок - нажмите 1, 2, 3. Если сайт жкх - выберите категорию обращения.
3. starik-2005 3294 01.07.26 13:32 Сейчас в теме
(2)
железе
На проце на работе обучение занимало примерно.... 2 секунды. i5-13400. Датасет из 10к+ заявок и 111 услуг. Точность очень даже ничего.

ЗЫ: писал там сервис, который будет классифицировать на обученной модели. Среднее время отклика с учетом каспера и вызова из 1С - 10 мс. У диспетчера SLA 5-10 минут.
4. user-z99999 78 01.07.26 13:36 Сейчас в теме
(3) А по какой вероятности делаете отсечку?
например больше 60% - создает робот задачу, запускаем в работу без человека
менее 60% - смотрит человек
6. starik-2005 3294 01.07.26 13:38 Сейчас в теме
(4)
отсечку
По разнице между ТОП1 и ТОП2.
5. user-z99999 78 01.07.26 13:38 Сейчас в теме
Про разметку данных:
"у меня сломался водпровод, срочно"

как размечаете?
7. starik-2005 3294 01.07.26 13:39 Сейчас в теме
(5) Прочитай статью еще раз. Там есть джисоны.
8. user-z99999 78 01.07.26 13:40 Сейчас в теме
(7) из-за орфографии не попал в json, что тогда делать?
9. starik-2005 3294 01.07.26 13:40 Сейчас в теме
(8)
что тогда делать
Ты, смотрю, уже готов платить?
Трактор; +1 Ответить
10. infosoft-v 1102 01.07.26 13:44 Сейчас в теме
Спасибо за интересную статью.
Не могли бы вы подробнее рассказать про шаг:
"Разделяем данные на обучающую выборку и тест."

Если я правильно понял, то у нас есть только реальные данные тысяч обращений. Откуда вы взяли данные на обучающую выборку и тест?
23. starik-2005 3294 01.07.26 17:42 Сейчас в теме
(10)
Откуда вы взяли данные на обучающую выборку и тест?

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)

Так вот же. Взяли весь датасет и test_size=0.2 (20%) выделили в тестовую выборку. Дальше на 80% обучили, на 20% проверили.
Оценка качества на тестовой выборке...
                 precision    recall  f1-score   support

Авария/Протечка       0.33      1.00      0.50         1
Благоустройство       0.67      1.00      0.80         2
  Водоснабжение       0.00      0.00      0.00         1
          Лифты       0.00      0.00      0.00         1
      Освещение       0.00      0.00      0.00         1

       accuracy                           0.50         6
      macro avg       0.20      0.40      0.26         6
   weighted avg       0.28      0.50      0.35         6
Показать

Т.к. датасет никакой - 30 единиц, то получили 6 заявок для проверки.
11. user-z99999 78 01.07.26 13:57 Сейчас в теме
(9) А какое качество модели?
не вижу F1-score или какую-либо характеристику
24. starik-2005 3294 01.07.26 17:46 Сейчас в теме
(11)
качество
Оно прямо зависит от качества датасета. Скормишь нагенеренные яндексом 30 строк - получишь хреновое качество. Посадишь тестировщиков разметить реальные заявки - получишь хорошее качество. На рабочем датасете с 11к заявок и 111 вроде бы категорий, качество выше 50%, но авторекомендация в районе 20% на старых и 50% на новых. Т.е. это когда модель видит разницу между ТОП1 и ТОП2, как существенную. Органолептически просмотрел 20 заявок - модель уделывает диспетчера только так.
59. jan-pechka 457 16.07.26 09:21 Сейчас в теме
(11) мэстный азиат в жэлезный будка, переводящий сигнал жильцов оператору ЖКХ, который в этот момент у ИИ спрашивает закуску к незамерзайке, и пинающий под столом красную кнопку вызова бригады суп-суб-подряда, которая сейчас копает котлован в соседнем доме-напротив того, где прорвало старые гнилые трубы с водой, но это уже - к водоканалу, у которого не взяли разрешение на работы, потому что -эти трубы производства СССР, которого уже нет в помине, и не поминайте лучшее, а живите и наслаждайтесь настоящим!)
12. DmitryKlimushkin 01.07.26 14:13 Сейчас в теме
"Если лечиться по написанному, то можно умереть от опечатки...."
Хотя... Я давно погружён в ЖКХ - там уже ничто не может удивлять))
13. RustIG 1979 01.07.26 14:36 Сейчас в теме
Ну и не сложно догадаться, как дальше с этим всем можно работать. Пользуйтесь!

в целом, не понятно, что дальше делать с результатом?

Могу предположить только: можно результат выгрузить в джэйсон.
далее в 1с обработать заявку с учетом джейсон - идентификатор заявки желательно изначально передавать в модель
далее перезаписать категорию заявки, если не совпадает с выбором пользователя (учитываем, что все заявки попадают в 1с из Онлайн-Системы заявок ЖКХ...
25. starik-2005 3294 01.07.26 17:54 Сейчас в теме
(13)
что дальше делать с результатом
Ну вот у тебя робот-отвечатель, в него кто-то наговорил "у меня вода хлещет по стенам течет", робот создает заявку с этим текстом, текст летит в модель, модель отдает услугу с автоакцептом или с рекомендацией показать оператору. Экономия человеко-лет.
"у меня вода хлещет по стенам течет"

Входящая заявка очищенная:
"у я вода хлестать по стена течь"

Предложенные моделью категории (Топ-3):
  1. Авария/Протечка (Уверенность: -0.272)
  2. Благоустройство (Уверенность: -0.486)
  3. Водоснабжение (Уверенность: -0.498)
Показать
26. RustIG 1979 01.07.26 18:38 Сейчас в теме
(25) другой робот начнет звонить и перегрузит систему
28. starik-2005 3294 01.07.26 19:47 Сейчас в теме
(26) так оператора он быстрее перегрузит. На проце у меня голос в текст 5 сек за 0.5 сек распознает. Надо просто значть, что запускать.
14. ksnik 702 01.07.26 15:02 Сейчас в теме
Вывод из статьи: в примере уверенность неправильная, классификация неправильная. Что дальше? На самом деле это Авария/Протечка
ТочкаScarab; +1 Ответить
15. starik-2005 3294 01.07.26 15:41 Сейчас в теме
(14) если хочешь чтобы за тебя подумали - значит чситай, что я создал стоимость.
20. ksnik 702 01.07.26 16:57 Сейчас в теме
(15) а говорите давай статью техническую, это на 3 дня никак не тянет.
21. starik-2005 3294 01.07.26 17:09 Сейчас в теме
(20) так в примере не уверенность, а расстояние до гиперплоскости на основе скудных данных из всегт 30 примеров.
Зы: пример напилил за час дома.
29. ksnik 702 01.07.26 20:27 Сейчас в теме
(21) Следующим шагом нужно управлять неопределённостью и защищаться от ошибок модели, самое главное - это тоже строит сама модель при задании нужного вектора (промпта), верная архитектура в ней и в аналогах которые можно просто поискать в интернет уже заложена. Можно добавить feedback-цикл — как в LirAgent: после классификации диспетчер подтверждает или исправляет категорию. Это создаёт размеченный датасет, который можно использовать для дообучения модели (consecutive_successes). Использовать несколько моделей — вместо одной LinearSVC запускать несколько классификаторов и брать «консенсус» (как конвейер зондов). Добавить правило-ограничитель — если текст содержит явные маркеры аварии («хлещет», «заливает», «мокрый»), модель не может выбрать «Благоустройство» даже если статистически так вышло. Это аналог L5.7 (Checkpoint Engine) — артефакт-требования. Привязать классификацию к эмбеддингам — вместо TF-IDF использовать настоящие эмбеддинги (Ollama), чтобы лемматизация не теряла смысл («хлещет» и «заливает» должны быть близки в векторном пространстве). Это аналог нашего findSimilarModulesOllama().
31. starik-2005 3294 01.07.26 23:24 Сейчас в теме
(29)
создаёт размеченный датасет
Так и задумано.
вместо одной LinearSVC
Остальные в данной конкретной задаче показали слабые результаты.
правило-ограничитель
Разумно, но есть мнение, что тогда и на if'ах это можно было бы все сделать, но так не работает, ну или if'ов будет очень много. Я когда-то в детстве лабиринт делал. Робята научили массивами пользоваться, ибо я сразу понял, что if'ы здесь - это костыль, врожденное чутье.
настоящие эмбеддинги
Да, планировал юзать user2-base. Но "хлещет" и "заливает" и так окажутся близко, если в датасете будет больше данных. Здесь 2,5кк заявок, из них 200к - это чистый ЖКХ. Но умные люди переехали на новые варианты, старые пометили как "архив", пришлось снести, т.к. никто не стал делать мэппинг старого в новое, а оно даже называется иногда не близко. Ну как бы я там больше не работаю, так что все простил )))
16. gybson 13 01.07.26 15:54 Сейчас в теме
Совсем скоро это будут уметь старшеклассники. Или уже умеют.
30. Трактор 1286 01.07.26 21:12 Сейчас в теме
(16) нет. В лучшие времена не умели, а сейчас и подавно.
32. starik-2005 3294 01.07.26 23:27 Сейчас в теме
(30)
не умели
Когда я был старшеклассником, то я круг придумал как целочисленно рисовать - алгоритм Брезенхема фактически воспроизвел. Так что разные бывают старшеклассники. Сейчас вся инфа есть, раньше книжки и журналы только, правда и качество этих книжек и журналов было топовое.
35. gybson 13 01.07.26 23:51 Сейчас в теме
(30) У меня несколько одноклассников делали программы для спектрума. Маленькие игры. Не шедевры, но и тут очень простые вещи описаны. Решение системы уравнений методом Гауса не все наверное напишут, а небольшую ML на питоне запросто. Племянник на питоне лабает чет (9 класс закончил). В свое время когда веб-рванул, туда много прыщавых школьников зашли без труда.
17. gybson 13 01.07.26 16:02 Сейчас в теме
Можно в принципе и без нейронки это сделать, если взять хорошую модель для эмбеддинга (конечно за деньги).
LLM все-равно тут будет лучше, она и адрес заодно вытащит и телефон и может служебную инструкцию какую, материалы и выпишет и прочее.

Я вот семантический поиск сделал почти на такой простой вещи, как векторизация
Прикрепленные файлы:
18. starik-2005 3294 01.07.26 16:14 Сейчас в теме
(17) в стате про llm вообще ничего нет, ну кроме алисы, которая датасет придумала чисто для демонстрации.
19. gybson 13 01.07.26 16:44 Сейчас в теме
(18) так и результат совсем простенький
срочность не определяет, хотя в заявках есть явное указание на то, что проблема повторная
а еще бы сгруппировать по адресам, подъездам, районам

я к тому, что сама по себе классификация это задача без звездочки
хотя теперь вообще непонятно что сложно :)
starik-2005; +1 Ответить
22. starik-2005 3294 01.07.26 17:14 Сейчас в теме
(19) да, сейчпс сложно лишь заставить себя разбираться, для многих это просто непреодолимый барьер.
Срочность - это да/нет, мешки с костями это вполне кликом решают а вот классифицировать проблему у них получается фигово. Когда я генерил реальный датасет - там было все очень грустно. Типа "не горит свет" - оператор ставит "консультация". Так что даже в таком виде на дряном датасете у меня 50% новвх заявок показывали уверенное auto, остальгые 50% - need human review. При этои llama-oss-20b (если ниче не путаю) делала чуть лучше, но сильно дольше.отсюда мораль: готовь датасет летом, а ML сразу как подготовишь.
Трактор; RustIG; +2 Ответить
27. gybson 13 01.07.26 18:40 Сейчас в теме
(22) мне это напоминает тот случай, когда где-то гит (или хоть хранилище), задачи, тестирование, ТЗ и прочее, а где-то "да я быстрее руками на проде исправлю". А могут и оба вместе быть.
33. starik-2005 3294 01.07.26 23:42 Сейчас в теме
(27)
А могут и оба вместе быть
И это правильно, ибо есть run, а есть change. Run - это быстро поправить прод, иногда даже динамически, а change - это запланированные изменения.
34. gybson 13 01.07.26 23:46 Сейчас в теме
(33) Run конечно останется, но это очень узкая ниша в которой никто не заинтересован.
36. o.nikolaev 217 02.07.26 11:28 Сейчас в теме
Вот и мне пришло время красиво умереть как 1С-негу, но это пока не точно.

А можете вот это прокомментировать поподробнее?
Perfolenta; +1 Ответить
39. starik-2005 3294 02.07.26 18:50 Сейчас в теме
(36)
поподробнее
Дни 1С сочтены.
TyurinArt; +1 Ответить
40. o.nikolaev 217 03.07.26 10:04 Сейчас в теме
(39) "Сочтены"? Т.е. фирма 1С закрывается? Или платформа перестанет использоваться? Или какой-то новый фреймворк вытеснит Желтую Программу. Вы то человек опытный донельзя, и слышать от вас высказывания такого рода - это прям важно и нужно понять.
42. starik-2005 3294 03.07.26 12:14 Сейчас в теме
(40)
важно и нужно понять
На ХХ 1С ищут себе спеца по ИИ, который засунет в морально устаревший эклипс, который они называют ЕДТ, эти все ИИ на джаве.
Ну вот давай прочитай этот мой ответ столько раз, сколько тебе надо, чтобы понять, что к чему.
43. o.nikolaev 217 03.07.26 14:39 Сейчас в теме
(42) Хамить совершенно не обязательно. Я вежливо задаю вопросы, которые не понимаю. Т.е. из-за того что "на хх 1С ищет спеца по ИИ" 1С конец, ок.
44. starik-2005 3294 03.07.26 15:50 Сейчас в теме
(43)
Я вежливо задаю вопросы
Так я тоже вежливо отвечаю. Есть же вопрос? Есть. И на него вот такой ответ, который нужно понять. Иногда на это нужно время. Жирным выделено, чтобы было понятно, что нужно осмыслить. Это же не капс, да?

ЗЫ: Да, привык к тому, что большинство людей задает риторические вопросы, а не с целью понять. 1С нужно было делать свою экосистему для ИИ уже давно, а они только спеца ищут. У них нет шансов.

ЗЫЗЫ: кстати, часть поста, на который я отвечал, сильно похоже на издевку. Это так?
Прикрепленные файлы:
45. o.nikolaev 217 03.07.26 17:00 Сейчас в теме
(44) К сожалению, из ваших объяснений я так ничего и не понял, увы. Но, это моя проблема, вы объясняете так как умеете. Мне к сожалению это непонятно. Про "издёвку" лично я вообще ничего не понял. Я ни над кем не издеваюсь. Меня, как и любого нормального человека, интересует вопрос о том как расцвет ИИ повлияет на то чем я сейчас занимаюсь. Пока скорость развития выглядит невероятно быстрой, но уровень шума хайпа сбивает с толку. Одни говорят "конец", другие говорят "не конец".
46. starik-2005 3294 03.07.26 17:06 Сейчас в теме
(45)
непонятно
А картинка от гугла ничего не заставляет йокнуть внутри? Программирование в работе программиста заканчивается, как закончились алгоритмы. Это неизбежно. И если ИИ на 1С не умеет делать то, что нужно, то зачем она будет нужна?
47. o.nikolaev 217 03.07.26 17:45 Сейчас в теме
(46) "ИИ на 1С" возможно имеется в виду какое-то дополнение к платформе типа "1С:Шина"? "1С:ИИ". Но пока его нет, стало быть заключить "умеет" он (она? оно?) или "не умеет" то что нужно делать нельзя. Универсальное "поживем - увидим" пока тут вернее всего.
48. starik-2005 3294 03.07.26 18:59 Сейчас в теме
(47)
ИИ на 1С
Если оно не умеет программировать на 1С, но умеет на питоне/го/c#/..., то что?

Дополнение - это код. А если ИИ не умеет кодить, то от него толку нет. ИИ на 1С не написать (нет, можно, конечно, но безумно), ИИ - это много быстрой видеопамяти и много ядер CUDA (ну или подобных), которые генерят код. И не просто генерят, а отлаживают, пишут тесты, анализируют качество кода. Если ИИ не имеет инструментов для того, чтобы делать это на стеке 1С, при том для того, чтобы сделать это на питоне - это просто python -c "code", то на сколько питон выгоднее для разработке? И 1С вот только добрались до того, чтобы запилить хоть какой-то интерфейс для 1С, чтобы ИИ мог отлаживать код, ставить там точки остановки (да, ИИ это уже умеет, но не на 1С). И не только. Так зачем 1С со стоимостью разработки в кучу бабла для тех же фич, которые на питоне делаются тем же ИИ за условные минуты за условные 100 баксов в месяц?

Дальше банальная конкуренция просто вытеснит 1С из зоны разработки. Какое-то время на ней будет вестись учет в части регуляторных функций, т.е. 1С будет как шлюз между регулятором и бизнесом. Но бизнес-функции никто не будет разрабатывать на 1С.
49. o.nikolaev 217 03.07.26 22:24 Сейчас в теме
(48) Звучит аргументированно и весьма убедительно, но - "запомним этот твит". И вернемся к нему лет через 5. Если конечно на тот момент уровень радиации будет допустимым.
50. o.nikolaev 217 03.07.26 22:28 Сейчас в теме
(48) Просто вспоминается высказывание Спольски лет эдак 20 назад про Microsoft: "курица несущая золотые яйца не мертва, но уже смертельно больна". Итог на табло: Microsoft живее всех живых, Спольски тоже.
51. starik-2005 3294 04.07.26 01:00 Сейчас в теме
(50)
Microsoft живее всех живых, Спольски тоже
Ну с учетом того, что она продолжает запиливать у себя линух, чтобы посоны могли прилично там развернуть что-то, для чего cmd - слишком проста, а ps - слишком сложна. Как с Атосом и графом де Ла Фером. Мобильная винда R.I.P. уже давно, про нее все забыли. Винда осталась на каких-то серверах и на десктопах геймеров и 1С-негов, а также на предустановленных ноутбуках. Видел бабулек, которые юзают ноуты с предустановленными китайскими линухами - вообще им без разницы (если, конечно, первый попавшийся мальчик, которому бабуля задает вопрос "как мне в одноклассы зайти" не сносит этот линух и не ставит бабуле паленую венду, а ведь вопрос - это "как зайти в одноклассы", зачем там венда?)
Вообще, количество девайсов с линухом кратно превышает количество девайсов с вендой, т.к. на нем все роутеры и прочая инфраструктура, алисы, маруси, телевизоры, да, блин, все телефоны на андройде и около.... И если раньше мне постоянно попадались на глаза синие экраны смерти или прочие артефакты венды на разных экранах, то сейчас периодически попадается зависший экран загрузки линуха. А если нет разницы, то зачем вообще платить? За что?

Возвращаясь к нашему желтому барану, то основная проблема - это скорость разработки и простота поддержки. Для того, чтобы запилить приличную продуктовую вайб-разработку на 1С, нужно достаточно напрячься. И после этого токены будут улетать в трубу с превеликой скоростью, ибо без скиллов и без MCP, к которой ИИ будет должен постоянно бегать, чтобы гарантировать правильность кода, а каждый вызов - это оплата за контекстный кеш, программировать на 1С в формате "вайб" невозможно. В итоге добавление двух-трех строк кода в модуль будет тратить 100к контекста, за которые можно целиком запилить приличный функционал на питоне и реакте, собрав фуллстек-приложение. И бизнес, который умеет считать деньги, начнет понимать, что 1С - это дорого, джунов приличных нет, т.к. они все вайбкодеры, а старики стоят как крыло от боинга. И на долго ли хватит 1С при таком раскладе? Не думаю. Она и сейчас-то в общем и целом не более, чем точка доступа к регуляторам. Большинство проектов, которые вне регуляторного контура, запилены на 1С ошибочно, т.к. все то же самое примерно в 10 раз быстрее и проще реализовать вайбкодингом на приличном стеке. При этом в 1С ты практически не можешь влиять на производительность, т.к. ограничен платформой и реализацией в ней работы с СУБД, медленного интерфейса, да и вообще 1С - это черный ящик, а для того, чтобы читать логи этого ящика, нужно измучить себя подготовкой и сдачей эксперта по тех.вопросам, и даже это не гарантирует, что ты что-то будешь в этих логах понимать. А если и поймешь, то никакой гарантии, что ты сможешь это исправить. Ибо исправить какие-то тормоза за условные ТРИ месяца работы - это очень дорого. На питоне ты просто закешируешь эти тормоза в редисе, а на 1С так не работает. Ты, конечно, можешь в 1С нарисовать веб-интерфейс на JS, но зачем тогда 1С тут? Запили на питоне и реакте с помощью агентов, запусти на Uvicorn, и завайбкодь интеграцию. Контракты ИИ сам нарисует.
aleksey2; o.nikolaev; +2 Ответить
37. aximo 2700 02.07.26 15:53 Сейчас в теме
последнее время вижу, что матерые 1с-ники вкатывают "генерят" поток статей со всякими "жизненными" историями. возможно, сидят без работы? сокращены? - но никто не напишет.
38. starik-2005 3294 02.07.26 18:49 Сейчас в теме
(37)
но никто не напишет
Ну или кто-то не прочитает )))
ЗЫ: ИИ написал только код (кроме 1С), текст написал я (кроме эпиграфа).
52. chuevsf 408 05.07.26 08:29 Сейчас в теме
(37)
возможно, сидят без работы? сокращены?

Да просто работодатели в конец обнаглели. Будет время, напишу тут пару забавных ситуаций.)))
60. jan-pechka 457 16.07.26 09:25 Сейчас в теме
41. BackinSoda 03.07.26 10:46 Сейчас в теме
Нет чтоб пользоваться СтрНайти и СтрЗаменить.. Напридумывают этих ИИшек :D
53. pkorneenko 15.07.26 15:47 Сейчас в теме
О, pandas, датафреймы и все такое. ) В целом, этому уже много лет, другое дело что скрипт для обучения и использования, в режиме чата какой-нибудь Клод может за 5 -15 минут довести до готовности (забавно, но Клод предложил сначала не заниматься ерундой, а просто прописать токен и распознавать тупо дергая llm через api). У меня примерно 15 минут занял схожий кейс - были не слишком качественные данные с наименованиями чеков и вручную проставленные категории. Даже без лемматизации (предполагал для этого яндексовский mystem использовать) вполне сносно распознает. Однако, как лучше использовать это в проде - пока раздумываю, интуитивно запуск скриптов из 1С кажется небезопасным. Выложите, пожалуйста, и 1С-овский код к этому кейсу, если будет возможность.
54. starik-2005 3294 15.07.26 16:41 Сейчас в теме
(53)
данные с наименованиями чеков и вручную проставленные категории
Мне лоткальная LLM распознавала чеки с очень хорошей точностью. Она же написала систему для этого всего. Грузишь фотку чека - на выходе сумма, дата и категория. Потом бота сделал для телеги. Ниче так получиолось.
Выложите, пожалуйста, и 1С-овский код к этому кейсу, если будет возможность.
А что тут 1С-вского, кроме выгрузки датасета? Или вы про обработку? Если так, то просто тот же бесплатный ИИ написал мне код на питоне с fastAPI, я с 1С просто дергаю сервис с текстом заявки, в ответе класс, расстояние до ближайшего следующего и рекомендация авто/мешок-с-костями.
pkorneenko; +1 Ответить
55. pkorneenko 15.07.26 17:01 Сейчас в теме
(54) А какой локальной llm воспользовались?
Да, обработку имел в виду, понятно что там вызов сервиса, но все равно хотелось бы глянуть.
56. starik-2005 3294 15.07.26 17:10 Сейчас в теме
(55)
но все равно хотелось бы глянуть
Э... На столько лениво, да?
С = Новый HTTPСоединение(Адрес, порт, прочее,...);
З = Новый HTTPЗапрос("/uriget");
З.УстановитьТекстЗапросаИзСтроки("У меня что-то там течет по трубам бла-бла-бла");
О = С.POST(З);
Если О.КодОтвета = 200 Тогда
  Строка = О.ПолучитьЧтоТоТамКакСтроку();
  Данные = JsonВОбъект(Строка);
  Сообщить(Данные.Категория);
  Сообщить(Данные.АпрувТайп);
  Сообщить(Данные.ТипаКачество);
КонецЕсли;
Показать
Думаю, что для примера должно быть достаточно.
локальной llm
Для картинок - qwen3.6-35B-A3E-UD-Q6-XL.gguf - какой-то такой.
pkorneenko; +1 Ответить
57. pkorneenko 15.07.26 17:26 Сейчас в теме
(56) >>Э... На столько лениво, да?

Как сказать, в моем случае у меня на обработку ушло больше времени, чем на ИИ-разработку скрипта и проверку работы, поэтому пардон за дотошность.
Скажите, а сервис в контейнере сами подняли или передали как то эту часть админам в проде?
58. starik-2005 3294 15.07.26 17:56 Сейчас в теме
(57)
в контейнере
Зачем?
у меня на обработку ушло больше времени
Так ИИ попросите - оно умеет.
Для отправки сообщения требуется регистрация/авторизация