Введение в предобработку текста

Глубокое обучение для работы с текстом на PyTorch

Shubham Jain

Data Scientist

Что мы изучим

  • Классификация текста
  • Генерация текста
  • Кодирование
  • Модели глубокого обучения для текста
  • Архитектура трансформера
  • Защита моделей

Примеры применения:

  • Анализ тональности
  • Суммаризация текста
  • Машинный перевод

Анализ тональности

Глубокое обучение для работы с текстом на PyTorch

Что нужно знать заранее

Предварительный курс: Intermediate Deep Learning with PyTorch

  • Модели глубокого обучения с PyTorch
  • Циклы обучения и оценки
  • Свёрточные нейронные сети (CNN) и рекуррентные нейронные сети (RNN)
Глубокое обучение для работы с текстом на PyTorch

Конвейер обработки текста

 

 

Конвейер обработки PyTorch

Глубокое обучение для работы с текстом на PyTorch

Конвейер обработки текста

 

 

Конвейер обработки PyTorch

 

  • Очистка и подготовка текста
Глубокое обучение для работы с текстом на PyTorch

PyTorch и NLTK

Логотип PyTorch

Логотип NLTK

  • Natural language toolkit
    • Преобразование исходного текста в обработанный
Глубокое обучение для работы с текстом на PyTorch

Методы предобработки

  • Токенизация
  • Удаление стоп-слов
  • Стемминг
  • Удаление редких слов
Глубокое обучение для работы с текстом на PyTorch

Токенизация

  • Из текста извлекаются токены — слова
  • Токенизация с помощью torchtext
from torchtext.data.utils import get_tokenizer

tokenizer = get_tokenizer("basic_english")
tokens = tokenizer("I am reading a book now. I love to read books!") print(tokens)
["I", "am", "reading", "a", "book", "now", ".", "I", "love", "to", "read", 
"books", "!"]
Глубокое обучение для работы с текстом на PyTorch

Удаление стоп-слов

  • Удаление частых слов, не несущих смысла
  • Стоп-слова: «a», «the», «and», «or» и другие
import nltk
nltk.download('stopwords')
from nltk.corpus import stopwords

stop_words = set(stopwords.words('english'))
tokens = ["I", "am", "reading", "a", "book", "now", ".", "I", "love", "to", "read", "books", "!"] filtered_tokens = [token for token in tokens if token.lower() not in stop_words]
print(filtered_tokens)
["reading", "book", ".", "love", "read", "books", "!"]
Глубокое обучение для работы с текстом на PyTorch

Стемминг

  • Приведение слов к базовой форме
  • Например: «running», «runs», «ran» → run
import nltk
from nltk.stem import PorterStemmer

stemmer = PorterStemmer()
filtered_tokens = ["reading", "book", ".", "love", "read", "books", "!"]
stemmed_tokens = [stemmer.stem(token) for token in filtered_tokens]
print(stemmed_tokens)
["read", "book", ".", "love", "read", "book", "!"]
Глубокое обучение для работы с текстом на PyTorch

Удаление редких слов

  • Удаление редко встречающихся слов, не несущих ценности
from nltk.probability import FreqDist
stemmed_tokens= ["read", "book", ".", "love", "read", "book", "!"]  
freq_dist = FreqDist(stemmed_tokens)

threshold = 2
common_tokens = [token for token in stemmed_tokens if freq_dist[token] > threshold] print(common_tokens)
["read", "book", "read", "book"]
Глубокое обучение для работы с текстом на PyTorch

Методы предобработки

Токенизация, удаление стоп-слов, стемминг и удаление редких слов

  • Сокращение числа признаков
  • Более чистые и репрезентативные наборы данных
  • Существуют и другие методы
Глубокое обучение для работы с текстом на PyTorch

Давайте потренируемся!

Глубокое обучение для работы с текстом на PyTorch

Preparing Video For Download...