跳转到主要内容

用于与古腾堡项目交互的库

项目描述

https://github.com/c-w/gutenberg/workflows/CI/badge.svg https://github.com/c-w/gutenberg/workflows/Daily/badge.svg https://codecov.io/gh/c-w/gutenberg/branch/master/graph/badge.svg https://img.shields.io/pypi/v/gutenberg.svg https://img.shields.io/pypi/pyversions/gutenberg.svg

概述

此包包含各种脚本来简化与古腾堡项目的公共领域文本集工作。

此包提供以下功能:

  • 从古腾堡项目下载文本。

  • 清理文本:移除所有杂质,只留下文本。

  • 使文本的元数据易于访问。

该软件包已在Python 2.7和3.5+上进行了测试。

该软件包还提供了一个HTTP接口。 试一试!

安装

该项目位于PyPI上,因此我建议您使用您喜欢的Python包管理器从那里安装所有内容。

pip install gutenberg

如果您想从源安装或修改该软件包,您需要克隆此存储库

git clone https://github.com/c-w/Gutenberg.git

现在,您可能需要安装软件包的依赖项并运行测试来验证您的检出。

cd Gutenberg

virtualenv --no-site-packages virtualenv
source virtualenv/bin/activate
pip install -r requirements-dev.pip
pip install .

nose2

或者,您也可以通过Docker运行项目

docker build -t gutenberg -f Dockerfile-py3 .

docker run -it -v /some/mount/path:/data gutenberg python

Python 3

此软件包依赖于BSD-DB。自2.7版本以来,bsddb模块已从Python标准库中删除。这意味着如果您想在Python 3上使用gutenberg,您需要手动安装BSD-DB。

如果将BSD-DB运行在您的平台上很困难,请查看gutenbergpy,它只依赖于SQLite或MongoDB。

Linux

在Linux上,您通常可以使用您发行版的包管理器安装BSD-DB。例如,在Ubuntu上,您可以使用apt-get

sudo apt-get install libdb++-dev
export BERKELEYDB_DIR=/usr
pip install .

MacOS

在Mac上,您可以使用homebrew安装BSD-DB

brew install berkeley-db4
pip install .

Windows

在Windows上,最简单的方法是从pythonlibs下载预编译的BSD-DB版本,这对于Python 3.5+来说效果很好。

例如,如果您在64位Windows上安装了Python 3.5,您应该下载bsddb3‑6.2.1‑cp35‑cp35m‑win_amd64.whl

下载轮文件后,安装它,您就可以开始了

pip install bsddb3‑6.2.1‑cp35‑cp35m‑win_amd64.whl
pip install .

许可证冲突

从v6.x版本开始,BSD-DB切换到AGPL3许可证,该许可证比此项目的Apache v2许可证更为严格。这意味着除非您愿意遵守AGPL3许可证的条款,否则您必须安装更早版本的BSD-DB(4.8.30到5.x之间的任何版本都应正常)。如果您愿意在AGPL3(或如果您有BSD-DB的商业许可证)下使用此项目,在尝试安装BSD-DB之前设置以下环境变量

YES_I_HAVE_THE_RIGHT_TO_USE_THIS_BERKELEY_DB_VERSION=1

Apache Jena Fuseki

作为BSD-DB后端的替代方案,此软件包还可以使用Apache Jena Fuseki作为元数据存储。Apache Jena Fuseki后端通过设置GUTENBERG_FUSEKI_URL环境变量到Fuseki监听的HTTP端点来激活。如果Fuseki服务器启用了HTTP基本身份验证,可以通过GUTENBERG_FUSEKI_USERGUTENBERG_FUSEKI_PASSWORD环境变量提供用户名和密码。

对于本地开发,可以通过Docker运行Fuseki服务器

docker run \
    --detach \
    --publish 3030:3030 \
    --env ADMIN_PASSWORD=some-password \
    --volume /some/mount/location:/fuseki \
    stain/jena-fuseki:3.6.0 \
    /jena-fuseki/fuseki-server --loc=/fuseki --update /ds

export GUTENBERG_FUSEKI_URL=http://localhost:3030/ds
export GUTENBERG_FUSEKI_USER=admin
export GUTENBERG_FUSEKI_PASSWORD=some-password

使用方法

下载文本

from gutenberg.acquire import load_etext
from gutenberg.cleanup import strip_headers

text = strip_headers(load_etext(2701)).strip()
print(text)  # prints 'MOBY DICK; OR THE WHALE\n\nBy Herman Melville ...'
python -m gutenberg.acquire.text 2701 moby-raw.txt
python -m gutenberg.cleanup.strip_headers moby-raw.txt moby-clean.txt

查找元数据

可以查询有关电子书的元数据。

from gutenberg.query import get_etexts
from gutenberg.query import get_metadata

print(get_metadata('title', 2701))  # prints frozenset([u'Moby Dick; Or, The Whale'])
print(get_metadata('author', 2701)) # prints frozenset([u'Melville, Hermann'])

print(get_etexts('title', 'Moby Dick; Or, The Whale'))  # prints frozenset([2701, ...])
print(get_etexts('author', 'Melville, Hermann'))        # prints frozenset([2701, ...])

您可以通过调用以下内容获取可以查询的元数据的完整列表

from gutenberg.query import list_supported_metadatas

print(list_supported_metadatas()) # prints (u'author', u'formaturi', u'language', ...)

在您使用任何gutenberg.query函数之前,您必须填充本地元数据缓存。此一次性过程将花费相当长的时间才能完成(在我的机器上需要18小时),但一旦完成,对get_etextsget_metadata的任何后续调用都将非常快。如果您未填充缓存,调用将引发异常。

要填充缓存

from gutenberg.acquire import get_metadata_cache
cache = get_metadata_cache()
cache.populate()

如果您需要更精细地控制缓存(例如存储位置或使用的后端),您可以使用 set_metadata_cache 函数在填充之前切换缓存的后端。例如,要使用 Sqlite 缓存后端而不是默认的 Sleepycat 后端,并将缓存存储在自定义位置,请执行以下操作

from gutenberg.acquire import set_metadata_cache
from gutenberg.acquire.metadata import SqliteMetadataCache

cache = SqliteMetadataCache('/my/custom/location/cache.sqlite')
cache.populate()
set_metadata_cache(cache)

限制

该项目 故意 不包括任何自然语言处理功能。处理文本是客户端的责任;此库仅专注于提供对 Project Gutenberg 语料库中作品的简单易用接口。任何语言处理都可以轻松地在客户端完成,例如使用 TextBlob 库。

项目详情


下载文件

下载适用于您平台的自定义文件。如果您不确定要选择哪个,请了解有关 安装包 的更多信息。

源代码分发

Gutenberg-0.8.2.tar.gz (24.1 kB 查看散列)

上传时间 源代码

构建分发

Gutenberg-0.8.2-py3-none-any.whl (26.5 kB 查看散列)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面