Выбрать главу

>>> import nltk

>>> nltk.download('stopwords', download_dir='/usr/local/share/nltk_data')

[nltk_data] Downloading package stopwords to /usr/local/share/nltk_data…

[nltk_data] Unzipping corpora/stopwords.zip.

True

Если вы не знаете название необходимого вам корпуса, можете запустить интерактивный загрузчик из интерпретатора Python, вызвав метод nltk.download() без передачи первого аргумента:

>>> import nltk

>>> nltk.download(download_dir='/usr/local/share/nltk_data')

Далее можно загрузить самую свежую версию набора данных и запустить ее в обработку. В этом фрагменте кода мы загружаем сохраненную копию «Дзена Питона»:

Корпуса загружаются медленно, поэтому нам нужно сделать это для того, чтобы действительно загрузить корпус stopwords.

Токенизатор требует наличия обученной модели — Punkt tokenizer (используемый по умолчанию) поставляется с моделью, обученной для английского языка (также выбран по умолчанию).

Биграмма — это пара соседних слов. Мы проходим по биграммам и считаем, сколько раз они встречаются.

Ключом для функции sorted() является количество элементов, они отсортированы в обратном порядке.

Конструкция '{:>25}' выравнивает справа строку с общей длиной, равной 25 символам.

Наиболее часто встречающейся биграммой «Дзена Питона» является фраза better than («лучше, чем»).

В этот раз для того, чтобы избежать большого количества слов the и is, мы удалим stopwords.

В версиях Python 3.1 и выше для подсчета можно использовать метод collections.Counter.

В этой библиотеке еще много интересного — выделите выходные и исследуйте ее!

SyntaxNet

Библиотека SyntaxNet от Google, созданная на основе TensorFlow, предоставляет обученный анализатор для английского языка (по имени Parsey McParseface) и фреймворк для сборки других моделей, даже для других языков, если у вас будут под рукой соответствующие данные. В настоящий момент библиотека доступна только для Python 2.7; подробные инстуркции по ее загрузке и использованию вы можете найти на странице https://github.com/tensorflow/models/tree/master/syntaxnet.

Работа с изображениями

Тремя наиболее популярными библиотеками для обработки изображений и выполнения действий с ними в Python являются Pillow (дружественная параллельная версия библиотеки Python Imaging Library (PIL), которая подходит для преобразования форматов и простой обработки изображений), cv2 (привязка к Python для библиотеки Open-Source Computer Vision (OpenCV), которую можно использовать для определения лиц в реальном времени, а также для реализации других продвинутых алгоритмов) и более новая Scikit-Image (предоставляет возможности по простой обработке изображений, а также примитивы вроде пятен и фигур и функциональность для обнаружения границ). В следующих разделах приведена более подробная информация о каждой из них.

Pillow

Python Imaging Library (PIL) (http://www.pythonware.com/products/pil/) — одна из основных библиотек для выполнения различных действий с изображениями в Python. Последняя ее версия выпущена в 2009 году, она не была портирована на Python 3. К счастью, активно разрабатывается параллельная версия, которая называется Pillow (http://python-pillow.github.io/) (ее проще устанавливать, она работает во всех операционных системах и поддерживает Python 3).

Перед установкой Pillow вам нужно установить ее зависимости. Более подробные инструкции для своей платформы вы можете найти по адресу https://pillow.readthedocs.org/en/3.0.0/installation.html (после этого все выглядит довольно понятно):

$ pip install Pillow

Рассмотрим пример использования Pillow (для команды import from применяется имя PIL, а не Pillow):

from PIL import Image, ImageFilter

# Считываем изображение

im = Image.open('image.jpg')

# Показываем изображение

im.show()

# Применяем фильтр к изображению

im_sharp = im.filter(ImageFilter.SHARPEN)

# Сохраняем отфильтрованное изображение в новый файл

im_sharp.save('image_sharpened.jpg', 'JPEG')

# Разбиваем изображение на соответствующие bands (то есть на красный, зеленый

# и синий для RGB)

r,g,b = im_sharp.split()