Литвек - электронная библиотека >> Таня Шлюссер и др. >> Python и др. >> Автостопом по Python >> страница 93
class='book'> 114 Алгоритм Punkt tokenizer создан Тибором Киссом (Tibor Kiss) и Яном Странком (Jan Strunk) в 2006 году (http://bit.ly/kiss-strunk-paper). Представляет собой не зависящий от языка способ определять границы предложения, например конструкция Mrs. Smith and Johann S. Bach listened to Vivaldi будет корректно определена как одно предложение. Алгоритм необходимо обучить на большом наборе данных, но алгоритм для английского языка, используемый по умолчанию, уже обучен.

(обратно)

115

Эти шаги сработали для нас: для начала используйте команду brew install opencv или brew install opencv3 — with-python3. Далее следуйте инструкциям (вроде связывания с NumPy). Наконец, добавьте каталог, содержащий общий файл объекта OpenCV (например, /usr/local/Cellar/opencv3/3.1.0_3/lib/python3.4/site-packages/) к вашему пути; или введите команду add2virtualenvironment (http://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html#add2virtualenv), установленную вместе с библиотекой virtualenvwrapper, если собираетесь использовать библиотеку только в виртуальной среде.

(обратно)

116

Идея реляционных баз данных предложена в 1970 году Эдгаром Ф. Коддом (Edgar F. Codd), работником компании IBM. Он написал статью «A Relational Model of Data for Large Share Data Banks» (http://bit.ly/relational-model-data), которой не интересовались до 1977-го, пока Ларри Эллисон (Larry Ellison) не создал компанию (она в итоге стала компанией Oracle), взявшую за основу эту технологию. Другие идеи-конкуренты вроде хранилища, работающие по принципу «ключ-значение», и иерархические модели баз данных игнорировались после успеха реляционных баз данных. Лишь недавно движение not only SQL (NoSQL) возродило идею использовать нереляционные хранилища для кластерных вычислений.

(обратно)

117

В Python2 это ConfigParser; обратитесь к документации для configparser (https://docs.python.org/3/library/configparser.html#supported-ini-file-structure), чтобы увидеть точный диалект, с которым работает анализатор.

(обратно)

118

Библиотека dbm хранит пары ключ-значение в хэш-таблице, находящейся на диске. Точный механизм ее работы зависит от ее бэкенда — gdbm, ndbm или dumb («глупый»). «Глупый» бэкенд реализован в Python и хорошо задокументирован. Про два других вы можете прочитать в руководстве к gdbm (http://www.gnu.org.ua/software/gdbm/manual//gdbm.html). Для ndbm существует верхняя граница для сохраняемых значений. При открытии файла для записи он блокируется, если (только для gdbm) вы не открываете файл базы данных в режиме ru или wu, и даже тогда обновления могут быть невидимы для других соединений.

(обратно)

119

Несмотря на то что язык структурированных запросов (Structured Query Language, SQL) является стандартом ISO (http://bit.ly/sql-iso-standard), поставщики баз данных сами выбирают, насколько полно его реализовывать, а также могут добавить собственную функциональность. Это означает, что библиотека Python, которая служит драйвером базы данных, должна понимать диалект SQL выбранной вами базы данных.

(обратно)

120

Эти шаблоны определены в книге Мартина Фаулера (Martin Fowler) Patterns of Enterprise Application Architecture (http://www.martinfowler.com/books/eaa.html). Чтобы подробнее узнать о том, из чего состоят ORM проектов Python, рекомендуем прочесть раздел «SQLAlchemy» книги Architecture of Open Source Applications (http://www.aosabook.org/en/sqlalchemy.html), а также взглянуть на список ссылок, связанных с ORM для Python, предоставленный FullStack Python: https://www.fullstackpython.com/object-relational-mappers-orms.html.

(обратно)

121

Метаклассы для Python хорошо объясняются на Stack Overflow.

(обратно)

122

Django Girls (https://djangogirls.org/) — благотворительная организация, в которую входят отличные программисты. Предоставляет возможность бесплатного обучения Django в среде, дружелюбной для женщин всего мира.

(обратно)

123

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

(обратно)