Как создать мультипризнаковую мноклассовую модель классификации текстов?
Добрый день.
Вопрос в области NLP (обработка текста).
Подскажите, пожалуйста, как создать модель многоклассовой классификации для предсказания не одного признака, а сразу нескольких признаков (например, 20-30 признаков).
Задача следующая:
У меня есть текстовый датасет с наименованиями материалов строительных материалов. Есть разметка (дополнительные столбцы) с характеристиками материалов.
Например:
Есть наименование:
Наименование - Труба стальная бесшовная холоднодеформированная 34х6 Ст.20 ГОСТ 8734-75
Разметка с характеристиками:
Вид - Труба
Диаметр - 34
Толщина стенки - 6
Марка стали - Ст.20
И требуется сразу в рамках одной модели предсказать Вид, Диаметр, Толщина стенки, Марка стали.
Я решил эту задачу с помощью логистической регрессии, но на 1 признаке (на признаки Диаметр). Но хотелось бы сразу решить эту задачу сразу на нескольких признаках.
И еще вопрос:
Может лучше решить эту задачу на модели нейросетей? И какую лучше нейросеть использовать для решения данной задачи?
Что то я сомневаюсь, что вы смогли свою задачу решить такими простыми алгоритмами, вы проводили проверку, какой был процент верных ответов?
Я верно понимаю, что у вас огромный объем описаний, которые не формализованы? потому что иначе задача решается серией парсеров на основе регулярых выражений.
Боюсь вам нужна gpt, она буквально может на вход получить ваш текст а на выход к примеру json с нужными полями.
если готовы сами обучать (у вас большой обучающий датасет тысячи - десятки тысяч примеров) то берете какой-нибудь pretrain (хоть того же yandex или facebook llama или гугл gemma или qwen) небольшого размера (думаю хватит 1..8 b их можно дешево до тюнить) и набор утилит peft (погугли, есть готовые статьи с примером в т.ч. на хабре)
если не готовы, берете модель по умнее (скорее всего уже не локально), и составляете качественный помпт, в котором есть максимально качественные примеры (будет работать с десятками или даже единицами)
p.s. я бы вместо отправки мощной модели самого текста, заставил бы ее создать приложение (как я бы его создавал, вся проблема не в нем а серии описаний разных типовых и не очень форматов данных, ведь не все же они отличаются друг от друга, наверняка можно выделить группы похожих) причем такое, что если встречается новый формат, снова топать к ИИ и обновлять приложение, добавляя новый или подправляя уже имеющися
Accuracy - 0.710921447763553. Текст векторизировал через TF-IDF и подавал в логистическую регрессию.
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
Глазами тоже пробежался, в принципе, много правильных предсказаний.
Да, верно. Описания разноформатные, где то больше параметров, где то меньше.
Ниже пример. Датасет примерно из 30 тысяч строк.
ТРУБА СТАЛЬНАЯ БЕСШОВНАЯ 168Х12 СТ20А К48 НЕФТЕГАЗОПРОВОДНАЯ ПОВЫШЕННО Й ЭКСПЛУАТАЦИОННОЙ НАДЕЖНОСТИ ТУ 1317-006.1-593377520-2003 В ЗАВОДСКОЙ ИЗОЛЯЦИИ 2У ТУ 1390-004-32256008-03 2Н ТУ14-3Р-49-2003 2У Т У1390-011-01284695-07
Труба бесшовная горячедеформированная из коррозионностойкой стали 325х16 ст.08Х18Н10Т ГОСТ 9940-81. Испытать на МКК.
Труба электросварная 530х8-К52-13ХФА ТУ 1383-010-48124013-2003, с двухслойной изоляцией весьма усиленного типа 3-3Н ТУ 14-3Р-37-2000
Труба б/ш 42,2х4,9 из стали ASTM A335 Р5 по ASME B 36.10 аналог трубы стальной бесшовной для нефтеперерабатывающей и нефтехимической промышленности Б- Ст.15Х5М ГОСТ 550-75
Труба бесшовная горячедеформированная из коррозионно-стойкой стали 219х9-12Х18Н10Т ГОСТ 9940-81
ТРУБА СТАЛЬНАЯ БЕСШОВНАЯ 159Х8 СТ13ХФА К48 НЕФТЕГАЗОПРОВОДНАЯ ПОВЫШЕНН ОЙ ЭКСПЛУАТАЦИОННОЙ НАДЕЖНОСТИ ТУ 1317-006.1-593377520-2003 В ЗАВОДСКО Й ИЗОЛЯЦИИ 2У ТУ1390-004-32256008-03 2Н ТУ14-3Р-49-2003 2У Т У 1390-011-01284695-04
Труба бесшовная горячедеформированная из коррозионно-стойкой стали 273х8-12Х18Н10Т ГОСТ 9940-81
Труба бесшовная 114х8-20С ТУ 14-161-148- 94, с наружным трехслойным защитным покрытием на основе экструдированного полиэтилена 3У ТУ 1390-004-32256008-2003