使用本地大模型从论文PDF中提取结构化信息

news2024/9/20 16:57:17

1 安装ollama

点击前往网站 https://ollama.com/ ,下载ollama软件,支持win、Mac、linux

2 下载LLM

ollama软件目前支持多种大模型, 如阿里的(qwen、qwen2)、meta的(llama3、llama3.1), 读者根据自己电脑配置下载相应的模型。
以llama3.1为例,根据自己电脑显存性能, 选择适宜的版本。如果不知道选什么,那就试着安装,不合适不能用再删除即可。打开电脑命令行cmd(mac是terminal), 网络是连网状态,执行模型下载(安装)命令

ollama run llama3.1

3 安装python包

在python中调用ollama服务,需要ollama包。

打开电脑命令行cmd(mac是terminal), 网络是连网状态,执行安装命令

pip install ollama

4启动ollama服务

在Python中调用本地ollama服务,需要先启动本地ollama服务, 打开电脑命令行cmd(mac是terminal), 执行

ollama serve

5 设计提示词

该提示存储在scientific_papers_prompt.txt 中

科学研究论文:
--- 
{document} 
---

您是分析科学研究论文的专家。 请仔细阅读上面提供的研究论文,并提取以下关键信息:

从研究论文中提取以下六 (6) 个属性:
- 论文标题:研究论文的全名
- 出版年份:论文发表的年份
- 作者:论文所有作者的全名
- 作者联系方式:字典列表,其中每个字典包含每个作者的以下键:
  - 姓名:作者的全名
  - 机构:作者的机构隶属关系
  - 电子邮件:作者的电子邮件地址(如果提供)
- 摘要:论文摘要的全文
- 摘要总结:用 2-3 句话简洁地总结摘要,突出重点

指南:
- 提取的信息应属实,并准确无误。
- 除摘要外,应极其简洁,摘要应完整复制。
- 提取的实体应该是独立的,并且不需要论文的其余部分就能轻松理解。
- 如果论文中缺少任何属性,请将该字段留空,而不是猜测。
- 对于摘要总结,重点介绍研究的主要目标、方法和主要发现。
- 对于作者联系方式,请为每个作者创建一个条目,即使缺少一些信息。如果没有提供作者的电子邮件或机构,请在字典中将该字段留空。

以 JSON 格式回答。JSON 应包含 6 个键:"PaperTitle", "PublicationYear", "Authors", "AuthorContact", "Abstract", "SummaryAbstract""AuthorContact"字段应该是字典列表格式。

6 提取信息

# 从pdf中读取信息以辅助阅读论文
import PyPDF2
import ollama
# 注意版本问题!
# PyPDF2 == 3.0.1
# ollama == 0.3.1
# 读取pdf
# 遍历某个文件夹下的所有pdf文件
def read_pdf_text(filename):
  with open(filename, 'rb') as file:
    # 创建一个PDF阅读器对象
    reader = PyPDF2.PdfReader(file)
    res = []
    # 遍历PDF中的每一页
    for page_num in range(len(reader.pages)):
      # 获取当前页面的文本内容
      text = reader.pages[page_num].extract_text()
      res.append(text)
    return ''.join(res)
def extract_pdf(filename, prompt_content):
    pdf = read_pdf_text(filename=filename)
    prompt_content = open(prompt_content, encoding='utf-8').read()
    response = ollama.chat(model='llama3', 
                       messages = [
                           {'role': 'system', 'content': prompt_content},
                           {'role': 'user', 'content': pdf}
                       ])
    return response['message']['content']
print(extract_pdf(filename='prompts/Mobile Payment Adoption.pdf', prompt_content='prompts/scientific_papers_prompt.txt'))

上述代码分为两部分,首先使用read_pdf_text() 读取pdf文档,并转化为字符串格式。然后将其与提示词文件scientific_papers_prompt.txt输入LLM模型中,并打印出结果:实验结果

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《加密与解密》读书笔记1

1、常用断点包括INT3断点、硬件断点、内存断点和消息断点。 1.1 INT断点:一个常用的断点,在OD和x64dbg中按F2快捷键来设置/取消断点。当执行一个INT3断点时,该地址处的内容就被调试器使用INT3指令替换掉了,此时OD和x64dbg将INT3隐…

flink1.18 编译遇到的问题

1. flink-runtime-web编译失败 源码编译时一直卡在 [INFO] Running ‘npm ci --cache-max0 --no-save’ in 处理方法&#xff1a; 修改flink-runtime-web/pom.xml文件 将<arguments>ci --cache-max0 --no-save ${npm.proxy}</arguments> 替换为&#xff1a;<a…

Delphi5实现鱼C记事本程序(TRichEdit版)

效果图 鱼C记事本程序 程序图标 Delphi5的程序图标需要ICO后缀名的文件&#xff0c;已经上传到CSDN&#xff0c;可以用一下。 有什么快捷生成ICO文件的方法&#xff0c;可以在评论区分享一下噢&#xff0c;谢谢&#xff01;&#xff01; MainMenu菜单组件 TRichEdit 组件 在…

多线程(2)——线程的六种状态

1. 线程的所有状态 进程状态&#xff1a; 就绪&#xff1a;正在 cpu 上执行&#xff0c;或者随时可以去 cpu 上执行 阻塞&#xff1a;暂时不能参与 cpu 执行 Java 的线程&#xff0c;对于状态做了更详细的区分&#xff0c;不仅仅是就绪和阻塞了&#xff0c;六种&#xff1a…

2024懒人精灵七天从入门到精通实战课程(付源码)

写在开始&#xff1a;对于想学习自动化技术的同学&#xff0c;给你们一些建议&#xff1b;如果你已经选择开始&#xff0c;还在坚持&#xff0c;我奉劝你坚持下去&#xff0c;水到渠成&#xff1b;如果你还没开始就选择放弃&#xff0c;我建议你就此放弃&#xff0c;老师也不鼓…

