Как правильно подойти к вопросу: необходимо разработать модель классификации, поможете с выбором парадигмы решения задачи?

Ссылка скопирована
1 ответ

По вводным: у меня стоит задача, состоящая в том, что необходимо разработать программу, которая будет выполнять следующие функции: поступает на вход программы WORD файл, содержащий в себе текст анкеты, а на выходе должен быть текстовый файл конфигурации анкеты. Конфигурация анкеты состоит из четырех цифр: 1) номер вопроса 2) тип вопроса (с одним ответом (1) или множественными вариантами ответов (n)) 3) цифра первого варианта ответа 4) цифра последнего варианта ответа.
Например:
1 1 1 5
2 7 10 16
3 1 20 24
4 1 30 34
5 1 40 45
6.1 1 50 54
6.2 1 60 64
6.3 1 70 74
6.4 1 80 84
7 1 90 95
8 1 100 105
9 1 110 114
10 1 120 121
11 1 130 135
12 1 140 144
13 1 150 154
14 1 160 164
15 9 170 178
16 1 180 184
17 1 190 194
18 1 200 205
19 1 210 211
20 1 220 222
21 1 230 234
22 1 240 245
23 1 250 253
24 1 260 265
25 1 500 501
26 1 505 508
27 1 510 515
28 1 520 521
29 1 525 543
30 1 550 555
По вводным: 6-ой вопрос - табличный вопрос, в котором каждая строка это подвопрос 6.1, 6.2, 6.3 и тд
69722919ad8ef598279855.png
69722939ba6f6907117417.png
69722998308cd352482667.png
Сейчас ситуация такая: ранее я делал модель, основанную на случайном лесе и она очень успешно справлялась с классификацией вопросов на 1 и n на тестовой выборке данных. Данные для теста на вход модели поступали идеальные и результат был соответствующий или около того, но когда я внедрил модель в основную программу, конфигурационные файлы были "неудовлетворительные", результат был откровенно фиговый из-за того, что составители анкет - люди, а люди подвержены человеческому фактору и в самих анкетах попадаются ошибки (лишний пробел, иногда попадаются вопросы обычные,не табличные, но в них варианты ответов оформлены в таблице со скрытыми границами (не знаю зачем так сделали, может для удобства и красоты) и тд) и парсер на вход модели подаёт мусор и на выходе тоже получается мусор.
По вводным: я решил, что стоит перейти к обучению модели на основе компьютерного зрения так как для человека анкеты, с которыми работает программа, выглядят абсолютно обычно и все четыре цифры каждого вопроса определяются однозначно. Механизм работы программы будет следующий: на вход программы будет поступать анкета, далее будут сняты с нее png каждой страницы анкеты и они будут поступать на вход модели и под конец будет получен на выходе txt файл конфигурации анкеты.
Нужно понять: итак, вопрос: какой инструмент выбрать для разметки данных, как разметить анкеты в нем и как быть с вопросами, которые располагаются на нескольких страницах?

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Артём Dev Ответ

Для вашей задачи я бы не начинал с “классической” ML-классификации случайным лесом как единственного решения. Тут задача ближе к document parsing + sequence labeling + правила. Нужно из Word-файла извлечь структуру анкеты: номера вопросов, варианты ответов, диапазоны кодов, табличные подвопросы и тип ответа. Это не просто классификация вопроса на 1 или n.

Рабочая архитектура:

  1. Сначала парсинг DOCX в структурированный вид: абзацы, таблицы, списки, стили, нумерация.
  2. Затем выделение блоков “вопрос → варианты ответа”.
  3. Потом определение типа вопроса: single, multiple, table, scale, free text.
  4. После этого расчёт диапазонов кодов.

Для DOCX используйте не plain text, а библиотеку, которая сохраняет структуру документа. Например Python:

from docx import Document
 
doc = Document("anketa.docx")
for p in doc.paragraphs:
    print(p.text, p.style.name)

from docx import Document doc = Document("anketa.docx") for p in doc.paragraphs: print(p.text, p.style.name)

Если анкеты имеют похожий формат, лучше всего работает гибрид: регулярные выражения + правила + небольшая модель для спорных случаев. Например, номера вопросов часто ловятся регулярками, табличные вопросы — по таблицам DOCX, варианты ответов — по маркерам и кодам.

ML-модель можно использовать для классификации типа вопроса, но ей нужны признаки: количество вариантов, наличие “выберите несколько”, наличие таблицы, наличие шкалы, стиль абзаца, паттерн нумерации. Случайный лес может быть нормальным baseline, но не должен отвечать за всю разметку.

Если хотите более современно, можно использовать sequence labeling: размечать строки как QUESTION, ANSWER_OPTION, TABLE_ROW, COMMENT. Но для маленького корпуса правиловая система будет дешевле и надёжнее.

Итог: парадигма — не чистая классификация, а структурный парсер анкеты. Начните с DOCX parser и правил, добавьте ML только для определения типа вопроса и неоднозначных мест. Так вы получите воспроизводимый конфиг, а не модель, которая хорошо классифицирует тест, но ломается на новом оформлении.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно