С развитием технологии НЛП поток информации и вычислительная мощность также постоянно улучшаются. Теперь мы можем получить точную информацию, необходимую для выполнения задачи, просто введя несколько символов в строку поиска. Первые несколько вариантов автозаполнения, предоставляемые поиском, часто настолько уместны, что мы чувствуем, что человек помогает нам в нашем поиске.
Что именно движет развитием НЛП?
- Это новый взгляд на постоянно расширяющиеся неструктурированные веб-данные?
- Это вычислительная мощность, которая не отставала от мышления исследователей?
- Повысилась ли эффективность взаимодействия с машинами на человеческом языке?
На самом деле это все, на самом деле их гораздо больше. Вы можете ввести такой вопрос в любой поисковик«Почему обработка естественного языка так важна сейчас?», и вы можете найти статьи в Википедии, в которых приводятся всевозможные веские причины.
Есть несколько более глубоких причин, одна из которых — ускоренное стремление к искусственному общему интеллекту (AGI) или глубокому искусственному интеллекту (Deep AI). Человеческий интеллект может просто воплощаться в нашей способности организовывать наши мысли в отдельные концепции, сохранять (запоминать) и эффективно делиться ими. Это позволяет нам расширять наш интеллект во времени и пространстве, соединяя наши мозги для формирования коллективного разума.
Стивен Пинкер в «Сущности мысли» (англ.The Stuff of Thought) заключается в том, что мы на самом деле думаем на естественном языке. Недаром его называют «внутренним диалогом». Facebook, Google и Илон Маск делают ставку на то, что слова станут протоколом коммуникации по умолчанию для разума. Все они инвестировали в проекты, которые пытаются преобразовать мысли, мозговые волны и электрические сигналы в слова. Более того, гипотеза Вульфа утверждает, что язык влияет на то, как мы думаем. Естественный язык, несомненно, является средством передачи культуры и коллективного сознания.
Следовательно, если мы хотим имитировать или имитировать человеческое мышление на машинах, обработка естественного языка может иметь решающее значение. Кроме того, вы узнаете важные подсказки об интеллекте, которые могут быть скрыты в структуре данных и отношениях вложения слов в «Обработке естественного языка в действии». Люди будут использовать эти структуры, а нейронные сети позволят неодушевленным системам переваривать, хранить, извлекать и генерировать естественный язык способами, похожими на человеческие.
Есть более важная причина, по которой люди хотят научиться писать систему, используя естественный язык? Это потому, что вы можете спасти мир! Надеюсь, вы следили за дискуссиями крупных шишек о проблемах управления ИИ и проблемах разработки «дружественного ИИ». Ник Бостром, Калум Чейс, Илон Маск и многие другие считают, что будущее человечества зависит от нашей способности разрабатывать дружественные машины. В обозримом будущем естественный язык станет важным связующим звеном между людьми и машинами.
Даже если бы мы могли «думать» напрямую с помощью машин, эти мысли, скорее всего, были бы сформированы естественными словами и языком в нашем мозгу. Граница между естественным языком и машинным языком будет стираться, так же как исчезнет грань между человеком и машиной. На самом деле грань начала стираться в 1984 году, когда публикация «Манифеста киборгов» сделала антиутопические предсказания Джорджа Оруэлла более вероятными и приемлемыми.
Надеюсь, фраза «помогите спасти мир» никого не смущает. По ходу книги мы покажем читателям, как построить и подключить «мозг» чат-бота. В процессе читатели обнаружат, что небольшие возмущения в петле социальной обратной связи между людьми и машинами могут иметь серьезные последствия как для машин, так и для людей. Подобно бабочке, машущей где-то крыльями, крошечная настройка «эгоизма» чат-бота может вызвать хаотический шторм противоречивого поведения со стороны враждебных чат-ботов. Вы также заметите, что некоторые добрые и самоотверженные системы быстро собирают лояльных последователей, чтобы помочь подавить хаос, вызванный недальновидными ботами. Просоциальные совместные чат-боты могут оказать огромное влияние на мир из-за сетевых эффектов просоциального поведения.
Вот почему авторы книги «Обработка естественного языка в действии» собрались вместе. Поддерживающее сообщество формируется посредством открытого, честного, просоциального общения в Интернете с использованием нашего родного языка. Мы используем коллективный разум для создания и поддержки других полуинтеллектуальных акторов (машин). Мы надеемся, что наши слова оставят глубокий след в сознании каждого и распространятся как мем в мире чат-ботов, заразив других энтузиазмом по созданию просоциальных систем НЛП. Мы надеемся, что когда сверхразум, наконец, появится, этот просоциальный идеал придаст ему небольшой импульс.
Обработка естественного языка в действии Понимание, анализ и генерация текста с помощью Python
[Америка] Хобсон Лейн, Коул Ховард, Ханнес Макс Хапке, перевод Ши Ляна, Лу Сяо, Тан Кексина, Ван Биня
краткое введение
Эта книга представляет собой практическое введение в обработку естественного языка (NLP) и глубокое обучение. НЛП стало основной областью применения глубокого обучения, а глубокое обучение является важным инструментом в исследованиях и применении НЛП. Книга разделена на 3 части: первая часть знакомит с основами НЛП, включая сегментацию слов, векторизацию TF-IDF и преобразование частотных векторов слов в семантические векторы; вторая часть описывает глубокое обучение, включая нейронные сети, вектора слов. , сверточные нейронные сети (базовые модели и методы глубокого обучения, такие как CNN), рекуррентная нейронная сеть (RNN), сеть с долговременной кратковременной памятью (LSTM), последовательное моделирование и механизмы внимания; третья часть знакомит с практическими аспектами , включая извлечение информации, построение модели ответов на вопросы, проблемы с производительностью и решения для реальных систем, таких как системы и диалог человек-машина.
Эта книга предназначена для разработчиков Python среднего и продвинутого уровня.Она сочетает в себе базовую теорию и практику программирования.Это практический справочник для практиков в современной области НЛП.
Выбор редактора
- Необходим для разработчиков Python, чтобы начать работу с обработкой естественного языка.
- Практическое справочное руководство для практиков в области современной обработки естественного языка.
- Переведено командой НЛП Xiaomi AI Lab
1. Эта книга представляет собой практическое руководство по созданию машин, способных читать и интерпретировать человеческий язык;
2. Читатели могут использовать существующие пакеты Python, чтобы уловить смысл текста и ответить соответствующим образом;
3. Эта книга расширяет традиционные методы обработки естественного языка, включая нейронные сети, современные алгоритмы глубокого обучения и генеративные методы для решения реальных задач, таких как извлечение дат и имен, синтез текста и ответы на неформатированные вопросы;
4. Предоставьте исходный код.
Недавние достижения в области глубокого обучения позволили приложениям всех типов понимать текст и речь с предельной точностью. В результате появился чат-бот, имитирующий человека, который просматривает наиболее подходящие резюме, выполняет превосходный прогнозирующий поиск и автоматически создает резюме документов — и все это за небольшую часть стоимости. Развитие новых технологий, наряду с появлением простых в использовании инструментов, таких как Keras и TensorFlow, сделало обработку естественного языка профессионального качества (NLP) более доступной, чем когда-либо.
Основное содержание этой книги
● Использование таких инструментов, как Keras, TensorFlow, gensim и scikit-learn.
● Обработка естественного языка на основе правил и обработка естественного языка на основе данных.
● Масштабируемый конвейер обработки естественного языка.
Чтобы прочитать эту книгу, читатели должны иметь базовые знания о глубоком обучении и средний уровень навыков программирования на Python.
Особенности «Обработки естественного языка»:
Об авторе
содержание
Часть 1. Машины, обрабатывающие текст
Глава 1 Обзор НЛП 3
1.1 Естественный язык и язык программирования 3
1.2 Волшебная магия 4
1.2.1 Разговорные машины 5
1.2.2 Математика в НЛП 5
1.3 Практическое применение 7
1.4 Язык в «глазе» компьютера 8
1.4.1 Язык блокировок (регулярные выражения) 9
1.4.2 Регулярные выражения 9
1.4.3 Простой чат-бот 11
1.4.4 Другой подход 14
1.5 Краткое описание гиперпространства 17
1.6 Порядок слов и грамматика 19
1.7 Конвейер естественного языка чат-ботов 20
1.8 Глубокая обработка 22
1.9 IQ естественного языка 24
1.10 Резюме 26
Глава 2. Построение собственного словарного запаса — причастия 27
2.1 Задача (предварительный просмотр) 28
2.2 Использование токенизатора для создания словаря 29
2.2.1 Скалярный продукт 37
2.2.2 Измерение совпадений между наборами слов 37
2.2.3 Обращение со знаками препинания 38
2.2.4 Расширение словаря до n-грамм 43
2.2.5 Нормализация словарного запаса 48
2.3 Эмоции 55
2.3.1 VADER: анализатор настроений на основе правил 56
2.3.2 Наивный Байес 58
2.4 Резюме 61
Глава 3 Математика в словах 62
3.1 Сумка слов 63
3.2 Векторизация 67
3.3 Закон Ципфа 74
3.4 Тематическое моделирование 76
3.4.1 Назад к закону Ципфа 79
3.4.2 Рейтинг релевантности 80
3.4.3 Инструменты 82
3.4.4 Другие инструменты 83
3.4.5 Окапи БМ25 85
3.4.6 Перспективы будущего 85
3.5 Резюме 85
Глава 4. Семантика частотности терминов 87
4.1 От частоты слов до оценки темы 88
4.1.1 Вектор TF-IDF и морфологическое слияние 88
4.1.2 Тематические векторы 89
4.1.3 Мысленные эксперименты 90
4.1.4 Алгоритм оценки темы 94
4.1.5 Классификатор LDA 95
4.2 Скрытый семантический анализ 99
4.3 Разложение по сингулярным числам 103
4.3.1 Левый сингулярный вектор U 105
4.3.2 Вектор сингулярных значений S 106
4.3.3 Правый сингулярный вектор VT 107
4.3.4 Ориентация матрицы SVD 107
4.3.5 Сокращение темы 108
4.4 Анализ главных компонентов 109
4.4.1 PCA на трехмерных векторах 111
4.4.2 Регрессионное НЛП 112
4.4.3 Семантический анализ коротких сообщений на основе PCA 114
4.4.4 Семантический анализ коротких сообщений на основе усеченных SVD 116
4.4.5 Влияние классификации коротких сообщений спама на основе LSA 117
4.5 Скрытое распределение Дирихле (LDiA) 119
4.5.1 Идея LDiA 120
4.5.2 Семантический анализ коротких сообщений на основе тематической модели LDiA 121
4.5.3 LDiA+LDA=Фильтр спама 124
4.5.4 Более справедливое сравнение: 32 темы LdiA 125
4.6 Расстояние и сходство 127
4.7 Обратная связь и улучшение 129
4.8 Сила тематических векторов 132
4.8.1 Семантический поиск 133
4.8.2 Улучшения 135
4.9 Резюме 135
Часть II Глубокое обучение (нейронные сети)
Глава 5 Предварительные нейронные сети (персептроны и обратное распространение) 139
5.1 Состав нейронных сетей 140
5.1.1 Персептрон 140
5.1.2 Цифровые персептроны 141
5.1.3 Когнитивное искажение 142
5.1.4 Поверхности ошибок 153
5.1.5 Различные типы поверхностей ошибок 154
5.1.6 Различные алгоритмы градиентного спуска 155
5.1.7 Keras: реализация нейронных сетей в Python 155
5.1.8 Внешний вид 158
5.1.9 Нормализация: форматирование ввода 159
5.2 Резюме 159
Глава 6. Рассуждение векторов слов (Word2vec) 160
6.1 Семантические запросы и аналогии 160
6.2 Слово векторы 162
6.2.1 Векторно-ориентированное рассуждение 165
6.2.2 Как рассчитать представление Word2vec 167
6.2.3 Как использовать gensim. модуль word2vec 175
6.2.4 Создание настраиваемых представлений векторов слов 177
6.2.5 Word2vec и GloVe 179
6.2.6 FastText 180.
6.2.7 Word2vec и LSA 180
6.2.8 Визуализация отношений слов 181
6.2.9 Неестественные слова 187
6.2.10 Расчет схожести документов с помощью Doc2vec 188
6.3 Резюме 190
Глава 7. Сверточные нейронные сети (CNN) 191
192 7.1 семантическое понимание
7.2 Наборы инструментов 193
7.3 Сверточные нейронные сети 194
7.3.1 Строительные блоки 195
7.3.2 Размер шага 196
7.3.3 Состав ядер свертки 196
7.3.4 Заполнение 198
7.3.5 Обучение 199
7.4 Узкое окно 199
7.4.1 Реализация Keras: подготовка данных 201
7.4.2 Архитектура сверточной нейронной сети 206
7.4.3 Объединение 206
7.4.4 Выпадение 208
7.4.5 Выходной слой 209
7.4.6 Начало обучения (обучения) 211
7.4.7 Использование моделей в пайплайнах 212
7.4.8 Перспектива 213
7.5 Резюме 214
Глава 8. Рекуррентные нейронные сети (RNN) 215
8.1 Функция памяти рекуррентных сетей 217
8.1.1 Обратное распространение во времени 221
8.1.2 Обновление веса в разное время 223
8.1.3 Краткий обзор 225
8.1.4 Трудности 225
8.1.5 Реализация рекуррентных нейронных сетей с помощью Keras 226
8.2 Соединение деталей 230
8.3 Самообучение 231
8.4 Гиперпараметры 232
8.5 Прогноз 235
8.5.1 Состояние 236
8.5.2 Двунаправленные RNN 236
8.5.3 Кодированные векторы 238
8.6 Резюме 238
Глава 9. Улучшение памяти: сети долговременной памяти (LSTM) 239
9.1 Долгосрочная кратковременная память (LSTM) 240
9.1.1 Обратное распространение во времени 247
9.1.2 Использование моделей 250
9.1.3 Грязные данные 251
9.1.4 Обработка «неизвестных» записей 254
9.1.5 Моделирование на уровне персонажей 255
9.1.6 Генерация текста чата 260
9.1.7 Дальнейшая генерация текста 262
9.1.8 Проблемы с генерацией текста: неконтролируемый контент 269
9.1.9 Другие механизмы памяти 269
9.1.10 Более глубокие сети 270
9.2 Резюме 271
Глава 10 Моделирование последовательностей и механизмы внимания 272
10.1 Архитектура кодирования-декодирования 272
10.1.1 Идеи декодирования 273
10.1.2 Дежавю? 275
10.1.3 Последовательный диалог 276
10.1.4 Обзор LSTM 277
10.2 Сборка конвейера от последовательности к последовательности 278
10.2.1 Подготовка набора данных для последовательного обучения 278
10.2.2 Последовательная модель в Keras 279
10.2.3 Кодировщики последовательности 280
10.2.4 Декодер идей 281
10.2.5 Сборка сети последовательностей 282
10.3 Обучение сети последовательных последовательностей 282
10.4 Создание чат-бота с использованием сети последовательностей последовательностей 284
10.4.1 Подготовка корпуса к обучению 285
10.4.2 Создание словаря символов 286
10.4.3 Генерация обучающей выборки однократного кодирования 286
10.4.4 Обучение последовательного чат-бота 287
10.4.5 Сборка модели генерации последовательности 288
10.4.6 Прогнозирование выходных последовательностей 288
10.4.7 Генерация ответов 289
10.4.8 Общение с чат-ботами 290
10.5 Улучшения 290
10.5.1 Использование группирования для снижения сложности обучения 290
10.5.2 Механизмы внимания 291
10.6 Практические приложения 292
10.7 Резюме 294
Часть 3 Вход в реальный мир (настоящие задачи НЛП)
Глава 11 Извлечение информации (распознавание именованных объектов и ответы на вопросы) 297
11.1 Именованные объекты и отношения 297
11.1.1 База знаний 298
11.1.2 Извлечение информации 300
11.2 Обычные шаблоны 300
11.2.1 Регулярные выражения 301
11.2.2 Обработка извлечения информации как задачи извлечения признаков в машинном обучении 302
11.3 Информация, которую стоит извлечь 303
11.3.1 Извлечение положения GPS 303
11.3.2 Дата извлечения 304
11.4 Извлечение отношений лиц (отношений вещей) 309
11.4.1 Маркировка части речи 309
11.4.2 Стандартизация имен объектов 313
11.4.3 Нормализация и извлечение отношения сущностей 314
11.4.4 Образцы слов 314
11.4.5 Сегментация текста 314
11.4.6 Почему не работает функция split('.!')
11.4.7 Использование регулярных выражений для сегментации предложений 316
11.5 Извлечение информации из реального мира 318
11.6 Резюме 319
Глава 12 Запуск чата (движок диалога) 320
12.1 Языковые навыки 321
12.1.1 Современный метод 322
12.1.2 Гибридные методы 326
12.2 Методы сопоставления с образцом 327
12.2.1 Чат-бот сопоставления шаблонов на основе AIML 328
12.2.2 Сетевое представление сопоставления с образцом 334
12.3 Методы познания 334
12.4 Методы извлечения (поиска) 336
12.4.1 Контекстная проблема 336
12.4.2 Чат-боты на основе извлечения примеров 338
12.4.3 Чат-боты на основе поиска 341
12.5 Генеративные методы 343
12.5.1 Говоря о NLPIA 343
12.5.2 Плюсы и минусы каждого подхода 345
12,6 Полный привод 345
12.7 Процесс проектирования 347
12.8 Методы 349
12.8.1 Задавать вопросы с предсказуемыми ответами 349
12.8.2 Будьте интересны 350
12.8.3 Если ничего не помогает, ищите 350
12.8.4 Стать популярным 350
12.8.5 Стать соединителем 351
12.8.6 Становление эмоциональным 351
12.9 Реальный мир 351
12.10 Резюме 352
Глава 13 Масштабируемость (оптимизация, распараллеливание и пакетная обработка) 353
13.1 Слишком много (данных) не всегда хорошо 353
13.2 Оптимизация алгоритмов НЛП 354
13.2.1 Индекс 354
13.2.2 Расширенное индексирование 355
13.2.3 Расширенное индексирование на основе Annoy 357
13.2.4 Зачем использовать приблизительные индексы именно 361
13.2.5 Обходной путь индекса: дискретизация 362
13.3 Алгоритмы памяти постоянного уровня 363
13.3.1 Генсим 363
13.3.2 Графические вычисления 363
13.4 Распараллеливание вычислений НЛП 364
13.4.1 Обучение моделей НЛП на графических процессорах 364
13.4.2 Аренда и покупка 365
13.4.3 Варианты аренды GPU 366
13.4.4 Блок тензорной обработки TPU 367
13.5 Уменьшение объема памяти во время обучения модели 367
13.6 Понимание моделей с TensorBoard 369
13.7 Резюме 372
Приложение А. Инструменты НЛП к этой книге 373
Приложение B Интересный Python и регулярные выражения 380
Приложение C. Векторы и матрицы (основы линейной алгебры) 385
Приложение D. Общие инструменты и методы машинного обучения 391
Приложение E. Настройка GPU 403 в Amazon Cloud Services (AWS)
Приложение F Хеширование с учетом местоположения 415
Ресурсы 421
Глоссарий 428