-
Notifications
You must be signed in to change notification settings - Fork 2
Python библиотеки для работы с текстом
Пакет библиотек и программ для символьной и статистической обработки естественного языка, написанных на Python. Содержит графические представления и примеры данных. Поддерживает работу с множеством языков, в том числе, русским.
Плюсы:
- Наиболее известная и многофункциональная библиотека для NLP;
- Большое количество сторонних расширений;
- Быстрая токенизация предложений;
- Поддерживается множество языков.
Минусы
- Медленная;
- Сложная в изучении и использовании;
- Работает со строками;
- Не использует нейронные сети;
- Нет встроенных векторов слов.
Библиотека scikit-learn предоставляет реализацию целого ряда алгоритмов для обучения с учителем и обучения без учителя через интерфейс для Python. Построена поверх SciPy. Ориентирована в первую очередь на моделирование данных, имеет достаточно функций, чтобы использоваться для NLP в связке с другими библиотеками.
Плюсы:
- Большое количество алгоритмов для построения моделей;
- Содержит функции для работы с Bag-of-Words моделью;
- Хорошая документация.
Минусы
- Плохой препроцессинг, что вынуждает использовать ее в связке с другой библиотекой (например, NLTK);
- Не использует нейронные сети для препроцессинга текста.
Python библиотека для моделирования, тематического моделирования документов и извлечения подобия для больших корпусов. В gensim реализованы популярные NLP алгоритмы, например, word2vec. Большинство реализаций могут использовать несколько ядер.
Плюсы:
- Работает с большими датасетами;
- Поддерживает глубокое обучение;
- word2vec, tf-idf vectorization, document2vec.
Минусы
- Заточена под модели без учителя;
- Не содержит достаточного функционала, необходимого для NLP, что вынуждает использовать ее вместе с другими библиотеками.
Mystem - это свободно распространяемый морфологический анализатор для русского языка с закрытым исходным кодом. My-stem значит my stemmer, стемминг -- это разбиение формы на основу и флексию. На самом деле Mystem может гораздо больше: устанавливать словарную форму слова, определять часть речи и грамматическую форму слова. В последних версиях Mystem умеет и выбирать из нескольких возможных грамматических разборов один, наиболее верный.
Плюсы:
- хорошее качество разбора
- по умолчанию разрешается частичная омонимия (внутри части речи остается)
- при разборе учитывается контекст
- совместим с разметкой НКРЯ
Минусы:
- медленный
- analyze возвращает неудобный json
Может делать то же, что и pymystem3, и даже больше: изменять слова в нужную форму (спрягать и склонять). При этом pymorphy2 справляется и с незнакомыми словами. Он умеет:
- Приводить слово к нормальной форме (например, “люди -> человек”, или “гулял -> гулять”).
- Ставить слово в нужную форму. Например, ставить слово во множественное число, менять падеж слова и т.д.
- Возвращать грамматическую информацию о слове (число, род, падеж, часть речи и т.д.)
Плюсы:
- умеет составлять разборы, находить лемму, склонять и спрягать
- генерирует гипотезы для незнакомых слов
- написан полностью на питоне и быстрее, чем Mystem (и есть ускоренная версия с вставками на c++)
- может работать с украинским языком (но словари нужно отдельно устанавливать)
Минусы:
- качество хуже, чем у Mystem
- работает только на уровне отдельных слов (и естественно, не учитывает контекст)
Небольшой хак Pymorphy и так работает очень быстро, но можно еще быстрее, если мы будем сохранять разборы для очень популярных слов
-
Использование библиотек Mystem, Pymorphy, NLTK: https://github.com/hse-ling-python/seminars/blob/master/morphology/morphology_1.ipynb
-
Использование NLTK: https://clck.ru/RTMKB
2.https://github.com/hse-ling-python/seminars/blob/master/morphology/morphology_1.ipynb