Flair - это мощная библиотека NLP (обработка естественного языка) с открытым исходным кодом, разработанная Zalando Research. Фреймворк Flair построен непосредственно на PyTorch, который известен как отличный фреймворк для глубокого обучения, в настоящее время он находится в версии 0.4.3. Во время этого всплеска я исследовал как Flair, так и SpaCy, чтобы сравнить их преимущества, плюсы и минусы и оценить, является ли Flair подходящей альтернативой SpaCy.

Flair выпустил следующие предварительно обученные модели для задач НЛП:

  1. Распознавание имени и сущности (NER)
  2. Тегирование частей речи (PoS)
  3. Классификация текста
  4. Обучение пользовательских моделей

В этом исследовании я специально сосредоточился на NER (Named Identity Relationship), который также известен как фрагменты сущностей, а извлечение сущностей классифицирует именованные сущности, которые присутствуют в тексте, по заранее определенным категориям, таким как люди, страны, организации, даты и т. Д. варианты использования NER могут быть:

  • Служба поддержки
  • Например, классификация контента; поставщики новостей
  • Алгоритмы поиска
  • Системы рекомендаций

Внизу этой диаграммы есть предложение, которое является входной последовательностью символов в двунаправленной символьной языковой модели. Он был предварительно обучен на очень больших корпусах непомеченных текстов. Мы получаем для каждого слова контекстное вложение, извлекая первое и последнее состояния символьных ячеек из языковой модели. Затем слово «встраивание» передается в стандартный маркировщик последовательностей BiLSM-CRF.

Flair предоставил две предварительно обученные модели NER, используемая модель идентична - bi-LSTM поверх слоя встраивания слов. Набор данных NER, используемый для обучения каждого классификатора, отличается.

Еще одно впечатляющее замечание о Flair заключается в том, что он превосходит предыдущие лучшие методы в ряде задач НЛП:

Пример установки фрагмента:

!pip3 install flair
from flair.models import SequenceTagger
model = SequenceTagger.load('ner-ontonotes-fast') #.load('ner')
from flair.data import Sentence
sentence = Sentence(document)
model.predict(sentence)
s.to_dict(tag_type='ner')

Что насчет SpaCy ?:

SpaCy также является библиотекой с открытым исходным кодом, которая бесплатна для продвинутого NLP на Python. Он предназначен для производственного использования и помогает создавать приложения, которые обрабатывают и понимают большие объемы текста. Его можно использовать для создания систем извлечения информации или понимания естественного языка или для предварительной обработки текста для глубокого обучения. SpaCy имеет множество функций, таких как токенизация, теги POS, NER, анализ зависимостей, определение границ предложения (SBD) и многое другое.

У SpaCy есть простой классификатор для модели NER. Например; неглубокая нейронная сеть с прямой связью с единственным скрытым слоем, которая стала мощной благодаря некоторой умной разработке функций. Перед тем, как какие-либо входные объекты будут загружены в классификатор, стек взвешенных слоев встраивания цветения объединяет соседние объекты вместе. Это дает каждому слову уникальное представление для каждого контекста, в котором оно находится.

Пример установки фрагмента:

!python3 -m spacy download en_core_web_lg
import spacy
import en_core_web_sm
sp_lg = spacy.load('en_core_web_lg')
{(ent.text.strip(), ent.label_) for ent in sp_lg(document).ents}

Так является ли Flair подходящей альтернативой SpaCy?

SpaCy хорошо документирован и спроектирован, поэтому гораздо больше людей доверят этой библиотеке. Это библиотека с открытым исходным кодом, которая публикуется и обрабатывается по лицензии MIT и разработана для выполнения простых и сложных задач НЛП, таких как токенизация, тегирование части речи, распознавание именованных сущностей, классификация текста, вычисление семантических сходств между текстом, лемматизация. , а также анализ зависимостей и т. д. Он также известен как фреймворк Fastted NLP. Его легко изучить и использовать, потому что он имеет один высоко оптимизированный инструмент для каждой задачи. SpaCy предоставляет встроенные векторы слов. Поддержка активна, разработка продолжается. Однако у библиотеки есть и недостатки. Точность SpaCy слишком ограничена, и SpaCy также не поддерживает многие языки.

Flair, с другой стороны, представляет собой библиотеку с открытым исходным кодом, разработанную для достижения самых современных достижений в NER. Он достаточно модульный, чтобы легко интегрировать все виды эволюции НЛП. Flair поддерживает несколько языков, в отличие от других библиотек, Flair также прост в использовании, как SpaCy. Одним из основных недостатков Flair является то, что он, как известно, работает медленно, однако его можно оптимизировать до точки, когда время вывода можно разделить на 10, что сделает его намного быстрее.

Ниже приводится таблица плюсов и минусов SpaCy и Flair:

Пример - SpaCy vs Flair для анонимности французских юридических дел:

Великие открытия были обнаружены в компании Lefebvre Sarrut, когда они сотрудничали с французской администрацией и Верховным судом Франции в отношении библиотек NER от SpaCy и Flair. Они решили перейти с SpaCy на Flair по многим причинам. Они заявили, что точность SpaCy была слишком ограниченной для их нужд, а Flair работал медленно. Они также сказали, что точность Flair по их данным намного выше, чем у SpaCy, даже после их улучшений в SpaCy - это заняло бы 30 дней только на одном недавнем графическом процессоре.

У SpaCy не было готовой к загрузке модели общего языка, предварительно обученной французскому, хотя такая функция существовала, но не была хорошо документирована. Поэтому использование SpaCy на языках, отличных от английского, может дать плохие результаты с предварительно обученными моделями NER. Flair их действительно удивил, потому что иногда его описывают как библиотеку, не отвечающую требованиям Industrial Performance. Flair - это модульная конструкция, что означает, что вы можете выбрать представление, которое хотите использовать. Они использовали комбинацию моделей, поскольку Заландо поделился многими из них в своей исследовательской статье. Было выполнено сочетание встраиваний FastText и предварительно обученной языковой модели на основе символов (оба обучены на французской Википедии) без тонкой настройки языковой модели на юридических данных.

В целом, вместо 30 дней, полная обработка инвентаризации занимает менее 3 дней. Трехдневная обработка - это то, что они могут выполнять 1 или 2 раза в год (когда модель значительно улучшена, например, из-за более аннотированных данных). SpaCy по-прежнему работает быстрее, но описанные ими оптимизации делают Flair лучшим решением для их случая использования.

Другие альтернативные инструменты:

Есть много других предварительно обученных моделей NER, предоставляемых популярными библиотеками NLP с открытым исходным кодом:

  • НЛТК
  • ВОРОТА
  • Полигот
  • Глубокий Павлов
  • Аллен НЛП
  • Stanford Corenlp

На приведенном ниже графике показаны плюсы и минусы популярных библиотек НЛП:

Общие выводы:

Между Flair и SpaCy действительно зависит от варианта использования, какая библиотека лучше другой. Как уже упоминалось, SpaCy работает быстрее, но оптимизация делает Flair гораздо лучшим решением для определенных случаев использования. SpaCy очень популярен, и документация для этой библиотеки феноменальна. Тем не менее, я думаю, что будущее Flair выглядит светлым.

Блокнот можно найти здесь:

Https://colab.research.google.com/drive/1AiBqV6xMpfHrcjHFWGJLq6wOXo7qruRx

Ресурсы:

Https://research.zalando.com/

Https://spacy.io/usage/spacy-101