1 строка для встраивания слов ELECTRA с NLU в Python

Включая часть речи, распознавание именованных сущностей, классификацию эмоций в одной строке! С графиками Bonus t-SNE!

0. Введение

  • ПЕРЧАТНАЯ Бумага

0.1 Что такое НЛУ?

Библиотека NLU John Snow Labs дает вам более 1000 моделей НЛП и более 100 встраиваний слов на 300+ языках, а также бесконечные возможности для изучения ваших данных и получения информации.

В этом руководстве мы расскажем, как получить мощные вложения Electra с помощью одной строки кода NLU, а затем как визуализировать их с помощью t-SNE. Сравним сравнение настроений с сарказмом и эмоциями!

0.2 Что такое t-SNE?

T-SNE — это инструмент для визуализации многомерных данных. Он преобразует сходства между точками данных в совместные вероятности и пытается минимизировать расхождение Кульбака-Лейблера между совместными вероятностями низкоразмерного встраивания и данных высокой размерности. t-SNE имеет функцию стоимости, которая не является выпуклой, т.е. при разных инициализациях мы можем получить разные результаты.

0.3 Что такое Электра?

Методы предварительного обучения моделированию языка с маской (MLM), такие как BERT, искажают ввод, заменяя некоторые токены на [MASK], а затем обучают модель для восстановления исходных токенов. Хотя они дают хорошие результаты при передаче на последующие задачи NLP, для их эффективности обычно требуется большой объем вычислений. В качестве альтернативы предлагается более эффективная задача предварительного обучения, называемая обнаружением замененного токена. Вместо того, чтобы маскировать ввод, подход искажает его, заменяя некоторые токены правдоподобными альтернативами, отобранными из небольшой сети генератора. Затем, вместо обучения модели, которая прогнозирует исходные идентификаторы поврежденных токенов, Electra обучает дискриминативную модель, которая прогнозирует, был ли каждый токен в поврежденных входных данных заменен образцом генератора или нет. Тщательные эксперименты демонстрируют, что эта новая задача предварительного обучения более эффективна, чем MLM, потому что задача определяется для всех входных токенов, а не только для небольшого подмножества, которое было замаскировано. В результате контекстные представления научились этому подходу существенно превосходить те, которые были изучены BERT, при том же размере модели, данных и вычислениях. Прирост особенно велик для небольших моделей; например, модель была обучена на одном графическом процессоре в течение 4 дней, что превосходит GPT (обученная с использованием 30-кратного увеличения вычислительной мощности) на тесте понимания естественного языка GLUE. Этот подход также хорошо работает в масштабе, где он сопоставим с RoBERTa и XLNet, используя менее 1/4 их вычислений, и превосходит их при использовании того же объема вычислений.

1. Импортируйте NLU, загрузите Electra и вставьте образец строки в 1 строку.

nlu.load(‘electra’).predict(‘He was suprised by the diversity of NLU’)

2. Загрузите больший набор данных.

Следующий фрагмент загрузит набор данных сарказма Reddit и загрузит его в фрейм данных Pandas.

import pandas as pd # Download the dataset ! wget -N https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/resources/en/sarcasm/train-balanced-sarcasm.csv -P /tmp # Load dataset to Pandasdf = pd.read_csv(‘/tmp/train-balanced-sarcasm.csv’) df

3. Сделайте прогноз на основе набора данных, а также добавьте часть классификаторов речи, эмоций и настроений.

Поскольку добавить дополнительные классификаторы и получить их прогнозы в NLU так просто, мы расширим наш конвейер NLU классификаторами POS, Emotion и Sentiment, которые позволяют достичь результатов, близких к современным.

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

pipe = nlu.load(‘pos sentiment emotion electra’) df[‘text’] = df[‘comment’] # NLU to gives us one row per embedded word by specifying the output level predictions = pipe.predict(df[[‘text’,’label’]], output_level=’token’) predictions

4. Эмоциональные сюжеты.

Мы можем быстро построить распределение предсказанных эмоций с помощью функций панд во фрейме данных.

