1 00:00:00,069 --> 00:00:01,341 2 00:00:01,341 --> 00:00:02,449 3 00:00:02,449 --> 00:00:05,880 4 00:00:05,880 --> 00:00:07,080 - Функция pipeline (конвеер). 5 00:00:09,540 --> 00:00:12,020 Функция pipeline является наиболее высокоуровневым API 6 00:00:12,020 --> 00:00:14,010 библиотеки Transformers. 7 00:00:14,010 --> 00:00:16,050 Она объединяет все шаги 8 00:00:16,050 --> 00:00:18,873 перехода от необработанных текстов к пригодным для использования прогнозам. 9 00:00:20,228 --> 00:00:22,980 Используемая модель лежит в основе конвейера, 10 00:00:22,980 --> 00:00:24,390 но конвейер также включает 11 00:00:24,390 --> 00:00:26,610 всю необходимую пред-обработку, 12 00:00:26,610 --> 00:00:30,240 поскольку модель ожидает не тексты, а числа, 13 00:00:30,240 --> 00:00:32,040 а также некоторую постобработку, 14 00:00:32,040 --> 00:00:34,533 чтобы сделать вывод модели человекочитаемым. 15 00:00:35,910 --> 00:00:37,593 Давайте рассмотрим первый пример 16 00:00:37,593 --> 00:00:39,693 с конвейером анализа настроений. 17 00:00:40,740 --> 00:00:44,670 Этот конвейер выполняет классификацию текста на заданном входе 18 00:00:44,670 --> 00:00:46,953 и определяет, является ли он позитивным или негативным. 19 00:00:47,910 --> 00:00:51,750 Здесь он приписывает положительную оценку данному тексту 20 00:00:51,750 --> 00:00:54,413 с достоверностью 95%. 21 00:00:55,650 --> 00:00:58,470 Вы можете передать множество текстов в один конвейер, 22 00:00:58,470 --> 00:01:00,270 которые будут обработаны и переданы 23 00:01:00,270 --> 00:01:02,673 через модель вместе как батч (пакет). 24 00:01:03,570 --> 00:01:05,970 На выходе получается список отдельных результатов 25 00:01:05,970 --> 00:01:07,923 в том же порядке, что и входные тексты. 26 00:01:08,790 --> 00:01:12,270 Здесь мы находим ту же метку и оценку для первого текста, 27 00:01:12,270 --> 00:01:14,443 а второй текст оценивается как отрицательный 28 00:01:14,443 --> 00:01:17,243 с достоверностью 99,9%. 29 00:01:18,720 --> 00:01:20,700 Конвейер zero-shot классификации 30 00:01:20,700 --> 00:01:23,610 это более общий конвейер классификации текста, 31 00:01:23,610 --> 00:01:26,370 он позволяет вам предоставлять нужные метки. 32 00:01:26,370 --> 00:01:29,850 Здесь мы хотим классифицировать наш входной текст по меткам, 33 00:01:29,850 --> 00:01:32,643 образование, политика и бизнес. 34 00:01:33,540 --> 00:01:35,580 Конвейер успешно распознает 35 00:01:35,580 --> 00:01:38,280 это скорее образование, чем другие метки, 36 00:01:38,280 --> 00:01:40,643 с достоверностью 84%. 37 00:01:41,670 --> 00:01:43,110 Переходим к другим задачам, 38 00:01:43,110 --> 00:01:45,030 конвейер генерации текста будет 39 00:01:45,030 --> 00:01:46,533 автоматически заполнять заданную подсказку. 40 00:01:47,460 --> 00:01:49,980 Вывод генерируется с некоторой долей случайности, 41 00:01:49,980 --> 00:01:52,800 поэтому он меняется каждый раз, когда вы вызываете объект генератора 42 00:01:52,800 --> 00:01:53,763 для заданной строки. 43 00:01:54,990 --> 00:01:57,123 До сих пор мы использовали API конвейера 44 00:01:57,123 --> 00:02:00,360 с моделью по умолчанию, связанной с каждой задачей, 45 00:02:00,360 --> 00:02:02,880 но вы можете использовать его с любой моделью, которая была предварительно обучена 46 00:02:02,880 --> 00:02:04,263 или дообучена на этой задаче. 47 00:02:06,540 --> 00:02:10,350 Зайдя в хаб моделей, huggingface.co/models 48 00:02:10,350 --> 00:02:13,350 вы можете отфильтровать доступные модели по задаче. 49 00:02:13,350 --> 00:02:17,190 Модель по умолчанию, использованная в нашем предыдущем примере, была gpt2, 50 00:02:17,190 --> 00:02:19,290 но существует множество других моделей, 51 00:02:19,290 --> 00:02:20,523 и не только на английском языке. 52 00:02:21,450 --> 00:02:23,670 Давайте вернемся к конвейеру генерации текста 53 00:02:23,670 --> 00:02:26,193 и загрузим в него другую модель, distilgpt2. 54 00:02:27,060 --> 00:02:28,950 Это облегченная версия gpt2 55 00:02:28,950 --> 00:02:30,603 созданная командой Hugging Face. 56 00:02:31,740 --> 00:02:34,110 При применении конвейера к данной строке, 57 00:02:34,110 --> 00:02:36,360 мы можем указать несколько аргументов 58 00:02:36,360 --> 00:02:39,240 такие как максимальная длина генерируемых текстов, 59 00:02:39,240 --> 00:02:41,700 или количество предложений, которые мы хотим вернуть, 60 00:02:41,700 --> 00:02:44,150 поскольку в процессе генерации присутствует некоторая случайность. 61 00:02:46,080 --> 00:02:48,750 Генерирование текстов путем угадывания следующего слова в предложении 62 00:02:48,750 --> 00:02:51,450 было целью предварительного обучения в GPT-2. 63 00:02:51,450 --> 00:02:55,140 Конвейер заполнения маски является целью предварительного обучения BERT, 64 00:02:55,140 --> 00:02:57,363 которая заключается в угадывании значения замаскированного слова. 65 00:02:58,260 --> 00:03:01,020 В этом случае мы спрашиваем два наиболее вероятных значения 66 00:03:01,020 --> 00:03:03,660 для пропущенных слов, согласно модели, 67 00:03:03,660 --> 00:03:07,053 и получаем в качестве возможных вариантов ответов "mathematical" или "computational". 68 00:03:08,280 --> 00:03:10,170 Еще одна задача, которую может выполнить модель Transformers 69 00:03:10,170 --> 00:03:12,660 классифицировать каждое слово в предложении 70 00:03:12,660 --> 00:03:14,970 вместо предложения в целом. 71 00:03:14,970 --> 00:03:18,390 Одним из примеров этого является Named Entity Recognition (распознавание именованных сущностей), 72 00:03:18,390 --> 00:03:20,820 которая представляет собой задачу идентификации сущностей, 73 00:03:20,820 --> 00:03:25,323 таких как люди, организации или места в предложении. 74 00:03:26,400 --> 00:03:30,570 Здесь модель правильно находит персону, "Sylvain", 75 00:03:30,570 --> 00:03:32,453 организацию, "Hugging Face", 76 00:03:32,453 --> 00:03:35,010 а также местоположение, "Brooklyn", 77 00:03:35,010 --> 00:03:36,303 внутри входного текста. 78 00:03:37,661 --> 00:03:40,230 Аргумент grouped_entities=True используется 79 00:03:40,230 --> 00:03:42,330 для того, чтобы заставить конвейер сгруппировать 80 00:03:42,330 --> 00:03:44,790 различные слова, связанные с одним и тем же объектом, 81 00:03:44,790 --> 00:03:46,353 например, "Hugging" и "Face". 82 00:03:48,270 --> 00:03:50,670 Еще одна задача, доступная с помощью API конвейера 83 00:03:50,670 --> 00:03:52,920 является extractive question answering (экстрактивный ответ на вопрос). 84 00:03:52,920 --> 00:03:55,380 Предоставляется контекст и вопрос, 85 00:03:55,380 --> 00:03:58,290 модель определит участок текста в контексте 86 00:03:58,290 --> 00:04:00,190 содержащий ответ на вопрос. 87 00:04:01,650 --> 00:04:03,960 Получение кратких резюме очень длинных статей 88 00:04:03,960 --> 00:04:06,540 это то, с чем также может помочь библиотека Transformers, 89 00:04:06,540 --> 00:04:08,140 с конвейером суммаризации. 90 00:04:09,480 --> 00:04:12,570 Наконец, последняя задача, поддерживаемая API конвейера 91 00:04:12,570 --> 00:04:14,130 это перевод. 92 00:04:14,130 --> 00:04:16,170 Здесь мы используем французско-английскую модель 93 00:04:16,170 --> 00:04:17,460 найденную в хабе моделей 94 00:04:17,460 --> 00:04:19,893 для получения английской версии нашего входного текста. 95 00:04:21,600 --> 00:04:23,490 Вот краткий обзор всех задач 96 00:04:23,490 --> 00:04:25,500 которые мы рассмотрели в этом видео. 97 00:04:25,500 --> 00:04:27,390 Попробуйте использовать виджеты инференса 98 00:04:27,390 --> 00:04:28,327 в хабе моделей. 99 00:04:30,459 --> 00:04:33,475 100 00:04:33,475 --> 00:04:35,175