GROBID库文献解析

news/2024/6/15 15:04:10/文章来源:https://blog.csdn.net/wenhaochu321/article/details/137228032

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 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.luyixian.cn/news_show_1033391.aspx

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

相关文章

2024年MathorCup数学建模思路A题思路分享

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

KingbaseV8 数据库迁移

1、打开数据迁移工具 启动迁移系统路径&#xff1a;安装位置\KESRealPro\V008R006C006B0021\ClientTools\guitools\KDts\KDTS-WEB\bin 3、访问到KingbaseDTS 数据库迁移工具 http://localhost:8080 默认账号密码如下&#xff1a; 账号&#xff1a;admin 密码&#xff1a;123…

创建第一个Electron程序

前置准备 创建一个文件夹&#xff0c;如: electest进入文件夹&#xff0c;初始化npm npm init -y 安装electron依赖包 注&#xff0c;这里使用npm i -D electron会特别卡&#xff0c;哪怕换成淘宝源也不行。可以使用下面方式安装。 首先&#xff0c;安装yarn npm i -g yarn 随…

快速入门Linux,Linux岗位有哪些?(一)

文章目录 Linux与Linux运维操作系统&#xff1f;操作系统图解 认识LinuxLinux受欢迎的原因什么是Linux运维Linux运维岗位Linux运维岗位职责Linux运维架构师岗位职责Linux运维职业发展路线计算机硬件分类运维人员的三大核心职责 运维人员工作&#xff08;服务器&#xff09;什么…

注册接口和前置SQL及数据生成及封装

注册接口 演示注册接口的三步操作&#xff1a;【注册流程逻辑】 第一步&#xff1a;发送注册短信验证码接口请求 请求方法&#xff1a; put 请求地址&#xff1a;http://shop.lemonban.com:8107/user/sendRegisterSms 请求参数&#xff1a;{“mobile”:“13422337766”} 请求头…

蓝桥杯刷题day13——乘飞机【算法赛】

一、问题描述 等待登机的你看着眼前有老有小长长的队伍十分无聊&#xff0c;你突然想要知道&#xff0c;是否存在两个年龄相仿的乘客。每个乘客的年龄用一个 0 到 36500 的整数表示&#xff0c;两个乘客的年龄相差 365 以内就认为是相仿的。 具体来说&#xff0c;你有一个长度…

iOS - Runloop介绍

文章目录 iOS - Runloop介绍1. 简介1.1 顾名思义1.2. 应用范畴1.3. 如果没有runloop1.4. 如果有了runloop 2. Runloop对象3. Runloop与线程4. 获取Runloop对象4.1 Foundation4.2 Core Foundation4.3 示例 5. Runloop相关的类5.1 Core Foundation中关于RunLoop的5个类5.2 CFRunL…

Vue中的一些指令与计算方法

语法 插值语法 HTML的双标签内容中使用&#xff0c;在{{}}之内书写JS代码 属性语法 1.v-bind或: 2.:属性名"值"或v-bind"值" 事件语法 v-on或 v-on:事件名"方法名"或事件名"方法名" 选项 选项&#xff1a;可选的配置项——官方…

3D分割项目 | 基于Pytorch+3DUnet实现的3D体积语义分割算法

项目应用场景 用于 3D 体积语义分割场景&#xff0c;适用于各种物体的 3D 语义分割&#xff0c;比如大米、大豆的体积分割等 项目效果&#xff1a; 项目流程 > 具体参见项目内README.md (1) 安装 conda install -c conda-forge mamba mamba create -n pytorch-3dunet -c p…

OpenHarmony如何模拟搭建本地http静态服务

简介 本文是在基于OpenHarmony 4.0的基础上&#xff0c;介绍了一种编写一个前端http静态服务的思路. 方案设计 在OpenHarmony上&#xff0c;如果想要访问本地网页。有两种方案 u 方案一&#xff1a;使用file协议&#xff0c;将html放至entry/src/main/resource/rawfile下&#…

Vue 3中ref和reactive的区别

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

hcia datacom课程学习(5):MAC地址与arp协议

1.MAC地址 1.1 含义与作用 &#xff08;1&#xff09;含义&#xff1a; mac地址也称物理地址&#xff0c;是网卡设备在数据链路层的地址&#xff0c;全世界每一块网卡的mac地址都是唯一的&#xff0c;出厂时烧录在网卡上不可更改 &#xff08;2&#xff09;作用&#xff1a…

分布式部署LNMP,搭建discuz论坛

LNMP 是一种常见的服务器环境配置&#xff0c;用于运行 Web 应用程序。它由 Linux、Nginx、MySQL&#xff08;或 MariaDB&#xff09;、PHP 组成。 一、安装数据库 数据库主机(192.168.50.101)安装mysql服务 将安装mysql 所需软件包传到/opt目录下安装环境依赖包配置软件模块…

【数据结构】AVL 树

文章目录 1. AVL 树的概念2. AVL 树节点的定义3. AVL 树的插入4. AVL 树的旋转5. AVL 树的验证6. AVL 树的删除7. AVL 树的性能 前面对 map / multimap / set / multiset 进行了简单的介绍【C】map & set&#xff0c;在其文档介绍中发现&#xff0c;这几个容器有个共同点是…

非关系型数据库--------------Redis配置与优化

目录 一、关系型数据库与非关系型数据库 1.1关系型数据库 1.2非关系型数据库 1.2.1非关系型数据库产生背景 1.3关系型非关系型区别 二、Redis 2.1redis简介 2.2Redis命中机制和淘汰机制 2.3Redis 具有以下优点 2.3.1具有极高的数据读写速度 2.3.2redis支持丰富的数据…

2024年最受欢迎的 19 个 VS Code 主题排行榜

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

四川古力未来科技抖音小店:把握电商新风口,前景无限广阔

在数字化浪潮席卷全球的今天&#xff0c;电商行业以其独特的魅力和无限潜力&#xff0c;成为了众多创业者和投资者关注的焦点。四川古力未来科技抖音小店&#xff0c;正是站在这一风口浪尖上的新兴力量&#xff0c;其前景之广阔&#xff0c;令人瞩目。 抖音&#xff0c;作为一款…

[Python人工智能] 四十五.命名实体识别 (6)利用keras构建CNN-BiLSTM-ATT-CRF实体识别模型(注意力问题探讨)

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前文讲解融合Bert的实体识别研究,使用bert4keras和kears包来构建Bert+BiLSTM-CRF模型。这篇文章将详细结合如何利用keras和tensorflow构建基于注意力机制的CNN-BiLSTM-ATT-CRF模型,并实现中文实体识别…

RWKV_Pytorch:支持多硬件适配的开源大语言模型推理框架

亲爱的技术探索者们&#xff0c;今天我要向大家隆重推荐一个在开源社区中崭露头角的项目——RWKV_Pytorch。这是一个基于Pytorch的RWKV大语言模型推理框架&#xff0c;它不仅具备高效的原生Pytorch实现&#xff0c;而且还扩展了对多种硬件的适配支持&#xff0c;让模型的部署和…

Ubuntu joystick 测试手柄 xbox

Ubuntu joystick 测试手柄 xbox 测试使用Ubuntu20.04 测试环境在工控机 安装测试 实际测试使用的手柄是北通阿修罗2pro 兼容xbox Ubuntu20.04主机 连接手柄或者无线接收器后查看是否已经检测到&#xff1a; ls /dev/input找到输入中的 js0 即为手柄输入 需要安装joysti…