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

1 安装ollama

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

2 下载LLM

ollama软件目前支持多种大模型, 如阿里的(qwen、qwen2)、meta的(llama3、llama3.1), 读者根据自己电脑配置下载相应的模型。

以llama3.1为例,根据自己电脑显存性能, 选择适宜的版本。如果不知道选什么,那就试着安装,不合适不能用再删除即可。打开电脑命令行cmd(mac是terminal), 网络是连网状态,执行模型下载(安装)命令

python 复制代码
ollama run llama3.1

3 安装python包

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

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

python 复制代码
pip install ollama

4启动ollama服务

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

python 复制代码
ollama serve

5 设计提示词

该提示存储在scientific_papers_prompt.txt 中

python 复制代码
科学研究论文:
--- 
{document} 
---

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

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

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

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

6 提取信息

python 复制代码
# 从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模型中,并打印出结果:

相关推荐
巴里巴气11 分钟前
selenium基础知识 和 模拟登录selenium版本
爬虫·python·selenium·爬虫模拟登录
198915 分钟前
【零基础学AI】第26讲:循环神经网络(RNN)与LSTM - 文本生成
人工智能·python·rnn·神经网络·机器学习·tensorflow·lstm
JavaEdge在掘金21 分钟前
Redis 数据倾斜?别慌!从成因到解决方案,一文帮你搞定
python
ansurfen25 分钟前
我的第一个AI项目:从零搭建RAG知识库的踩坑之旅
python·llm
前端付豪30 分钟前
20、用 Python + API 打造终端天气预报工具(支持城市查询、天气图标、美化输出🧊
后端·python
前端付豪35 分钟前
19、用 Python + OpenAI 构建一个命令行 AI 问答助手
后端·python
amazinging1 小时前
北京-4年功能测试2年空窗-报培训班学测开-第四十三天
python·学习
wgyang20162 小时前
我的第一个LangFlow工作流——复读机
python
Zhen (Evan) Wang2 小时前
(豆包)xgb.XGBRegressor 如何进行参数调优
开发语言·python
我爱一条柴ya2 小时前
【AI大模型】线性回归:经典算法的深度解析与实战指南
人工智能·python·算法·ai·ai编程