Deep learning for NLP (RU)
545 subscribers
42 photos
4 files
65 links
Применение методов машинного обучения и глубокого обучения (ML/DL) к обработке естественного языка (NLP).

Конспекты к избранным статьям, описание концепций и основ ML/DL, а также последние новости в этой области.

Контакт: @edwardnlp
Download Telegram
Получение датасетов из nltk

Установите необходимый пакет (в вашей локальной среде).
pip install nltk

Теперь нужно скачать и уже можно использовать датасет.
import nltk
from nltk.corpus import treebank

nltk.download('treebank') # Скачайте датасет

# Теперь можно посмотреть на примеры данных в датасете
for word, tag in treebank.tagged_words()[:10]:
print('Word: ', word, 'Tag: ', tag)

#dataset #pos #tutorial
Получение датасетов из huggingface

Установите необходимые пакеты (в вашей локальной среде).
pip install datasets conllu

Некоторые датасеты могут требовать дополнительные пакеты, как например в случае UD датасета. Для этого датасета нужно еще установить пакет 'conllu'. Обычно его устанавливать не нужно и будет достаточно установить только 'datasets'.

Теперь нужно скачать и уже можно использовать датасет.
from datasets import load_dataset

dataset = load_dataset('universal_dependencies', 'ru_gsd', split='train') # Скачайте датасет

# Теперь можно посмотреть на примеры данных в датасете
dataset.to_pandas().head(5) # NB! эта команда требует предустановленный пакет pandas

#dataset #pos #tutorial
Хотите знать, как начать использовать адаптеры? Очень просто! Просто добавьте несколько строк кода в существующий обучающий код HuggingFace:

```
from transformers import ParallelConfig

# Загрузите модель из HuggingFace.
model = AutoModelForTokenClassification.from_pretrained(model_checkpoint)

# Выберите тип адаптера. Больше конфигураций адаптеров можно найти здесь
# Не уверен в чем разница между адаптерами? Можешь использовать тег #adapters для поиска по каналу и найти особенности многих типов адаптеров.
adapter_config = ParallelConfig()

model.add_adapter("any_name_of_the_task", config=adapter_config)
model.set_active_adapters("any_name_of_the_task")
model.train_adapter("any_name_of_the_task")

# Дальше тренируй модель HuggingFace как обычно.
```

Полностью работающий пример использования адаптера можно найти здесь. В примере используется задание Part-of-speach tagging (#pos)

#adapters #tutorial
👍8
Bamboolib
📷 Использование библиотеки

Если вы часто используете Jupyter Notebooks или Databricks для анализа и исследования данных, вам определенно стоит обратить внимание на библиотеку bamboolib. Она будет полезна для быстрого получения сведений структурированном наборе данных.
Для изучения и преобразования данных библиотека предоставляет простой UI и работает с pandas DataFrames. Когда анализ данный закончен, можно скопировать необходимые графики в свой блокнот, используя фрагменты кода, которые сгенерированы библиотекой.

Что касается цены, то существует 2 версии: community (бесплатная) и «pro» для бизнеса (платная). Я использовал библиотеку в Databricks. Поэтому скорее всего, я использовал платную версию, если Databricks предоставляет её по умолчанию.

Различия между бесплатной и платной версиями таковы:
- Интеграция с вашими кастомными библиотеками;
- Использование плагинов (какие-либо специфические преобразование, визуализации или источники данных).

Как по мне, я бы не сказал, что эти функции очень нужны большинству пользователей. Что мешает вам загрузить данные из своего специфического источника данных в переменную и затем проанализировать их? Или почему вы не можете получить общие сведения о наборе данных, а затем применить свою визуализацию, как обычно?
Может быть, тарифные планы изменятся, но пока, использование платной версии сомнительно. Похоже, несколько лет назад у инструмента была другая цена и он стоил довольно дорого, но в прошлом году компания была поглощена компанией Databricks, что привело к упрощению ценообразования и фактически сделало библиотеку бесплатной.

Краткое руководство о том, как начать пользоваться библиотекой

Установка библиотеки с помощью pip:
pip install bamboolib

(Если вы используете 11-ю Databricks Runtime на своем кластере, то библиотека установлена по умолчанию)

Есть 2 способа как загрузить данные в UI библиотеки:
1. Загрузите dataframe в переменную и просмотрите её. Над таблицей с данными вы увидите кнопку "Show bamboolib UI".
import bamboolib as bam
import pandas as pd
df = pd.read_csv(bam.titanic_csv)
df

2. Загрузите UI, а затем загрузите данные, используя различные форматы.
import bamboolib as bam 
bam


#tutorial #library #visualisation
🔥3
Пример использования OpenAI Embedding модели для задачи схожести текстов.

Подготовка:
1. Установить OpenAI и scipy библиотеки;
pip install openai scipy

2. NB! Чтобы использовать API, вам необходимо настроить платную учетную запись и добавить способ оплаты в OpenAI.

Получение векторов.
import openai

openai.api_key = 'sk-[your-personal-api-key]'

embedding1 = openai.Embedding.create(
input="Лес - естественная среда обитания многих животных",
model="text-embedding-ada-002"
)
embedding2 = openai.Embedding.create(
input="Мы договорились встретиться в среду",
model="text-embedding-ada-002"
)
embedding3 = openai.Embedding.create(
input="Маша и Вова увидятся на этой неделе",
model="text-embedding-ada-002"
)


Сравнение полученных векторов с использованием косинусного расстояния. NB! Расстояние рассчитывается как «1 - cos(x)». Это означает, что если расстояние между векторами равно 0 градусов, на выходе будет 0, а не 1.
from scipy.spatial.distance import cosine

print(cosine(embedding1['data'][0]['embedding'], embedding2['data'][0]['embedding']))
print(cosine(embedding3['data'][0]['embedding'], embedding2['data'][0]['embedding']))

# Output
# 0.2229697075890561
# 0.14707107396043684


Выводы:
Несмотря на то, что 1-е и 2-е предложения имеют омонимы (среда), значение этих слов разное. 2-е и 3-е предложения не имеют общих слов, но семантически близки. Расстояние между векторами также подтверждает это.

Пример использования API на аглийском.
#openai #embeddings #tutorial
👍5👎1🔥1
🔗 Публикация
🔗 Руководство
🧠 Авторы: Sebastian Ruder, Jonas Pfeiffer, Ivan Vulić и Edoardo M. Ponti
Year: Февраль 2023

Авторы выпустили новое руководство, которое предлагает общую классификацию фундаментальных компонентов модульных нейронных сетей.

Ожидается, что в нынешнюю эпоху крупномасштабных языковых моделей (large-scale language models) модульность будет играть ключевую роль. Это связано с тем, что разбивая нейронные сети на независимые компоненты, можно создавать более устойчивые модели, которые устраняют текущие ограничения и могут использоваться в различных архитектурах.

Таксономия модульных подходов основывается на четырех аспектах обучения моделей:
1. Вычислительная функция: как реализован модуль.
2. Функция маршрутизации: как выбираются активные модули.
3. Функция агрегирования: каким методом выходные данные активных модулей складываются вместе.
4. Настройка тренировки: как обучаются модули.

#tutorial #transfer_learning #adapters

@deep_learning_nlp_ru
👍7