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

В результате этой популярности существует множество вариантов инструментов НЛП. Ниже представлена ​​подборка самых популярных библиотек с плюсами и минусами для разных вариантов использования.

SpaCy

SpaCy — популярная библиотека для НЛП по нескольким ключевым причинам. Это одна из самых быстрых библиотек, сравниваемых здесь, во многом благодаря тому, что она была написана на Cython с нуля. Он имеет простой в освоении интерфейс, в котором приоритет отдается одному единственному инструменту с объектно-ориентированным подходом, который можно оптимизировать, предлагая множество инструментов для каждого приложения. С помощью одной строки кода вы можете токенизировать, лемматизировать, маркировать части речи и именованные объекты, а также вставлять в свой текст векторы из предварительно обученных моделей, среди прочих опций. Spacy поставляется со встроенными визуализаторами, которые могут быть невероятно полезны в EDA. Это удобство использования в некоторой степени достигается за счет гибкости по сравнению с NLTK. Я считаю, что SpaCy — это мой инструмент для быстрых конвейеров НЛП и векторизации.

НЛТК

NLTK (сокращение от Natural Language ToolKit) — это, по сути, библиотека для обработки строк, и хотя это кажется простым, вам может понадобиться просмотреть документацию, чтобы открыть для себя все функции. Он имеет множество сторонних расширений и множество подходов к каждой задаче НЛП. NLTK, как правило, более популярен в научных исследованиях и среди команд, которые хотят создать решение с нуля. Я считаю NLTK наиболее полезным для быстрой токенизации или отдельного элемента конвейера, например наиболее распространенных слов в корпусе.

Генсим

Gensim — это библиотека с открытым исходным кодом, предназначенная для обработки больших текстовых коллекций посредством потоковой передачи данных. Это отличает ее от других библиотек, предназначенных для обработки в памяти. Gensim включает в себя несколько популярных алгоритмов НЛП, таких как word2vec, латентный семантический анализ и неотрицательная матричная факторизация. Однако в первую очередь он был разработан для моделирования текста без присмотра. Хотя алгоритмы мощные, им не хватает инструментов для обеспечения полного конвейера NLP, и поэтому их необходимо использовать вместе с другими библиотеками, такими как SpaCy или NLTK. Я считаю, что Gensim очень полезен в неконтролируемых моделях, таких как тематическая кластеризация.

ИскраНЛП

Неудивительно, что SparkNLP предназначен для работы в рамках Apache Spark ML. У этого есть несколько преимуществ по сравнению с другими упомянутыми здесь библиотеками: Spark позволяет векторизовать столбцовые данные в памяти и оптимизировать для TensorFlow, который он использует за кулисами, и позволяет масштабировать модель в любом кластере Spark. Это означает, что Spark NLP может одновременно оптимизировать все выполнение (загрузка данных, NLP, разработка функций, обучение модели, оптимизация гиперпараметров и измерение).

Если вы завидуете скорости и функциональности, но не хотите переносить свой проект на Spark, не бойтесь, API предоставляет полную функциональность Java, Scala и Python. Spark NLP, как и SpaCy, поддерживает полный конвейер NLP и включает несколько дополнительных функций, таких как проверка орфографии и анализ настроений. SparkNLP включает готовую к производству реализацию встраивания BERT среди других предварительно обученных моделей. Я обнаружил, что SparkNLP — лучший вариант для производственных моделей, требующих быстрого выполнения и масштабируемости.

Подводя итог, можно сказать, что SpaCy и SparkNLP являются мощными инструментами НЛП для полного конвейера НЛП и быстрой обработки. NLTK является мощным и может использоваться для простых процессов NLP или в качестве конвейера NLP, но, как правило, имеет более крутую кривую обучения. Gensim отлично подходит для неконтролируемой кластеризации и векторизации NLP.

Я хотел бы услышать в комментариях, какие ваши любимые библиотеки НЛП и как вы их используете.