# Some Tokens are None which we must drop first predictions.dropna(how=’any’, inplace=True) # Some sentiment are ‘na’ which we must drop first predictions = predictions[predictions.emotion!= ‘na’] predictions.emotion.value_counts().plot.bar(title=’Dataset emotion distribution’)

5. Подготовьте данные для T-SNE.

Подготавливаем данные для алгоритма T-SNE, собирая их в матрицу для TSNE.

import numpy as np mat = np.matrix([x for x in predictions.electra_embeddings])

6. Установите T-SNE.

Наконец, мы подбираем алгоритм T-SNE и получаем двумерное представление наших вложений слов Electra.

from sklearn.manifold import TSNE model = TSNE(n_components=2) low_dim_data = model.fit_transform(mat) print(‘Lower dim data has shape’,low_dim_data.shape)

7. Постройте вложения слов ELECTRA, раскрашенные частью речевого тега.

Следующие ниже графики показывают точечные диаграммы для двумерного представления вложений слов. Каждая точка представляет слово в предложении, а цвет представляет класс POS, к которому принадлежит слово. Tsne_df = pd.DataFrame (low_dim_data, predictions.pos) ax = sns.scatterplot (data = tsne_df, x = 0, y = 1, hue = tsne_df.index) ax.set_title (‘Вложения T-SNE ELECTRA, окрашенные частью речевого тега’)

tsne_df = pd.DataFrame(low_dim_data, predictions.pos) ax = sns.scatterplot(data=tsne_df, x=0, y=1, hue=tsne_df.index) ax.set_title(‘T-SNE ELECTRA Embeddings, colored by Part of Speech Tag’)

8. Постройте вложения Electra Word, раскрашенные эмоциями.

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

tsne_df = pd.DataFrame(low_dim_data, predictions.emotion) ax = sns.scatterplot(data=tsne_df, x=0, y=1, hue=tsne_df.index) ax.set_title(‘T-SNE ElECTRA Embeddings, colored by Emotion’)

9. Постройте вложение слов Electra, раскрашенное сарказмом.

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

tsne_df = pd.DataFrame(low_dim_data, predictions.label.replace({1:’sarcasm’,0:’normal’})) tsne_df.columns=[‘x’,’y’] ax = sns.scatterplot(data=tsne_df, x=’x’, y=’y’, hue=tsne_df.index) ax.set_title(‘T-SNE ELECTRA Embeddings, colored by Sarcasm label’)

10. Есть намного больше словарных вложений!

Чтобы просмотреть все вложения слов, введите следующую команду

nlu.print_all_model_kinds_for_action(’embed’)

Другие статьи о NLU Medium

  • Введение в НЛУ
  • Одна строка кода Python для 6 вложений, BERT, ALBERT, ELMO, ELECTRA, XLNET, GLOVE, часть речи с NLU и t-SNE
  • Однолинейные вложения Берта и графики t-SNE с NLU
  • Простое сходство предложений с BERT Sentence Embeddings с использованием John Snow Labs NLU

NLU Talks

  • NLP Summit 2020: John Snow Labs NLU: простота Python, сила Spark NLP
  • John Snow Labs NLU: станьте супергероем науки о данных с помощью одной строчки кода Python
  • Обнаружение языков и многоязычный анализ текста в Spark NLP

Подробнее о NLU

  • Сайт НЛУ
  • NLU Github
  • Документация НЛУ
  • Есть вопросы или хотите поделиться идеей? Присоединяйтесь к нам в Slack!
  • Обзор всех примеров ноутбуков NLU
  • Записная книжка для занятий по распознаванию именованных сущностей (NER) 18
  • Часть записной книжки для речи (POS)
  • Блокнот Вложения слов BERT и построение графиков T-SNE
  • Блокнот Вложения слов ALBERT и построение графиков T-SNE
  • Блокнот Вложения слов ELMO и построение T-SNE
  • Блокнот Вложения слов XLNET и построение графиков T-SNE
  • «Проверка орфографии»
  • Блокнот Типизированный анализ зависимостей

Ссылка на блокнот

  • Вложения слов ELECTRA и построение t-SNE

Источник: ledsshop.ru

Стиль жизни - Здоровье!