Как работает FastText и где ее применять |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2020-03-12 16:54 FastText — это библиотека, содержащая предобученные готовые векторные представления слов (читать, что это такое) и классификатор, то есть алгоритм машинного обучения разбивающий слова на классы. FastText разработала команда исследователей из Facebook AI Research, в составе которых был и создатель Word2vec Томаш Миколов (к тому времени перешедший из Google в Facebook). Для получения векторного представления слов одновременно используются модели skipgram и CBOW (Continuous Bag-of-Words). Как работают эти модели можно прочитать в нашем материале о word2vec. Так что же отличает FastText? Более быстрая работа по сравнению с другими пакетами и моделями. Для модели векторных представлений слов используется skip-gram с негативным сэмплированием. Негативное сэмплирование — это способ создать для обучения векторной модели отрицательные примеры, то есть показать ей пары слов, которые не являются соседями по контексту. Для каждого положительного примера (когда слова в тексте стоят рядом, например, «пушистый котик») мы подбираем несколько отрицательных («пушистый утюг», «пушистый радиосигнал», «пушистое бегство»). Всего подбирается от 3 до 20 случайных слов. Такой случайный подбор нескольких примеров не требует много компьютерного времени и позволяет ускорить работу FastText. Skip-gram игнорирует структуру слова, но в некоторых языках есть составные слова, как, например, в немецком. Поэтому к основной модели была добавлена subword-модель. Subword-модель — это представление слова через цепочки символов (n-граммы) с n от 3 до 6 символов от начала до конца слова плюс само слово целиком. Например слово замок с n = 3 будет представлено n-граммами <за, зам, амо, мок, ок > и последовательностью <замок>. Таким образом, для модели есть разница между последовательностью <зам> в слове зам — и n-граммой зам из слова замок. Такой подход позволяет работать и с теми словами, которые модель ранее не встречала. Признаки, полученные при помощи разбиения на n-граммы, имеют огромную размерность (т.е. для текста получается огромная тяжелая таблица). Это может замедлить работу обучаемой на этих признаках модели. Для фиксирования размерности признаков применяется хэширование признаков (специальная процедура, которая позволяет кодировать объекты разных размеров с помощью символьных цепочек одинаковой длины). Признаки получают хэш-индексы, что помогает считывать их быстрее. В основе классификатора лежит модель линейной классификации, по архитектуре схожая с моделью CBOW. Чем больше количество классов, тем больше время работы линейной модели. Для оптимизации классификатора используется иерархический софтмакс основанный на алгоритме кодирования Хаффмана. Дерево классов состоит из веток, где в самом верху наиболее встречающейся класс, а его дети — связанные менее встречающееся классы. Например, у класса «Биология» будут дети узлы классов «Животные» и «Растения» и т.д. Вероятности классов определяется для каждого узла от первого узла-родителя до последнего узла-ребенка. Таким образом, у дочернего узла вероятность всегда меньше, чем у его узла-родителя. Как можно применить библиотеку в практической задаче, рассмотрим ниже. Как применить FastText в задачах NLP Скачать предобученные векторные представления слов для русского языка можно по ссылке в конце статьи. Там же список всех доступных языков — сейчас их 157. То есть мы берем уже готовые векторы слов и используем их, чтобы представить слова из нашего корпуса. Может оказаться, что каких-то слов не будет в предобученных векторах FastText, так как обучение проходило на определенном корпусе. Однако мы уже знаем, что FastText обучается не только на словах, но и на символьных последовательностях. Поэтому модель может порождать адекватные вектора и для слов, которые не встречала. По умолчанию FastText использует вектора слов размерностью 300. Но при желании размерность можно изменить с помощью утилит FastText. Официально FastText можно установить или на Linux или Mac OS. Существует и неофициальная сборка для Windows. Также, FastText-модели есть внутри некоторых библиотек для Python, работающих вне зависимости от операционной системы. И конечно, модель запускается в Google Colab. Самый простой способ попробовать FastText Попробовать просчитать векторное представление FastText можно, используя пакет gensim в питон. Там есть модель FastText. Импортируется модель так:
Перед тем как подать модели ваш корпус, не забудьте сделать предобработку текста. Сначала текст очищается от всех символов, кроме букв, приводится в нижний регистр, делается стемминг или лемматизация. В модель текст подается токенизированным (разбитым на слова). После этого можем начинать строить модель. У модели есть гиперпараметры. Вот описание некоторых из них:
Ксения Михайлова Источники
Источник: m.vk.com Комментарии: |
|