Введение в курс «Изучай НЛП вручную» — это серия практических проектов, основанных на PaddleNLP. Эта серия тщательно разработана несколькими старшими инженерами Baidu и содержит практические проекты, начиная от вектора слов, предварительно обученной языковой модели и заканчивая извлечением информации, анализом настроений, текстовыми вопросами и ответами, структурированными данными, вопросами и ответами, переводом текста, машинным синхронным переводом. интерпретация, диалоговая система и другие практические проекты.Объясняется весь процесс, чтобы помочь разработчикам более всесторонне и четко понять использование платформы Baidu Paddle в области НЛП, а также сделать выводы из одного случая и гибко использовать PaddleNLP. и PaddleNLP для практики глубокого обучения НЛП.
В июне отдел Baidu Paddle и Natural Language Processing совместно запустил 12 видеокурсов НЛП, в которых подробно объяснялся этот практический проект. Чтобы посмотреть повтор курса, нажмите:Студия любви Baidu.com/love studio/co…Добро пожаловать в группу курса QQ (номер группы: 758287592) для общения~~
«Прошлое и настоящее» чат-ботов
Между 1964 и 1966 годами Джозеф Вейценбаум, немецко-американский ученый-компьютерщик из Лаборатории искусственного интеллекта Массачусетского технологического института, разработал первого в мире чат-бота Eliza. Имя Элизы происходит от роли в пьесе ирландского драматурга Бернарда Шоу «Цветочница», в которой цветочница Элиза, родившаяся в нищете, стала предметом зависти всех на посольском балу, научившись общаться с высший класс. Королевская принцесса Венгрии». Как первому в мире чат-боту, Элиза получила от автора драматическую окраску. Хотя некоторые элементарные генераторы цифрового языка (программы, которые могли выводить связный текст) уже существовали в то время, Элиза была первой программой, специально разработанной для взаимодействия с людьми. Пользователь может использовать пишущую машинку для ввода естественного человеческого языка и получения ответа от машины. Как объясняет Визенбаум, Элиза обеспечивает «диалог между людьми и компьютерами». С непрерывным развитием технологий глубокого обучения чат-боты становятся все более и более интеллектуальными. Мы можем использовать роботов, чтобы выполнять какую-то механическую работу по вопросам и ответам, а также общаться с умными роботами в свободное время, их внешний вид делает жизнь более красочной. Теперь простого чат-бота можно реализовать, объединив весло и Wechaty. На следующем изображении показана демонстрация робота для чата WeChat, основанного на PaddleHub + Wechaty. Получите сообщения, полученные WeChat через Wechaty, а затем используйте платоновскую мини-модель PaddleHub для создания новых текстов диалогов в соответствии с контекстом диалога и, наконец, отправьте их в виде сообщений WeChat для взаимодействия в чате.
На изображении ниже показана демонстрация робота распознавания эмоций WeChat, основанного на PaddleNLP + Wechaty. Получите сообщения, полученные WeChat через Wechaty, а затем используйте модель TextCNN PaddleNLP, чтобы сделать эмоциональную оценку входного текста и, наконец, вернуть их в виде сообщений WeChat, чтобы реализовать распознавание текстовых эмоций.
Заинтересованные студенты могут обратиться к этой демонстрации, чтобы внедрить робота для распознавания эмоций в свой WeChat~ Демонстрационная ссылка:GitHub.com/Ma Wenjie873…
Разве это не весело. Если вас это не устраивает, приглашаем вас принять участие в творческом конкурсе, организованном PaddlePaddle, фреймворком для чат-ботов с открытым исходным кодом Wechaty и дизайнерским сообществом MixLab. PaddleNLP предоставляет участникам множество моделей глубокого обучения перед обучением, а Wechaty также предоставляет вам удобный SDK для создания чат-бота. и т.д. Особенности. Ссылка для регистрации на конкурс:Студия любви Baidu.com/love studio/co…Сегодня мы познакомим вас с PaddleNLP, чтобы реализовать поэтические ответы и простой чат-бот, давайте сделаем это вместе! Быстрая практика
PaddleNLP предоставляет функцию generate() для генеративных задач, которая встроена во все генеративные модели PaddleNLP. Поддержка стратегий декодирования жадного поиска, поиска луча и выборки. Пользователям нужно только указать стратегию декодирования и соответствующие параметры, чтобы завершить декодирование предсказания и получить идентификаторы токенов и оценки вероятности сгенерированной последовательности.
2.1 Небольшой пример модели GPT с использованием API генерации
1. Загрузите paddlenlp.transformers.GPTChineseTokenizer для обработки данных
Перед входом в предварительно обученную модель текстовые данные необходимо преобразовать в функции посредством обработки данных. Этот процесс обычно включает в себя такие шаги, как сегментация слов, преобразование токена в идентификатор и добавление специального токена.
PaddleNLP имеет встроенные соответствующие токенизаторы для различных моделей предварительного обучения, и вы можете загрузить соответствующий токенизатор, указав имя модели, которую хотите использовать. Вызовите метод __call__ GPTChineseTokenizer, чтобы преобразовать то, что мы говорим, во входные данные, приемлемые для модели.
from paddlenlp.transformers import GPTChineseTokenizer
Установите имя модели, которую вы хотите использовать
model_name = 'gpt-cpm-small-cn-distill' tokenizer = GPTChineseTokenizer.from_pretrained(model_name)
импортное весло user_input = "Горшок вина среди цветов, выпейте в одиночестве без свидания вслепую. Поднимите бокал, чтобы пригласить яркую луну,"
преобразовать текст в идентификаторы
input_ids = tokenizer(user_input)['input_ids'] print(input_ids)
Преобразовать преобразованный идентификатор в тензор
input_ids = paddle.to_tensor(input_ids, dtype='int64').unsqueeze(0)
2. Используйте PaddleNLP для загрузки предварительно обученной модели одним щелчком мыши.
PaddleNLP предоставляет китайские модели предварительного обучения, такие как GPT, UnifiedTransformer и т. д., которые можно загрузить одним щелчком мыши по названию модели предварительного обучения.
GPT использует кодировщик Transformer Decoder в качестве основного компонента сети и использует механизм одностороннего внимания, который подходит для задач генерации длинных текстов.
В настоящее время PaddleNLP предоставляет множество моделей предварительной подготовки GPT на китайском и английском языках, на этот раз мы используем небольшую модель предварительной подготовки GPT на китайском языке.
from paddlenlp.transformers import GPTLMHeadModel
Загрузка китайских моделей GPT в один клик
model = GPTLMHeadModel.from_pretrained(model_name)
Вызовите сгенерированный API, чтобы обновить текст
ids, scores = model.generate( input_ids=input_ids, max_length=16, min_length=1, decode_strategy='greedy_search')
generated_ids = ids[0].numpy().tolist()
Используйте токенизатор для преобразования сгенерированного идентификатора в текст
generated_text = tokenizer.convert_ids_to_string(generated_ids) print(generated_text)
Тень в трех человек.
Видно, что сгенерированный эффект неплохой, да и использование генеративного API очень простое.
2.2 UnifiedTransformer
Модели и генеративные API завершают светскую беседу
1. Загрузите paddlenlp.transformers.UnifiedTransformerTokenizer для обработки данных.
UnifiedTransformerTokenizer вызывается так же, как GPT, но API для обработки данных немного отличается.
Вызов метода dialog_encode UnifiedTransformerTokenizer преобразует то, что мы говорим, во входные данные, приемлемые для модели.
from paddlenlp.transformers import UnifiedTransformerTokenizer
Установите имя модели, которую вы хотите использовать
model_name = 'plato-mini' tokenizer = UnifiedTransformerTokenizer.from_pretrained(model_name)
user_input = ['Привет, сколько тебе лет в этом году']
Вызовите метод dialog_encode для генерации ввода
encoded_input = tokenizer.dialogue_encode( user_input, add_start_token_as_response=True, return_tensors=True, is_split_into_words=False)
2. Используйте PaddleNLP для загрузки предварительно обученной модели одним щелчком мыши.
Как и в случае с GPT, мы можем вызвать предварительно обученную модель UnifiedTransformer одним щелчком мыши.
UnifiedTransformer использует кодировщик Transformer в качестве основного сетевого компонента, применяет гибкий механизм внимания и добавляет специальные токены для идентификации различных диалоговых навыков во входных данных модели, чтобы модель могла одновременно поддерживать диалог в чате, диалог с рекомендациями и диалог со знаниями.
В настоящее время PaddleNLP предоставляет три модели предварительной подготовки для UnifiedTransformer на китайском языке:
unified_transformer-12L-cn Эта предварительно обученная модель обучается на крупномасштабном наборе данных разговоров на китайском языке. unified_transformer-12L-cn-luge Эта предварительно обученная модель точно настроена на наборе данных диалога из тысячи слов с помощью unified_transformer-12L-cn. plato-mini Эта модель предварительно обучена на миллиардах данных разговоров в чате на китайском языке.
from paddlenlp.transformers import UnifiedTransformerLMHeadModel model = UnifiedTransformerLMHeadModel.from_pretrained(model_name)
Затем мы передаем обработанный ввод в функцию генерации и настраиваем стратегию декодирования.
Здесь мы используем стратегию декодирования TopK плюс выборка. То есть выборка по вероятности из k результатов с наибольшей вероятностью.
ids, scores = model.generate( input_ids=encoded_input['input_ids'], token_type_ids=encoded_input['token_type_ids'], position_ids=encoded_input['position_ids'], attention_mask=encoded_input['attention_mask'], max_length=64, min_length=1, decode_strategy='sampling', top_k=5, num_return_sequences=20)
from utils import select_response
Просто выберите лучший ответ на основе вероятности
результат = select_response (идентификаторы, оценки, токенизатор, keep_space = False, num_return_sequences = 20) печать (результат) ['Здравствуйте, в этом году мне 23 года']
В примере PaddleNLP приведен код для построения полноценной диалоговой системы (взаимодействия человека с компьютером).Если вам интересно, вы можете попробовать это в терминале~ Адрес взаимодействия человека с компьютером:GitHub.com/paddle pad DL…попробуй Вы находите это интересным? Редактор настоятельно рекомендует новичкам обращаться к приведенному выше коду и набирать его вручную, потому что только так вы сможете углубить свое понимание кода. Код, соответствующий этому проекту:студия любви.Baidu.com/lovestudio/liar…Для получения дополнительной информации о PaddleNLP посетите GitHub, чтобы получить опыт после сбора звезд:GitHub.com/paddle pad DL…
Сообщество разработчиков искусственного интеллекта Baiduai.baidu.com/forum, чтобы предоставить разработчикам по всей стране платформу для общения, обмена информацией и ответов на вопросы, чтобы разработчики больше не «работали в одиночку» на пути исследований и разработок и находили лучшие технические решения посредством постоянного обмена мнениями и дискуссий. Если вы хотите попробовать различные технологии искусственного интеллекта и разработать сценарии приложений, как можно скорее присоединяйтесь к AI-сообществу Baidu.Все ваши мечты об искусственном интеллекте могут быть реализованы здесь!