Как работает 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. Импортируется модель так:
Перед тем как подать модели ваш корпус, не забудьте сделать предобработку текста. Сначала текст очищается от всех символов, кроме букв, приводится в нижний регистр, делается стемминг или лемматизация. В модель текст подается токенизированным (разбитым на слова). После этого можем начинать строить модель. У модели есть гиперпараметры. Вот описание некоторых из них:
Ксения Михайлова Источники
Телеграм: t.me/ainewsline Источник: m.vk.com Комментарии: |
|