GROBID库文献解析

1. 起因

  • 由于某些原因需要在大量的文献中查找相关内容,手动实在是太慢了,所以选择了GROBID库进行文献批量解析

2. GROBID介绍

  • GROBID是一个机器学习库,用于将PDF等原始文档提取、解析和re-structuring为结构化的XML/TEI编码文档,特别关注技术和科学出版物。
  • 能够提取文献中的标题、文本、图表及参考文献等信息
  • GROBID目前仅支持Linux及macOS;windows系统需要通过docker调用

3. Docker安装

  • 已经安装docker请跳过这一步骤

3.1 Docker介绍[来自GPT]:

  • Docker 是一个开源的应用容器引擎,它允许开发者将应用程序与其环境一起打包(称作容器化),从而在任何支持Docker的环境中部署和运行。这项技术提供了一种简化的方法,可以将复杂的应用程序快速、一致地部署在不同的环境中——不管是在本地开发机器上,还是在外部的测试环境或云平台上。

3.1.1 Docker的主要组件:

  • Docker 引擎:负责创建、运行和管理容器的核心服务。
  • Docker 容器:运行应用程序的轻量级、独立的环境。容器在从图片(Image)实例化时创建,其中包含了运行应用所需的代码、运行库、环境变量和配置文件。
  • Docker 镜像:是一个只读的模板,用于创建容器。镜像包含了运行特定应用所需的所有内容——代码、运行时、库等。
  • Docker Hub:是一个Docker容器镜像的公共仓库,类似于GitHub,可以用来存放、共享和管理镜像。
  • Docker 仓库:存放Docker镜像的地方,可以是公共的也可以是私有的。
  • Dockerfile:是一个文本文件,包含了一系列的指令,用于自动构建一个新的Docker镜像。
  • Docker Compose:是一个工具,允许您使用YAML文件定义多个容器的应用服务,并且通过一个命令来启动和停止这些服务。

3.1.2 Docker的工作原理

Docker 使用容器来隔离和运行应用程序。容器是一种轻量级的虚拟化,它运行在同一个操作系统内核上,但保持应用程序的隔离。容器比传统的虚拟机(VM)更加高效,因为它们共享宿主机的内核,而不需要为每个虚拟机运行一个完整的操作系统。

3.1.3 Docker的优势

  • 快速,一致地交付您的应用程序:Docker可以快速构建、测试并部署代码,因为容器化的应用可以在不同的环境中保持一致。
  • 响应性强的部署和扩展:容器可以几乎即时启动,这使得扩展和自动化部署变得简单快捷。
  • 在同一个硬件上运行更多的工作负载:由于容器共享宿主机的系统核心,它们使用更少的资源,这意味着你可以在相同的硬件上运行更多的服务。

3.1.4 Docker的应用场景

  • 提供一致的开发环境:无论开发团队成员使用何种操作系统,Docker容器保证应用能够在一致的环境中运行。
  • 微服务架构:每个微服务可以被容器化,独立部署和扩展。
  • 快速部署:容器显著减少了从开发生命周期到生产部署的时间。
  • 应用程序隔离:保证在每个容器中运行的应用程序是相互隔离的。
  • 资源优化:容器的轻量级特性意味着更有效的资源使用。

总的来说,Docker是当今极为重要的DevOps工具之一,它极大地促进了应用程序的快速开发、测试和部署流程。

3.2 Windows版本

  • 笔者的系统为win11家庭版,接下来将以此为基础进行介绍
    在这里插入图片描述

3.3打开Hyper-V

  • 将以下代码复制到txt文本中,文件名为Hyper.txt
  • 将后缀改为Hyper.bat,点击bat文件重启电脑后就设置好了
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
  • 打开任务管理器–性能,确保虚拟化已开启
    在这里插入图片描述
  • 打开控制面板-程序和功能-启用或关闭Windows功能
  • 确保下面两个功能也是正常打开的在这里插入图片描述

