Извлечение признаков
Зачем и как извлекать признаки из текста
Дано несколько текстов. Преобразуйте их в бинарные вектора.
Казнить нельзя, помиловать.
Казнить, нельзя помиловать.
Нельзя не помиловать.
Обязательно освободить.
При токенизации текстов был построен следующий словарь: казнить не нельзя обязательно освободить помиловать.
Ответ (вектора для приведённых выше текстов) запишите в следующем формате:
Одна строка соответствует одному тексту.
Значения признаков следует разделять пробелами
Порядок значений признаков должен соответствовать порядку слов в словаре (приведён выше).
Пример ответа для первых двух текстов:
1 0 1 0 0 1 1 0 1 0 0 1
Многие задачи решаются классификаторами, основанными на машинном обучении.
Такие классификаторы принимают на вход объекты, представленные в определённом виде:
вектора или матрицы (тензоры)
графы (деревья)
Зачем извлекать признаки?
не нужна разметка — можно использовать больше данных
одни и те же признаки могут подходить для нескольких задач
можно выделать признаки без машинного обучения
Методы извлечения признаков
Двоичный вектор, описывающий встречаемость слов в документе
Вектор вещественных чисел, двоичный вектор с учётом частотности
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-грамма
"Днём мама мыла раму. Вечером мы пошли гулять."
Символьные 3-граммы:
днё
,нём
,ём_
,м_м
,_ма
,мам
Словные 2-граммы:
день мама
,мама мыть
,мыть рама
Применение
Вместе с TF-IDF
В дистрибутивной семантике, FastText word embeddings
Преимущества:
простота
работа с флективными зыками без полноценной морфологии и POS-теггинга
более специфичные признаки, чем отдельные слова
Недостатки
высокая размерность и разреженность
близкие по смыслу слова ("кружка" и "чашка") кодируются не зависящими друг от друга элементами вектора -> теряется обобщение
рамерность вектора ведёт к переобучению на небольших обучающих выборках
Вектора можно сжать!
Матричные разложения и тематическое моделирование (SVD, pLSA, LDA, ARTM)
Предиктивные дистрибутивно-семантические модели (Word2Vec, FastText)
Предиктивные модели текста (language model - BERT, ELMo, OpenAI Transformer)
Преимущества:
нет необходимости в размеченной выборке
state-of-art качество для некоторых задач
позволяет учитывать совместную встречаемость слов и отношения их смыслов
multitask learning — настройка представлений с учётом прикладных задач
Недостатки:
намного дороже в вычислениях
требуются гигантские массивы текстов для обучения
для некоторых задач нет существенного преимущества перед более простым частотным векторным представлением
сложность управления процессом обучения
Скалярное произведение — оценка сходства двух векторов:
Однако текст сложно закодировать вектором, ничего не потеряв!
Можно определить операцию скалярного поизведения так, чтобы она работала на графах
случайные обходы различной длины
обучаемые ядра (tree recursive neural network)
Когда ядро определено, можно применять простые классификаторы — Support Vector Machine, Kernel Nearest Neighbor и т.п.
Преимущества:
нет необходимости в размеченной выборке
state-of-art качество для некоторых задач
позволяет учитывать очень сложные отношения слов
позволяет абстрагироваться от порядка слов
Недостатки:
дорого в вычислениях
зависимость от ядра
Last updated
Was this helpful?