📜
Нейронные сети и обработка текста
  • Содержание курса
  • Введение
    • Естественный язык и текст
    • Особенности обработки естественных языков
    • Лингвистический анализ
    • Извлечение признаков
    • Прикладные задачи обработки текста
  • Векторная модель текста и классификация длинных текстов
    • Векторная модель текста и TF-IDF
    • Создаём нейросеть для работы с текстом
    • Теоретические задачи: Векторная модель текста
    • Семинар: классификация новостных текстов
  • Базовые нейросетевые методы работы с текстами
    • Общий алгоритм работы с текстами с помощью нейросетей
    • Дистрибутивная семантика и векторные представления слов
    • Семинар: рецепты еды и Word2Vec на PyTorch
    • Теоретические вопросы: Дистрибутивная семантика
    • Основные виды нейросетевых моделей для обработки текстов
    • Свёрточные нейросети для обработки текстов
    • Семинар: POS-тэггинг свёрточными нейросетями
    • Теоретические вопросы: Свёрточные нейросети в обработке текстов
  • Языковые модели и генерация текста
    • Untitled
  • Преобразование последовательностей
    • Untitled
  • Transfer learning, адаптация моделей
    • Untitled
  • Финальное соревнование на kaggle и заключение
    • Untitled
Powered by GitBook
On this page
  • Зачем извлекать признаки?
  • Методы извлечения признаков
  • Двоичный вектор
  • Вектор вещественных чисел
  • N-грамма

Was this helpful?

  1. Введение

Извлечение признаков

Зачем и как извлекать признаки из текста

Дано несколько текстов. Преобразуйте их в бинарные вектора.

Казнить нельзя, помиловать.

Казнить, нельзя помиловать.

Нельзя не помиловать.

Обязательно освободить.

При токенизации текстов был построен следующий словарь: казнить не нельзя обязательно освободить помиловать.

Ответ (вектора для приведённых выше текстов) запишите в следующем формате:

  • Одна строка соответствует одному тексту.

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

  • Порядок значений признаков должен соответствовать порядку слов в словаре (приведён выше).

Пример ответа для первых двух текстов:

1 0 1 0 0 1 1 0 1 0 0 1

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

Как Вы думаете, зачем это может быть нужно?

Выпишите все символьные N-граммы для N={2, 3} для слова "язык".

В ответе необходимо указать все n-граммы через пробел, порядок n-грамм не важен. Регистр букв в ответе должен совпадать с регистром букв в исходном слове.

При желании, для выделения N-грамм можно написать несложную программу на Python.

Какие способы векторизации текста могут лучше подойти для задачи классификации сообщений из Twitter?

При использовании N-грамм можно выделять N-граммы сразу нескольких длин (например, 3,4,5-граммы).

Предположение о независимости словоупотреблений - упрощение, которое мы допускаем, когда строим матрицы признаков по методу бинарных векторов или TF-IDF. Оно проявляется в том, что когда мы заполняем значение для некоторого слова (например, полёт), мы никак не меняем значения для других, сильно связанных с ним слов (например, синонимов - переезд, путешествие, поездка и т.п.).

На языке теории вероятностей предположение о независимости можно описать формулами

P(w1∣w2,d)=P(w1∣d)P(w1​∣w2​,d)=P(w1​∣d)P(w_1 | w_2, d) = P(w_1 | d)P(w1​∣w2​,d)=P(w1​∣d) P(w1​∣w2​,d)=P(w1​∣d)P(w1​∣w2​,d)=P(w1​∣d)

P(w1,w2∣d)=P(w1∣d)P(w2∣d)P(w1​,w2​∣d)=P(w1​∣d)P(w2​∣d)P(w_1, w_2 | d) = P(w_1 | d) P(w_2 | d)P(w1​,w2​∣d)=P(w1​∣d)P(w2​∣d)P(w1​,w2​∣d)=P(w1​∣d)P(w2​∣d)P(w1​,w2​∣d)=P(w1​∣d)P(w2​∣d)

где P(w | d)P(w∣d) - вероятность встретить слово w в документе d.

Как Вы думаете, почему это может быть плохо?

Отметьте основные недостатки линейных моделей для классификации текстов, принимающих на вход разреженные вещественные вектора, извлечённые из документов через подсчёт отдельных токенов: бинарные вектора (one-hot) или TF-IDF.

Многие задачи решаются классификаторами, основанными на машинном обучении.

Такие классификаторы принимают на вход объекты, представленные в определённом виде:

  • вектора или матрицы (тензоры)

  • графы (деревья)