3.4 安装WSL2

  • WSL2相关介绍(来自GPT):WSL2,即Windows Subsystem for Linux version 2,是微软为Windows 10和Windows 11提供的一个功能,允许用户直接在Windows上运行Linux环境,包括大多数命令行工具、实用程序和应用程序。它是WSL的第二版本,提供了更完整的Linux兼容性和更高的性能。

在这里插入图片描述

  • 管理员权限打开cmd,WSL version只要为2就是正确的
    在这里插入图片描述

3.5 Docker下载与安装

  • https://www.docker.com/products/docker-desktop/

  • 访问上述链接,下载Windows版本
    在这里插入图片描述

  • 下载完成后,双击打开等待程序安装完成并重启电脑

  • 打开后只要不报错就ok

  • 报错的话自行查找原因

  • 我这边遇到过两类错误:docker desktop wsl distro terminated abruptly以及unexpected wsl error,都是通过卸载关闭功能重装解决的,可以参考https://zhuanlan.zhihu.com/p/669999834

3.6 GROBID安装

  • GROBID库目前存在两个版本: full lightweight,我安装的第二个

  • Full: 可运行深度学习和 CRF 模型的完整镜像(见最新版本号)(10GB):该镜像包括所有必要的 python 和 TensorFlow 库、GPU 支持和所有 DL 模型资源。它可以提供更准确的结果,特别是在参考文献提取/解析和引文上下文识别方面。根据 GPU(推荐)的可用性与否,某些深度学习模型可能会带来更慢的运行时间和更高的内存使用率。该图像比纯 CRF 图像大得多。完整图像包含 Python 和 TensorFlow/Pytorch 库(超过 3GB)以及预加载的嵌入(约 5GB),但我们建议使用它。

  • Lightweight: 仅包含 CRF 模型的轻量级图像(300MB):该图像在运行时间和内存使用方面具有最佳性能,并限制了图像的大小,但它没有使用一些在准确性方面表现最佳的模型。图像信息可在此处找到。如果可能,请使用上述完整图像。

docker pull lfoppiano/grobid:0.8.0 #下载
docker run --rm --init --ulimit core=0 -p 8070:8070 lfoppiano/grobid:0.8.0 #运行
  • 输入上述代码到下面这样出现model path就完成了,此时可以访问进入网站Grobid Web Application 解析成功
    在这里插入图片描述
    在这里插入图片描述

4 调用API

import os
import re
import requests
import glob
import time
from  bs4 import BeautifulSoup
from tqdm import *files=glob.glob(r"...\*.pdf")url = "http://localhost:8070/api/processFulltextDocument"for f in tqdm(files):try:params = dict(input=open(f, 'rb'))response = requests.post(url, files=params, timeout=300)reslut=response.content.decode("utf-8")s=BeautifulSoup(reslut,'lxml')save=r"...\XML\{}.xml".format(f.split("\\")[-1][:-4])with open(save, 'w', encoding='utf-8') as file:# 写入XML声明头file.write('<?xml version="1.0" encoding="UTF-8"?>\n')# 写入剩余的XML数据file.write(str(s))time.sleep(1)except Exception as e:print(f)pass

参考

  1. https://blog.csdn.net/yt266666/article/details/127453067?spm=1001.2014.3001.5502
  2. https://grobid.readthedocs.io/en/latest/Grobid-docker/
  3. https://zhuanlan.zhihu.com/p/669999834

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/586253.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

github 仓库 修改开源协议

记录一下如何修改协议。 然后commit到你想要的主干或者分支就可以了。

Linux 安装部署高性能缓存服务redis

Linux 系统安装Redis 5 注意事项&#xff1a; 下载Redis 文件包&#xff0c;并上传至linux服务上解压 tar -zxvf redis.tar安装&#xff1a; 编译 make PREFIX/usr/local/redis install配置&#xff1a; redis.conf daemonize yes bind 127.0.0.1 192.168.1.221 supervised…