合宙Air780EP_LuatOS_MQTT应用指南

简介 Air780EP 是合宙的低功耗4G模组之一&#xff0c;支持LuatOS的脚本二次开发&#xff0c;即使是不太懂技术的老板&#xff0c;也能轻松使用 Air780EP开发产品。 本文应各位大佬邀请&#xff0c;详细讲解了Air780EP 的MQTT的应用教程&#xff01; MQTT协议具有长连接、低带宽…

开源AI智能名片商城系统:重塑大零售生态的创新实践与深度分析

摘要&#xff1a;在数字经济浪潮的推动下&#xff0c;零售行业正经历着前所未有的变革。传统零售模式面临消费者需求多样化、市场竞争加剧等多重挑战&#xff0c;而开源AI智能名片商城系统的出现&#xff0c;为零售行业的转型升级提供了新的思路和技术支持。本文深入探讨了开源…

C语言----字符串的匹配

字符串的匹配 实例说明&#xff1a; 本实例实现对两个字符串进行匹配操作&#xff0c;即在第一个字符串中查找是否存在第二个字符串。如果字符串完全匹配&#xff0c;则提示匹配的信息&#xff0c;并显示第二个字符串在第一个字符串中的开始位置&#xff0c;否则提示不匹配。 …

STM32 - 笔记

1 STM32的串口通信 【keysking的STM32教程】 第8集 STM32的串口通信_哔哩哔哩_bilibili 波特律动 串口助手

观成科技:海莲花活跃木马KSRAT加密通信分析

概述 自2023年8月至今&#xff0c;海莲花组织多次利用KSRAT远控木马对我国发起攻击。KSRAT通过HTTP协议与C&C服务器进行通信&#xff0c;每个样本都使用了不同的URL。其心跳包采用XOR算法进行加密&#xff0c;而控制指令包和数据回传包则使用了XOR以及“XORAES-128-CBC”组…

【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)

文章目录 递归是什么递归的思想递归的限制条件 递归举例求n的阶乘分析和代码实现画图推演 顺序打印一个整数的每一位分析和代码实现画图推演 递归与迭代递归求第n个斐波那契数迭代求第n个斐波那契数 拓展练习青蛙跳台阶问题递归求解迭代求解 汉诺塔问题 递归是什么 递归是学习…

FPGA使用sv生成虚拟单音数据

FPGA使用sv生成虚拟单音数据 之前一直使用matlab生成虚拟的数据&#xff0c;导出到txt或是coe文件中&#xff0c;再导入到fpga中进行仿真测试。 复杂的数据这样操作自然是必要的&#xff0c;但是平日使用正弦数据进行测试的话&#xff0c;这样的操作不免复杂&#xff0c;今日…

CentOS 安装Redis

在 CentOS 安装 Redis 操作系统&#xff1a;centos-7.9.2009-Core 1. 更新系统 首先&#xff0c;确保你的系统是最新的&#xff1a; sudo yum update -y2. 安装 EPEL 仓库 Redis 可能不在默认的 CentOS 仓库中&#xff0c;因此你需要安装 EPEL&#xff08;Extra Packages f…

【源码+文档+调试讲解】活力健身馆管理系统

摘 要 活力健身馆管理系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c;体验高科技时代带给人们的方便&#xff0c;同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓&#xff0c;iOS相比较起来&am…

springboot狱内罪犯危险性评估系统的设计与实现论文源码调试讲解

第一章系统成功运行案例 第2章 程序开发技术 2.1 Mysql数据库 开发的程序面向用户的只是程序的功能界面&#xff0c;让用户操作程序界面的各个功能&#xff0c;那么很多人就会问&#xff0c;用户使用程序功能生成的数据信息放在哪里的&#xff1f;这个就需要涉及到数据库的知识…

CTFHUB-web-RCE-eval执行

开启题目 查看源码发现直接用蚁剑连接就可以&#xff0c;连接之后发现成功了

冒烟测试:快速初步检测软件稳定性的关键步骤

目录 前言1. 冒烟测试的定义1.1 冒烟测试的起源1.2 冒烟测试的特点 2. 冒烟测试的重要性2.1 确保构建稳定性2.2 早期发现重大问题2.3 提高测试效率 3. 冒烟测试的实施方法3.1 制定测试计划3.2 选择测试用例3.3 执行测试3.4 分析测试结果 4. 冒烟测试的最佳实践4.1 自动化冒烟测…

Opera浏览器与IPXProxy代理IP集成步骤详解

​对于经常需要使用公共WiFi网络进行网络操作的人来说&#xff0c;安全性是至关重要的。作为Opera浏览器的用户&#xff0c;我非常关注隐私安全&#xff0c;也尝试过各种提高安全性的方法&#xff0c;其中使用IPXProxy代理IP是不错的方法之一。下面为大家带来Opera浏览器与IPXP…

【java】升级jetty-client解决Too many open files问题

文章目录 升级jetty-client解决Too many open files问题问题背景排查原因解决lsof命令拓展 升级jetty-client解决Too many open files问题 问题背景 生产环境的采集经过一段时间就会报错 Too many open files&#xff0c;导致接下来的采集都会失败&#xff0c;已经严重影响到…

NSSCTF练习记录:[SWPUCTF 2021 新生赛]include

题目&#xff1a; 随便传入一个file 因为存在include_once函数&#xff0c;可以使用php伪协议获取flag.php源码&#xff0c;再通过base64解码得到flag。 php:// 访问各个输入/输出流&#xff0c;常用php://filter和php://input&#xff0c;php://filter用于读取源码&#xff…