Зачем извлекать признаки?

  • не нужна разметка — можно использовать больше данных

  • одни и те же признаки могут подходить для нескольких задач

  • можно выделать признаки без машинного обучения

Методы извлечения признаков

  • Двоичный вектор, описывающий встречаемость слов в документе

  • Вектор вещественных чисел, двоичный вектор с учётом частотности

  • N-граммы символов и токенов, словосочетания

  • Плотные векторные представления слов, предложений и текстов (word/doc embeddings)

  • Ядерные методы (kernel methods) и графовые ядра

Двоичный вектор

"Днём мама мыла раму. Вечером мы пошли гулять."

Слово

Вектор

и

0

мы

1

мама

1

велосипед

0

...

...

рама

1

Преимущества:

  • простота

  • подходит для разных по длине текстов

  • размерность вектора очень большая -> простые линейные модели хорошо работают

Недостатки:

  • значимость (вес) специальных слов такая же, как и частотных общеупотребимых

  • чувствителен к шуму

  • близкие по смыслу слова ("кружка" и "чашка") кодируются не зависящими друг от друга элементами вектора -> теряется обобщение

  • рамерность вектора ведёт к переобучению на небольших обучающих выборках

Вектор вещественных чисел

"Днём мама мыла раму. Вечером мы пошли гулять."

Слово

TF-IDF

и

0

мы

0.01

мама

0.1

велосипед

0

...

...

рама

2

Term Frequency - Inverse Document Frequecy (TF-IDF)

Преимущества:

  • простота

  • хорошо описывает особенности тематики текстов

  • размерность вектора очень большая -> простые линейные модели хорошо работают

  • легко заложить в модель знания о тематике (корректировкой весов)

Недостатки:

  • чувствителен к шуму

  • близкие по смыслу слова ("кружка" и "чашка") кодируются не зависящими друг от друга элементами вектора -> теряется обобщение

  • рамерность вектора ведёт к переобучению на небольших обучающих выборках

N-грамма

N-грамма — объект, состоящий из нескольких подряд идущих базовых элементов

"Днём мама мыла раму. Вечером мы пошли гулять."

  • Символьные 3-граммы: днё, нём, ём_, м_м, _ма, мам

  • Словные 2-граммы: день мама, мама мыть, мыть рама

Применение

  1. Вместе с TF-IDF

  2. В дистрибутивной семантике, FastText word embeddings

Преимущества:

  • простота

  • работа с флективными зыками без полноценной морфологии и POS-теггинга

  • более специфичные признаки, чем отдельные слова

Недостатки

  • высокая размерность и разреженность

  • близкие по смыслу слова ("кружка" и "чашка") кодируются не зависящими друг от друга элементами вектора -> теряется обобщение

  • рамерность вектора ведёт к переобучению на небольших обучающих выборках

Вектора можно сжать!

  • Матричные разложения и тематическое моделирование (SVD, pLSA, LDA, ARTM)

  • Предиктивные дистрибутивно-семантические модели (Word2Vec, FastText)

  • Предиктивные модели текста (language model - BERT, ELMo, OpenAI Transformer)

Преимущества:

  • нет необходимости в размеченной выборке

  • state-of-art качество для некоторых задач

  • позволяет учитывать совместную встречаемость слов и отношения их смыслов

  • multitask learning — настройка представлений с учётом прикладных задач

Недостатки:

  • намного дороже в вычислениях

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

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

  • сложность управления процессом обучения

Скалярное произведение — оценка сходства двух векторов:

<a,b>=∑iNaibi∑iNai2∑iNbi2< a, b > = \frac{\sum^N_i a_i b_i}{\sqrt{\sum^N_i a^2_i} \sqrt{\sum^N_i b^2_i}}<a,b>=∑iN​ai2​​∑iN​bi2​​∑iN​ai​bi​​

Однако текст сложно закодировать вектором, ничего не потеряв!

Можно определить операцию скалярного поизведения так, чтобы она работала на графах

  • случайные обходы различной длины

  • обучаемые ядра (tree recursive neural network)

Когда ядро определено, можно применять простые классификаторы — Support Vector Machine, Kernel Nearest Neighbor и т.п.

Преимущества:

  • нет необходимости в размеченной выборке

  • state-of-art качество для некоторых задач

  • позволяет учитывать очень сложные отношения слов

  • позволяет абстрагироваться от порядка слов

Недостатки:

  • дорого в вычислениях

  • зависимость от ядра

PreviousЛингвистический анализNextПрикладные задачи обработки текста

Last updated 5 years ago

Was this helpful?

Пример матричного разложения