当前位置: 首页 > news >正文

使用本地大模型从论文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模型中,并打印出结果:实验结果

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深度学习--数据处理dataloader介绍及代码分析
  • 【C#】一个项目移动了位置,或者换到其他电脑上,编译报错 Files 的值“IGEF,解决方法
  • Elasticsearch 地理查询:高效探索空间数据
  • openstack使用笔记
  • antdv和element表格,假分页+表格高度处理mixins
  • springboot瑜伽课约课小程序-计算机毕业设计源码87936
  • 【数据结构与算法 | 力扣+二叉搜索树篇】力扣450, 98
  • C++中的::
  • 告别DockerHub 镜像下载难题:掌握高效下载策略,畅享无缝开发体验
  • 【Python深度学习】如何实现将将时间序列转换为图像的功能
  • 基于python的电商水果超市的设计与实现
  • 手机游戏录屏软件哪个好,3款软件搞定游戏录屏
  • Golang | Leetcode Golang题解之第327题区间和的个数
  • 数据库系统 第2节 数据库语言
  • 一篇文章教会你 LVS———NAT模式和DR模式部署配置
  • php的引用
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • .pyc 想到的一些问题
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • css系列之关于字体的事
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • GraphQL学习过程应该是这样的
  • Meteor的表单提交:Form
  • PHP CLI应用的调试原理
  • ReactNativeweexDeviceOne对比
  • Spring Boot快速入门(一):Hello Spring Boot
  • Transformer-XL: Unleashing the Potential of Attention Models
  • vue2.0项目引入element-ui
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Vue2.x学习三:事件处理生命周期钩子
  • 从PHP迁移至Golang - 基础篇
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 如何合理的规划jvm性能调优
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 收藏好这篇,别再只说“数据劫持”了
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 一些关于Rust在2019年的思考
  • 白色的风信子
  • gunicorn工作原理
  • 交换综合实验一
  • 选择阿里云数据库HBase版十大理由
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • # Redis 入门到精通(一)数据类型(4)
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • ######## golang各章节终篇索引 ########
  • #、%和$符号在OGNL表达式中经常出现
  • #100天计划# 2013年9月29日
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (3)STL算法之搜索
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (七)Appdesigner-初步入门及常用组件的使用方法说明