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

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.rhkb.cn/news/397072.html

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

相关文章

C语言:求最大数不用数组

(1)题目: 输入一批正数用空格隔开,个数不限,输入0时结束循环,并且输出这批整数的最大值。 (2)代码: #include "stdio.h" int main() {int max 0; // 假设输入…

Qt——多线程

一、QThread类 如果要设计多线程程序,一般是从QThread继承定义一个线程类,并重新定义QThread的虚函数 run() ,在函数 run() 里处理线程的事件循环。 应用程序的线程称为主线程,创建的其他线程称为工作线程。主线程的 start() 函数…

计算机网络408考研 2014

1 计算机网络408考研2014年真题解析_哔哩哔哩_bilibili 1 111 1 11 1

MyBatis:Maven,Git,TortoiseGit,Gradle

1,Maven Maven是一个非常优秀的项目管理工具,采用一种“约定优于配置(CoC)”的策略来管理项目。使用Maven不仅可以把源代码构建成可发布的项目(包括编译、打包、测试和分发),还可以生成报告、生…

短视频SDK,支持Flutter跨平台框架,加速产品上线进程

在数字内容爆炸式增长的今天,短视频已成为连接用户、传递情感、展现创意的重要桥梁。为助力开发者快速融入这股潮流,美摄科技匠心打造了一款专为Flutter框架优化的短视频SDK解决方案,旨在降低技术门槛,加速产品迭代,让…

主题与分区

主题和分区是Kafka的两个核心概念,分区的划分不仅为Kafka提供了可伸缩性、水平扩展的功能,还通过多副本机制来为Kafka提供数据冗余以提高数据可靠性。 主题创建 主题和分区都是提供给上层用户的抽象,而在副本层面或更加准确地说是Log层面&a…

Unity效果优化之抗锯齿

Unityde 基于HDRP渲染管线的抗锯齿处理的设置参考图: 前提:需要导入HDRP的插件包才行, 该参数设置能保证在PC版上抗锯齿效果非常好, 英文版:

AWS Lambda 十年回顾:功能总览、更新记录与入门指南

这次,我为2014年11月发布的AWS Lambda创建了一个历史时间表。AWS Lambda 是一项无服务器、全托管的代码执行服务,今年2024年11月将迎来其宣布发布的十周年纪念。虽然提前了一些,但为了提前庆祝这一重要时刻,我写了这篇文章。 文章…

论文解读 | ACL 2024:自我蒸馏在语言模型微调中架起分布差异的桥梁

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 杨兆瑞 浙江大学CAD&CG全国重点实验室博士生 导师为陈为教授 概述 大型语言模型(LLMs)的兴起彻底改变了自然语言处理领域,但对它们进行特定任务的微调常常面临在平衡性能…

C++ | (一)C++入门基础

从本篇文章开始,我们正式进行C的系统学习。C是在C语言的基础上添加了面向对象编程的特性,是C语言的延伸,并遵循C语言的绝大多数语法。如果想学习C,必须要有一定的C语言基础,这样学起来才不会太过痛苦。 本文章即假设读…

【实战】Spring Security Oauth2自定义授权模式接入手机验证

文章目录 前言技术积累Oauth2简介Oauth2的四种模式授权码模式简化模式密码模式客户端模式自定义模式 实战演示1、mavan依赖引入2、自定义手机用户3、自定义手机用户信息获取服务4、自定义认证令牌5、自定义授权模式6、自定义实际认证提供者7、认证服务配置8、Oauth2配置9、资源…

【数据结构】—— 队列

1、队列的概念2、队列的结构如何选择合适的数据结构实现队列(数组or链表) 3、队列的链式存储3.1 队列的链式存储结构3.2 队列的常见接口3.3 队列的接口实现初始化判空入队列出队列获取队头元素获取队尾元素获取节点个数销毁 3.4 源代码 4、队列的顺序存储…

k8s持久化存储PV和PVC

一、PV和PVC 1.PersistentVolume (PV) PersistentVolume (PV) 是外部存储系统中的⼀块存储空间,由管理员创建和维护。与 Volume⼀样, PV 具有持久性,⽣命周期独⽴于 Pod; 2.PersistentVolumeClaim (PVC) PersistentVolumeClaim…

散点图、折线图 -- 通过javascript实现

散点图 散点图适合用于探索数据大局、比较值、发现趋势、模式和变量间关系&#xff0c;是数据分析中直观展示和初步探索的有力工具。 代码&#xff1a; <!DOCTYPE html> <html> <script src"https://cdn.plot.ly/plotly-latest.min.js"><…

如何快速实现MODBUS TCP转Profinet——泗博网关EPN-330

泗博网关EPN-330可作为PROFINET从站&#xff0c;支持与西门子S7-200 SMART/300/400/1200/1500全系列PLC以及具有PROFINET主站的系统无缝对接&#xff0c;而Modbus TCP端&#xff0c;可以与Modbus TCP从站设备、主站PLC、DCS系统以及组态软件等进行数据交互。 通过EPN-330&…

SemanticKernel/C#:实现接口,接入本地嵌入模型

前言 本文通过Codeblaze.SemanticKernel这个项目&#xff0c;学习如何实现ITextEmbeddingGenerationService接口&#xff0c;接入本地嵌入模型。 项目地址&#xff1a;https://github.com/BLaZeKiLL/Codeblaze.SemanticKernel 实践 SemanticKernel初看以为只支持OpenAI的各…

近似算法:求Π的近似值(迭代法)

问题&#xff1a;请用正多边形逼近法求Π的近似值。 算法&#xff1a;圆的周长 正多边形的边长 * 边数。设圆的半径为1&#xff0c;则2Π i * x 。其中 i 为正多边形边数&#xff0c;x 为边长。 因为圆的半径 内接于此圆的正六边形的边长&#xff0c;故从六边形开始计算。参…

git系统学习

git系统学习 git命令行获取git 版本号 创建初始版本库创建git库初始化用户名和密码查看用户名和邮箱修改用户名和密码 将文件添加到版本库中删除暂存文件提交代码查看提交信息查看更加详细的信息查看提交差异版本库内文件的删除和重命名删除库里的文件重命名库里的文件 打标签查…

重启人生计划-大梦方醒

&#x1f973;&#x1f973;&#x1f973; 茫茫人海千千万万&#xff0c;感谢这一刻你看到了我的文章&#xff0c;感谢观赏&#xff0c;大家好呀&#xff0c;我是最爱吃鱼罐头&#xff0c;大家可以叫鱼罐头呦~&#x1f973;&#x1f973;&#x1f973; 从今天开始&#xff0c;我…

MybatisPlus——扩展功能(一)

扩展功能 1.代码生成 在使用MybatisPlus以后&#xff0c;基础的Mapper、Service、PO代码相对固定&#xff0c;重复编写也比较麻烦。因此MybatisPlus官方提供了代码生成器根据数据库表结构生成PO、Mapper、Service等相关代码。只不过代码生成器同样要编码使用&#xff0c;也很麻…