«На пути к человеческому пониманию текстов / языков компьютерами»

21 июня 2018 года в Buildo компания Data Science Milan организовала мероприятие на модную тему: Обработка естественного языка (NLP). В настоящее время мы нашли множество приложений НЛП, таких как машинный перевод (переводчик Google), ответы на вопросы (чат-бот), поиск в Интернете и приложениях (Amazon), лексическая семантика (Тезаурус), анализ настроений (Cambridge Analytica), генератор естественного языка (бот Reddit). ).

«50 оттенков текста - использование обработки естественного языка (NLP) для проверки, улучшения и расширения функциональных возможностей продукта», Алессандро Панебианко, Грейнджер

Что такое обработка естественного языка?

Обработка естественного языка - это отрасль искусственного интеллекта, представляющая мост между людьми и компьютерами; в широком смысле его можно определить как автоматическое манипулирование естественным языком, таким как речь и текст, с помощью программного обеспечения. Есть много способов представления слов в НЛП, и вы не можете использовать текстовые данные непосредственно в алгоритмах машинного обучения.

Первым шагом является преобразование необработанного текста в числовые функции путем векторизации слов. Есть несколько методов:

-Сумка слов: это способ извлечения функций из текста в качестве входных данных для машинного обучения, это представление текста, которое описывает появление слов, взятых из словаря, полученного в корпусе, путем пометки его в двоичном векторе. Его называют «мешком слов», потому что он не заботится о порядке структуры слов в корпусе.

-Хеширование: хеш-функцию можно использовать для сопоставления данных произвольного размера с данными набора чисел фиксированного размера вектора. Уловка хеширования или хеширование функций заключается в применении функции хеширования к функциям и непосредственном использовании их значений хеширования: с одним и тем же вводом мы получаем одинаковый вывод. Для оценки слова можно использовать двоичную оценку или счет. Хеш-функция - это односторонний процесс, и иногда это может быть проблемой, потому что вы не можете вернуться из вывода во входное пространство, и могут произойти столкновения между двумя отображенными пространствами.

-TF-IDF: другой подход - изменить масштаб частоты слов в зависимости от того, как часто они появляются во всех документах; этот подход называется «Частота термина - обратная частота документа». Term Frequency - оценка частоты встречаемости слова в текущем корпусе; Обратная частота документа: применяется оценка того, насколько редко слово встречается в корпусе. С помощью техники tf-idf термины взвешиваются, и так далее с оценками выделяются слова с полезной информацией.

Второй уровень - это встраивание слов с целью генерации семантики кодирования векторов: отдельные слова представлены векторами в заранее определенном векторном пространстве. Также для встраивания слов есть несколько техник:

-Word2vec: это нейронная сеть, которая пытается максимизировать вероятность увидеть слово в контекстном окне, косинусное сходство между двумя векторами. Эта задача решается двумя моделями обучения: непрерывным набором слов или моделью CBOW, которая пытается предсказать слово из его контекста; модель непрерывной скип-граммы, которая пытается предсказать контекст из слова.

-GloVe: это расширение word2vec, оно создает явный контекст слова или матрицу совпадения слов, используя статистику по всему текстовому корпусу, вместо того, чтобы предсказывать слова с результатами повышения с точки зрения вычислений, и использует косинусное сходство.

-FastText: это библиотека для изучения встраивания слов и классификации текста, созданная Facebook's AI Research (FAIR). Он имеет ту же точность, что и предыдущие модели, но с лучшей производительностью, это можно объяснить следующим соотношением:

FastText: Word Embeddings = XGBoost: Random Forest

Последний уровень - это встраивание предложений, при таком подходе цель состоит в том, чтобы представить более отдельных слов векторами, а также в этом случае доступны несколько моделей:

-Doc2vec: он работает так же, как word2vec, но цель состоит в том, чтобы использовать сеть абзацев и слов, чтобы предложение можно было рассматривать как другое слово, которое является уникальным для документа. Существует распределенная память (DM), аналогичная модели CBOW, и распределенная память (DBOW), аналогичная skip-gram, как в word2vec.

-CNN: сверточные нейронные сети были созданы для компьютерного зрения, а в последнее время они также применяются для решения задач обработки естественного языка. Они в основном состоят из нескольких слоев сверток с нелинейными функциями активации, примененными к результатам. Свертки используются над входным слоем для вычисления выходных данных, это приводит к локальным соединениям, где каждая область входа связана с нейроном выхода. Каждый слой применяет разные фильтры и объединяет их результаты. Процесс начинает складывать слова вместе, создавая матрицу, фильтрует отсканированные слова, максимальное объединение выделяет наиболее важные слова, а слой LSTM сохраняет порядок слов.

-LSTM: Long Short Term Memory - это модные рекуррентные нейронные сети с некоторыми дополнительными функциями, среди которых ячейка памяти для каждого временного шага. Применение RNN - это поиск в Google, он связывает поиск с элементом. Слой LSTM создает из входных слов новый выход, придающий релевантность порядку слов, а следующие слои фильтра придают релевантность наиболее важным локальным характеристикам.

После этой презентации была показана демонстрация с использованием набора данных от Kaggle и GloVe vectors с кодом репозитория, доступным на Github.

Посмотрите видео.

По сценарию Клаудио Дж. Джанкатерино

Первоначально опубликовано на сайте datasciencemilan.org 26 июня 2018 г.