为什么都说“一入Java深似海”?怎么打破这个魔咒

引言 在当今数字化时代&#xff0c;编程已经成为一项至关重要的技能。而在众多编程语言中&#xff0c;Java以其广泛的应用领域和强大的功能特性&#xff0c;吸引了无数开发者的目光。无论是Web开发、移动应用还是大数据处理&#xff0c;Java都发挥着举足轻重的作用。然而&…

【核心复现】同时考虑考虑孤岛与重构的配电网故障恢复运行策略

目录 主要内容 内容详情 1.问题引出 2.可控负荷 3.网络拓扑约束 4.算法流程 结果一览 1.原文结果 2.程序运行结果 下载链接 主要内容 该模型复现文章《同时考虑考虑孤岛与重构的配电网故障恢复运行策略》&#xff0c;以IEEE33配电网为分析对象&#xff0c;…

2024春算法训练3——数组与字符串

一、题解 1、A-[NOIP2013]记数问题_2024春算法训练3——数组与字符串 (nowcoder.com) 直接暴力用一个哈希表存每个数出现的次数&#xff0c;最坏的时间时间复杂度为7*10^7&#xff08;实际上比这个数要小&#xff09;&#xff1b;代码如下&#xff1a; #include<iostream…

记忆力考验游戏-第15届蓝桥第5次STEMA测评Scratch真题精选

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第178讲。 如果想持续关注Scratch蓝桥真题解读&#xff0c;可以点击《Scratch蓝桥杯历年真题》并订阅合集&#xff0c;…

蓝桥杯第九届c++大学B组详细

目录 1.第几天 2.明码 3.乘积尾零 4.测试次数 5.递增三元组 6.日志统计 7.乘积最大 1.第几天 题目解析&#xff1a;这题是不是和以前有点印象&#xff0c;就是日期类但是是日期的减法。 #include <iostream> using namespace std;class Date { public: Date(in…

红酒:红酒的分类标准与市场细分

红酒的分类标准与市场细分是红酒产业中非常重要的概念。通过对红酒进行分类&#xff0c;可以更好地满足不同消费者的需求&#xff0c;提升红酒的市场份额和品牌影响力。 首先&#xff0c;红酒的分类标准可以根据不同的维度进行划分。常见的分类标准是根据葡萄酒的口感、香气、颜…

新生儿吃手指:家长应该知道的注意事项

引言&#xff1a; 新生儿吃手指是一个常见的现象&#xff0c;但对于许多父母来说&#xff0c;这可能会引起一些担忧和困惑。在本文中&#xff0c;我们将探讨新生儿吃手指的一些常见原因、可能的影响以及家长应该采取的注意事项&#xff0c;帮助父母更好地理解和应对这种行为。 …

motor,一个好用的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个好用的 Python 库 - motor。 Github地址&#xff1a;https://github.com/mongodb/motor 在现代的软件开发中&#xff0c;异步编程已经成为了不可或缺的一部分。特别是在处…

中国主要河流水系数据

在我国&#xff0c;水系等级划分主要依据流域面积、流量和河流长度等因素。根据《中华人民共和国水资源》的相关规定&#xff0c;我国水系等级大致可以分为以下几类&#xff1a; 一级水系&#xff1a;主要是指国内的大型河流&#xff0c;如长江、黄河、珠江等。这些河流的流域…

第14届蓝桥杯C++B组省赛:串的熵|枚举、浮点数相等比较、log函数

题目链接&#xff1a; 2.01串的熵 - 蓝桥云课 (lanqiao.cn) 注意点&#xff1a; 1.C的log函数&#xff1a;有2&#xff0c;e&#xff08;log()以e为底&#xff09;&#xff0c;10为底的&#xff0c;没有现成的用换底公式&#xff1a; C 标准库 <cmath> 数学函数大全 - …