Skip to content

Python библиотеки для работы с текстом

marilisok edited this page Oct 18, 2020 · 1 revision

NLTK (Natural Language ToolKit)

Пакет библиотек и программ для символьной и статистической обработки естественного языка, написанных на Python. Содержит графические представления и примеры данных. Поддерживает работу с множеством языков, в том числе, русским.

Плюсы:

  • Наиболее известная и многофункциональная библиотека для NLP;
  • Большое количество сторонних расширений;
  • Быстрая токенизация предложений;
  • Поддерживается множество языков.

Минусы

  • Медленная;
  • Сложная в изучении и использовании;
  • Работает со строками;
  • Не использует нейронные сети;
  • Нет встроенных векторов слов.

scikit-learn

Библиотека scikit-learn предоставляет реализацию целого ряда алгоритмов для обучения с учителем и обучения без учителя через интерфейс для Python. Построена поверх SciPy. Ориентирована в первую очередь на моделирование данных, имеет достаточно функций, чтобы использоваться для NLP в связке с другими библиотеками.

Плюсы:

  • Большое количество алгоритмов для построения моделей;
  • Содержит функции для работы с Bag-of-Words моделью;
  • Хорошая документация.

Минусы

  • Плохой препроцессинг, что вынуждает использовать ее в связке с другой библиотекой (например, NLTK);
  • Не использует нейронные сети для препроцессинга текста.

gensim

Python библиотека для моделирования, тематического моделирования документов и извлечения подобия для больших корпусов. В gensim реализованы популярные NLP алгоритмы, например, word2vec. Большинство реализаций могут использовать несколько ядер.

Плюсы:

  • Работает с большими датасетами;
  • Поддерживает глубокое обучение;
  • word2vec, tf-idf vectorization, document2vec.

Минусы

  • Заточена под модели без учителя;
  • Не содержит достаточного функционала, необходимого для NLP, что вынуждает использовать ее вместе с другими библиотеками.

Mystem

Mystem - это свободно распространяемый морфологический анализатор для русского языка с закрытым исходным кодом. My-stem значит my stemmer, стемминг -- это разбиение формы на основу и флексию. На самом деле Mystem может гораздо больше: устанавливать словарную форму слова, определять часть речи и грамматическую форму слова. В последних версиях Mystem умеет и выбирать из нескольких возможных грамматических разборов один, наиболее верный.

Плюсы:

  • хорошее качество разбора
  • по умолчанию разрешается частичная омонимия (внутри части речи остается)
  • при разборе учитывается контекст
  • совместим с разметкой НКРЯ

Минусы:

  • медленный
  • analyze возвращает неудобный json

Pymorphy

Может делать то же, что и pymystem3, и даже больше: изменять слова в нужную форму (спрягать и склонять). При этом pymorphy2 справляется и с незнакомыми словами. Он умеет:

  1. Приводить слово к нормальной форме (например, “люди -> человек”, или “гулял -> гулять”).
  2. Ставить слово в нужную форму. Например, ставить слово во множественное число, менять падеж слова и т.д.
  3. Возвращать грамматическую информацию о слове (число, род, падеж, часть речи и т.д.)

Плюсы:

  • умеет составлять разборы, находить лемму, склонять и спрягать
  • генерирует гипотезы для незнакомых слов
  • написан полностью на питоне и быстрее, чем Mystem (и есть ускоренная версия с вставками на c++)
  • может работать с украинским языком (но словари нужно отдельно устанавливать)

Минусы:

  • качество хуже, чем у Mystem
  • работает только на уровне отдельных слов (и естественно, не учитывает контекст)

Небольшой хак Pymorphy и так работает очень быстро, но можно еще быстрее, если мы будем сохранять разборы для очень популярных слов

Примеры использования библиотек приведены в следующих ссылках:

  1. Использование библиотек Mystem, Pymorphy, NLTK: https://github.com/hse-ling-python/seminars/blob/master/morphology/morphology_1.ipynb

  2. Использование NLTK: https://clck.ru/RTMKB

Ссылки на источники

1.https://clck.ru/RTMKB

2.https://github.com/hse-ling-python/seminars/blob/master/morphology/morphology_1.ipynb

3.https://pymorphy2.readthedocs.io/en/latest/

4.http://www.nltk.org/