跳转到主要内容

用于GROBID风格TEI-XML的解析和转换

项目描述

grobid_tei_xml:Python解析GROBID风格的TEI-XML结构化文档的库

这是一个简单的Python库,用于解析由GROBID返回的TEI-XML结构化文档,GROBID是一个用于从研究文章PDF中提取文本和书目元数据的机器学习工具。

TEI-XML是一种标准格式,存在其他库用于解析整个文档和与注释文本一起工作。此库专门用于从文档中提取“标题”元数据(例如,标题、作者、期刊名称、卷、期)、以平坦文本形式的内容(全文和正文作为单个字符串,用于搜索索引等),以及结构化引用元数据。

快速入门

grobid_tei_xml适用于Python 3,仅使用标准库。它不与GROBID HTTP API通信或在其上读取文件,但请参阅以下示例。库已打包在pypi.org

使用pip安装,通常在virtualenv

pip install grobid_tei_xml

主要入口点是函数process_document_xml(xml_text)process_citation_xml(xml_text)(或process_citation_list_xml(xml_text)用于多个引用),它们返回Python数据类对象。辅助方法.to_dict()对于,例如,将对象序列化为JSON非常有用。

使用示例

从磁盘读取XML文件,解析它,并以JSON格式打印到标准输出

import json
import grobid_tei_xml

xml_path = "./tests/files/small.xml"

with open(xml_path, 'r') as xml_file:
    doc = grobid_tei_xml.parse_document_xml(xml_file.read())

print(json.dumps(doc.to_dict(), indent=2))

使用 requests 从网络下载PDF,通过HTTP API提交给GROBID,使用 grobid_tei_xml 解析TEI-XML响应,并打印一些元数据字段

import requests
import grobid_tei_xml

pdf_resp = requests.get("https://arxiv.org/pdf/1802.01168v3")
pdf_resp.raise_for_status()

grobid_resp = requests.post(
    "https://cloud.science-miner.com/grobid/api/processFulltextDocument",
    files={
        'input': pdf_resp.content,
        'consolidate_Citations': 0,
        'includeRawCitations': 1,
    },
    timeout=60.0,
)
grobid_resp.raise_for_status()

doc = grobid_tei_xml.parse_document_xml(grobid_resp.text)

print("title: " + doc.header.title)
print("authors: " + ", ".join([a.full_name for a in doc.header.authors]))
print("doi: " + str(doc.header.doi))
print("citation count: " + str(len(doc.citations)))
print("abstract: " + doc.abstract)

使用 requests 将“原始”引用字符串提交给GROBID进行提取,使用 grobid_tei_xml 解析响应,并将结构化输出打印到标准输出

import requests
import grobid_tei_xml

raw_citation = "Kvenvolden K.A. and Field M.E. 1981. Thermogenic hydrocarbons in unconsolidated sediment of Eel River Basin, offshore northern California. AAPG Bulletin 65:1642-1646"

grobid_resp = requests.post(
    "https://cloud.science-miner.com/grobid/api/processCitation",
    data={
        'citations': raw_citation,
        'consolidateCitations': 0,
        'includeRawCitations': 1,
    },
    timeout=10.0,
)
grobid_resp.raise_for_status()

citation = grobid_tei_xml.parse_citation_xml(grobid_resp.text)
print(citation)

参见

grobid_client_python:通过HTTP API向GROBID发送请求的Python客户端和CLI工具。返回TEI-XML;可用于与这个库(grobid_tei_xml)一起使用,将TEI-XML解析为Python对象或JSON。

GROBID文档

s2orc-doc2json:AI2的Python库,包括一个用于从GROBID TEI-XML提取书目元数据和(结构化)全文的类似Python库。具有诸如解析参考文献到参考文献条目等优秀功能。

delb:更灵活/强大的TEI-XML文档接口。对于处理结构化文本(正文、摘要等)来说将是一个更好的工具。

"使用Python解析TEI XML文档"(2019):关于将GROBID TEI-XML文件基本解析为Pandas DataFrame的博客文章。

许可证

本库采用许可MIT许可证。请参阅 LICENSE.txt 以获取副本。

项目详情


下载文件

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

源分布

grobid_tei_xml-0.1.3.tar.gz (11.0 kB 查看散列)

上传时间

构建分布

grobid_tei_xml-0.1.3-py2.py3-none-any.whl (14.5 kB 查看散列)

上传时间 Python 2 Python 3

由以下组织支持

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