与古登堡项目接口的库
Gutenberg的Python项目详细描述
概述
此包包含各种脚本,使使用公共域文本的Project Gutenberg主体更容易。
此软件包提供的功能包括:
- 从古登堡计划下载文本。
- 清理文本:移除所有积垢,只留下文本。
- 使有关文本的元数据易于访问。
这个包已经用python 2.7和3.5+进行了测试。
这个包的HTTP接口也存在。 Try it out!
安装
这个项目在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
Python3
此包依赖于BSD-DB。bsddb模块已从python中移除 从2.7版开始的标准库。这意味着如果你想用古腾堡 在python 3上,需要手动安装bsd-db。
Linux
在Linux上,通常可以使用发行版的软件包安装BSD-DB 经理。例如,在ubuntu上,可以使用apt get:
sudo apt-get install libdb++-dev exportBERKELEYDB_DIR=/usr pip install .
窗口
在windows上,从 pythonlibs。
例如,如果在64位版本的Windows上安装了Python3.5,则
应该下载bsddb3‑6.2.1‑cp35‑cp35m‑win_amd64.whl
。
下载控制盘后,安装它,您就可以开始了:
pip install bsddb3‑6.2.1‑cp35‑cp35m‑win_amd64.whl pip install .
阿帕奇Jena Fuseki
作为bsd-db后端的替代,这个包还可以使用Apache Jena Fuseki
对于元数据存储。apache jena fuseki后端由
将GUTENBERG_FUSEKI_URL
环境变量设置为http
Fuseki正在侦听的终结点。如果fuseki服务器具有http basic
启用身份验证后,可以通过
GUTENBERG_FUSEKI_USER
和GUTENBERG_FUSEKI_PASSWORD
环境
变量。
对于本地开发,fuseki服务器可以通过docker运行:
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 exportGUTENBERG_FUSEKI_URL=http://localhost:3030/ds exportGUTENBERG_FUSEKI_USER=admin exportGUTENBERG_FUSEKI_PASSWORD=some-password
用法
下载文本
fromgutenberg.acquireimportload_etextfromgutenberg.cleanupimportstrip_headerstext=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
查找元数据
可以查询一堆电子书的元数据:
fromgutenberg.queryimportget_etextsfromgutenberg.queryimportget_metadataprint(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, ...])
您可以通过拨打电话获得可以查询的元数据的完整列表:
fromgutenberg.queryimportlist_supported_metadatasprint(list_supported_metadatas())# prints (u'author', u'formaturi', u'language', ...)
在使用gutenberg.query
函数之前,必须填充
本地元数据缓存。这个一次性的过程需要很长时间才能完成
(在我的机器上18小时)但是一旦完成,任何随后的呼叫
get_etexts
或get_metadata
将非常快。如果未能填充
缓存,调用将引发异常。
要填充缓存:
fromgutenberg.acquireimportget_metadata_cachecache=get_metadata_cache()cache.populate()
如果您需要对缓存进行更细粒度的控制(例如,缓存的存储位置或
使用哪个后端),可以使用set_metadata_cache
函数来切换
在填充缓存之前,先将其从后端取出。例如,使用
sqlite缓存后端而不是默认的sleepycat ba查找并存储
在自定义位置缓存,您可以执行以下操作:
fromgutenberg.acquireimportset_metadata_cachefromgutenberg.acquire.metadataimportSqliteMetadataCachecache=SqliteMetadataCache('/my/custom/location/cache.sqlite')cache.populate()set_metadata_cache(cache)
限制
这个项目故意不包含任何自然语言处理 功能。使用和处理文本是 客户机;这个库只专注于提供一个简单易用的 与古腾堡语料库项目中的作品的接口。任何语言 处理可以很容易地在客户端完成,例如使用TextBlob库。