用于与古腾堡项目交互的库
项目描述
概述
此包包含各种脚本来简化与古腾堡项目的公共领域文本集工作。
此包提供以下功能:
从古腾堡项目下载文本。
清理文本:移除所有杂质,只留下文本。
使文本的元数据易于访问。
该软件包已在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_USER
和GUTENBERG_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_etexts
或get_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 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | b5703b6348bce8b63eb044044ea0877da79915e8c263c2758a51d6595a6189fc |
|
MD5 | 23c371156dee994840afcd0a29c0600c |
|
BLAKE2b-256 | da732d2e1b34d50b9d6023d7ee8b643ed325e0e447d5f07460c93ff370643d41 |
Gutenberg-0.8.2-py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 6b4833c372013ba2600906ccc0c5623d23df0ffc5fdea6dfdb28948272be032d |
|
MD5 | 1c29b8ce0b50fcd7a5e5010e5fd9ae56 |
|
BLAKE2b-256 | 59632a763e65eeff6ced347a19fb7511e38b569fb5de1fff644ffc206bc34064 |