«Этот блог предназначен для начинающих в глубоком обучении»

С тех пор, как люди научились читать и писать, они не нашли простого способа понять контекст чего-либо, кроме текстовых данных. Графические или графические представления не всегда являются плюсом, в то время как текст может упростить задачу для всех, кто умеет читать.

Строки, слова, предложения, буквы, символы, абзацы и многие другие формы текстовых данных существуют и используются сегодня. Люди могут естественным образом понять уровень сходства между вышеуказанными формами текста. Сегодня в этом блоге я собираюсь показать вам, как мы можем настроить машину для понимания контекста текста и даже предложить еще несколько слов, похожих на наш ввод!

Мы создадим механизм рекомендаций, который предлагает слова или соответствующие действия, похожие на слова, указанные в качестве входных данных. Да, вы правильно прочитали, Text будет вводом! Но как это возможно, если каждая машина понимает только числа? Это точно!

Техника, с помощью которой мы имеем дело с текстом или речью, или любым другим типом неструктурированных данных, известна как понимание естественного языка, которая понимает контекст (скажем здесь) текста или речи и действует соответствующим образом.

Существует множество методов с открытым исходным кодом, которые используют глубокое обучение для работы с текстовыми данными. Здесь я объясню некоторые из лучших предварительно обученных моделей представления слов. Методы, которые я собираюсь здесь обсудить, могут предоставить вложения слов, которые впоследствии можно использовать для поиска косинусного сходства с остальными вложениями слов, чтобы можно было легко выполнять рекомендации.

Что такое встраивание слов?

Вложение слов (или вектор слов) — это числовой вектор в системе координат, представляющий слово. Вложения слов также показывают, что похожие слова будут использоваться вместе чаще. Как узнать, похожи ли два слова по их действию, применению или даже написанию? Косинусное сходство, должно быть, вы слышали это название? **вступительный математический шум усиливается**

Косинусное сходство — лучший способ сравнить сходство между парами векторов слов. Чем меньше косинусное расстояние, тем более похожи слова.

Что такое контекстные модели?

Существует два основных типа представления слова: бесконтекстное и контекстное. Бесконтекстная модель создает представление с встраиванием одного слова для каждого слова в словаре, тогда как Контекстная генерирует вложение каждого слова на основе других слов в предложении. Например, в контекстно-свободной модели слово «банк» будет иметь одно и то же слово, встроенное в фразы «банковский счет» и «берег реки», в то время как в случае контекстуальной модели оно будет иметь отчетливая репрезентация в каждой фразе, в которой он присутствует.

Давайте посмотрим, какие модели NLU являются одними из лучших в мире прямо сейчас…

Word2Vec

Преодолев ограничения One-Hot Encoder, Bag of Words и TF-IDF, в 2013 году появилась технология представления слов, обеспечивающая семантическое сходство между словами и другими формами текста, Word2Vec.

С помощью Word2Vec мы обучаем нейронную сеть с одним скрытым слоем предсказывать целевое слово на основе его контекста (соседние слова). Word2Vec использует два стиля векторизации: CBOW и SkipGram. Функционирование обоих стилей становится понятным, если взглянуть на изображение выше (автор
Kavita Ganesan)

Word2Vec — это контекстно-свободная модель, что означает, что слово будет одинаково представлено вне зависимости от того, находится оно внутри фразы или нет.

Word2Vec не работает должным образом с фразами из более чем одного слова. Мы можем использовать усредненный вектор отдельных векторов слов в качестве вектора фразы.

Корпус: набор всех элементов в наборе данных
Словарь: все уникальные элементы в корпусе

Чтобы рекомендовать использование Word2Vec, сначала обучите модель на своем корпусе, а затем используйте ее метод most_similar, чтобы найти первые «n» похожих элементов для элемента в вашем словаре.

Взгляните на реализация Word2Vec в Gensim в Python

Универсальный кодировщик предложений (USE)

Универсальный кодировщик предложений от Tensorflow кодирует текст в многомерные векторы, которые можно использовать для классификации текста, семантического сходства, кластеризации и других задач естественного языка. Входные данные представляют собой текст на английском языке переменной длины (длина текста больше слова), а выходные данные представляют собой 512-мерный вектор.

Используя USE, мы можем получить вложения любого текста на уровне предложений.

Вот практическая реализация USE by TensorFlow на ноутбуке.

По сути, вы можете найти косинусное сходство между двумя векторами слов в Python, используя sklearn.metrics.pairwise.cosine_similarity

Представления двунаправленного энкодера от трансформаторов (BERT)

Преодолев самые большие проблемы в НЛП, то есть нехватку данных для обучения, в ноябре 2018 года Google открыл исходный код одного из своих лучших алгоритмов ответа на вопросы под названием «Представления двунаправленного кодировщика от трансформаторов» или BERT.

BERT унаследовал функции многих предварительно обученных контекстных представлений. Примечательно, что BERT — это первая глубоко двунаправленная неконтролируемая модель языкового представления, предварительно обученная с использованием только простого текстового корпуса, т. е. SQuADv1.1.

В конце концов, BERT — это кодирующая часть трансформатора. При понимании языковой фразы он добавляет токен [CLS] в начале и токен [SEP] в конце предложения. [CLS] — это специальный токен, используемый для классификации предложения, если оно совпадает со следующим предложением или нет, этот токен содержит вложение всего предложения. Токен [SEP] — это токен разделения предложения, указывающий позицию, в которой предложение заканчивается.

Какую из вышеперечисленных моделей использовать для рекомендации?

Теперь вы, должно быть, думаете, что если все три лучше, то какой из них использовать? Простой ответ на этот вопрос: ВСЕ ТРИ.

Каждая из вышеперечисленных моделей по-своему обеспечивает наилучшие результаты. Почему бы не использовать лучшее из лучшего?

А вот и подход ансамблевого обучения рекомендательных систем. Возьмите пользовательский ввод, получите выходные данные всех моделей для одного и того же ввода, объедините их и порекомендуйте комбинированный вывод пользователю. Это действительно так просто!

Но не просто комбинируйте их, комбинируйте их с логикой. Составьте список комбинированных результатов, а затем отсортируйте их сначала в порядке убывания, их количество в объединенном списке, а затем их количество в корпусе.

Например,
корпус =
[txt1, txt2, txt4, txt3, txt4, txt3, txt3, txt5, txt3, txt2, txt6, txt7, txt8, txt7]< br /> vocab = [txt1, txt2, txt4, txt3, txt5, txt6, txt7, txt8]

› input =txt4

w2v_output = [txt1, txt4]
use_output = [txt2, txt5]
bert_output = [txt3, txt1]
combined_output = [txt1, txt4, txt2, txt5, txt3, txt1]

› final_output = [txt1, txt3, txt2, txt4, txt5]

Спасибо!
blog_by: Аадарш.