Как стать автором
Обновить

Комментарии 14

Довольно забавно выглядит программа, помогающая находить ответы на конкретные вопросы в художественном произведении. Это как помощник двоечнику на уроке литературы, чтобы он смог доказать что читал книгу. А человека должны взволновать образы, характеры, чувства, а не Кто? Где? Когда?))) Вот если бы для примера был взят учебник по Истории, тогда другое дело!

Можно автоматизировать написание энциклопедий (типа Википедии), когда реферативное описание сюжета автоматически извлекается из текста романа.

Да, это хорошая идея!

Добрый день!

Книгу Льва Николаевича взял для демонстрации работы, вопросно‑ответную систему можно использовать для любого текста на русском языке. Моей целью было создать инструмент для поиска ответов в объёмных документах, договорах и т.д.

Спасибо за интерес к посту!

А можно что-то подобное сделать для поиска информации по коду? Есть большая кодовая база. Периодически приходится в ней разбираться. Было бы здорово, если бы такая модель могла бы человеческим языком рассказать как устроен и работает этот код, примерно так как программист написавший его.

Добрый день!

Cпециализированной модели для ответов по коду лично я не знаю. Знаю, что ChatGPT умеет хорошо отвечать на вопросы по переданному ему коду. Как вариант можно попробовать Alpaca и подобные, из минусов – им не получиться передать большой объём кода из-за ограничений размера сообщений. Ещё можно сгенерировать документацию с помощью существующих программ, как например Doxygen, а уже сгенерированный текст передать в вопросно-ответную систему.

Спасибо за вопрос!

Здравствуйте! Подскажите, пожалуйста, есть ли возможность каким-то образом получать не просто ответ, а ссылку на файл/абзац/предложение, по которому был построен ответ?

Добрый день!

Простите за задержку с ответом, пришлось провести небольшое исследование.

Проще всего взять ответ и найти его положение в исходном тексте, если таких мест находится несколько, то к ответу можно добавить соседние слова. Если же текст составлен из нескольких файлов, то зная их длину и последовательность добавление в основной текст, по расположению ответа можно определить и сам файл.

Спасибо за интерес к теме!

Спасибо за ответ! Не такая уж и простая задача. Особенно имея массив из тысяч-десятков тысяч документов.
Все-таки важно иметь не просто готовый ответ, а возможность перепроверить нейросеть на галлюцинации.

Добрый день, спасибо за пример решения интересной и полезной задачи! Попробовал запустить код в Colab, но на директиве outputs = model(**new_tokenized) произошел сбой с сообщением "ОЗУ полностью исчерпан". Буду с этой проблемой разбираться, но был бы благодарен за помощь в решении.

Добрый день!

Извиняюсь за ожидание.

Видимо ОЗУ забивается данными, используемые во время обработки текста, и для работы модели не остаётся памяти. Можно перед запуском модели с помощью оператора del удалить переменные с токенами – new_input_ids, new_token_type_ids и прочие – так как на таком этапе они уже не нужны, главное сохранить переменную tokens, так как она нужна для составления ответа.

Спасибо за интерес к посту!

Спасибо за ответ, но загрузить весь текст за раз у меня все же не получается. Использую загрузку по 4 батча по 512 токенов:

number_batches = 4

for i in range(236):

  start_batch = i*number_batches

  end_batch = number_batches + i*number_batches

При этом загрузка памяти GPU составляет около 13 ГБ (из 15 возможных). Код работает, но выдает не такие хорошие ответы, как в статье. В некоторых случаях получается также, что end_index имеет меньшее значение, чем start_index. Возможно я что-то не так собрал или использую не ту версию transformers. Можно ли получить ссылку на полный код?

Добрый день!

Весь код, который использовался для создания вопросно-ответной системы, приведён в посте, поэтому файл с полным кодом не сохранился, да и не имеет смысла. Сам код я испытывал на компьютере с 32 Гб ОЗУ и туда все тексты влезали сразу, как-то не учёл, что могут быть проблемы с памятью. Можно попробовать сократить текст, почистив его от стоп-слов или проведя лемматизацию слов, и уже после токенизировать и передать модели, тут однозначного решения дать не могу, так как не сталкивался с такой проблемой. Что касается ответов, то они могут сильно искажается, если подавать текст частями и в текущей части не оказалось ответа на вопрос, плюс система лучше даёт короткие ответы, поэтому плохо справляется с вопросами, предполагающие длинный и развёрнутый ответ.

Здравствуйте!

Как сделать так, чтобы для каждого нового вопроса не надо было запускать программу заново?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории