不知道大家是否有这样的感觉,上网浏览信息,看到好的文章就兴奋地下载了下来,文件的名称通常是一串奇奇怪怪的字符串。过了几天就在电脑中找不着了。没有网络上搜索不到的文章,而是在你的电脑中却找不到它们。几年下来,辛辛苦苦收集的技术文档,书籍成了电脑中的垃圾堆。一个治学严谨的信息收纳狂也许会迅速地整理自己的文件夹。更换文件名,分门别类地存储下载文档。但是我不会。AI 出现后,是否能帮我做个电脑文件整理助手呢?我一直想做这件事情。这几天有空,就尝试写一个python小程序。

麻烦存在于细节中

许多事情想想容易,一动手就发现问题没想象的简单。下载的文档包括下面几种

  • 论文

   网络上下载的论文比较简单,它在开头包含了一个摘要,只要通过AI 大模型提取出来就可以了。我使用豆包doubao-1-5-pro-32k 最大输入文字长度128K。普通的论文都能全部输入。

  • 书籍

书籍的长度比较大,通常有几百页。也没有书籍摘要,为了写出图书介绍,可以采取两种方式,一种方式是将图书分段(chunk_size) 逐段提取重要的内容,然后合并起来,写摘要。另一种方法是提取前10页的内容,做图书的介绍,因为通常图书的前几页包括了前言,目录等,前言中作者会重点介绍图书的主要内容,适合的读者和如何阅读这本书。 我尝试了一下,好像第二种方法效果更好一点。

  • 普通的文章

    普通的文章,如果不超过大模型输入的限制,就直接丢给它,请他去归纳总结。对于超长的文章,可以分段提取段落大意,然后在总结出文章的摘要。

代码

图书写简介

from chromadb import PersistentClient
from PyPDF2 import PdfReader
from openai import OpenAI
import osos.environ['OPENAI_API_KEY'] ="your API Key"
os.environ['OPENAI_BASE_URL'] ="https://ark.cn-beijing.volces.com/api/v3"
LLM_client = OpenAI(# 此为默认路径,您可根据业务所在地域进行配置base_url="https://ark.cn-beijing.volces.com/api/v3",# 从环境变量中获取您的 API Keyapi_key=os.environ.get("0102f8a9-8727-4770-b67e-d289d4592343"),
)
def Summary(Text,Prompt):response = LLM_client.chat.completions.create(# 指定您创建的方舟推理接入点 ID,此处已帮您修改为您的推理接入点 IDmodel="doubao-1-5-pro-32k-250115",messages=[{"role": "system", "content": Prompt},{"role": "user", "content": Text}])response_message = response.choices[0].message.contentreturn response_message
def extract_text_from_pdf(pdf_path):with open(pdf_path, 'rb') as file:reader = PdfReader(file)text=""number=len(reader.pages)if number>10:number=10for index in range(number):text += reader.pages[index].extract_text()return text
def split_text(text, chunk_size=500):return [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]
Chroma_client = PersistentClient()
text = extract_text_from_pdf("./pythonBook1.pdf")
split_doc=split_text(text,120000)
print("Slipt_doc:",len(split_doc))
split_summary=[]
index=0
for doc in split_doc:print(index)index=index+1#print(doc)split_summary.append(Summary(doc,"为一本书写一个推荐文章,下面书中的前10页,请摘录本书的主要内容,写作的目的,方法,适合的读者,保持简短扼要"))
summary_text=""    
for text in  split_summary:   summary_text += text
print(len(summary_text))
SummaryText=Summary(summary_text,"这是一本书中前10页的分段摘录,请依此为依据,这本书生成一个推荐文章,以中文输出")
print(SummaryText)

论文提取摘要

from chromadb import PersistentClient
from PyPDF2 import PdfReader
from openai import OpenAI
import os
import json
os.environ['OPENAI_API_KEY'] ="your API Key"
os.environ['OPENAI_BASE_URL'] ="https://ark.cn-beijing.volces.com/api/v3"
LLM_client = OpenAI(# 此为默认路径,您可根据业务所在地域进行配置base_url="https://ark.cn-beijing.volces.com/api/v3",# 从环境变量中获取您的 API Keyapi_key=os.environ.get("0102f8a9-8727-4770-b67e-d289d4592343"),
)
def Summary(Text):Prompt="""为一篇文章写一个摘要(Abstract),并且提取文章的标题,作者名称。如果没有提及作者,设置为空字符串如果文章中包含了摘要,就直接提取出来。否则,请生成文章的摘要。输出Json 格式。格式为:{"Name":Paper's Name,"Author":Writer's Name"Abstract" Paper's Abstract}摘要 Abstract 以中文输出。"""response = LLM_client.chat.completions.create(# 指定您创建的方舟推理接入点 ID,此处已帮您修改为您的推理接入点 IDmodel="doubao-1-5-pro-32k-250115",messages=[{"role": "system", "content": Prompt},{"role": "user", "content": Text}])response_message = response.choices[0].message.contentreturn response_message
def extract_text_from_pdf(pdf_path):with open(pdf_path, 'rb') as file:reader = PdfReader(file)text=""for page in reader.pages:text += page.extract_text()return text
def split_text(text, chunk_size=500):return [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]
Chroma_client = PersistentClient()
InputFilePath="./DETC.2007-35530.pdf"
text = extract_text_from_pdf(InputFilePath)
SummaryText=Summary(text)
#print(SummaryText)
SummaryJson=json.loads(SummaryText)
print(SummaryJson["Name"])
print(SummaryJson["Author"])
print(SummaryJson["Abstract"])
FilePath="./"+SummaryJson["Name"]+"_Abstract.txt"
OutputFilePath="./"+SummaryJson["Name"]+".pdf"
with open(FilePath, "w", encoding="utf-8") as f:f.write(SummaryJson["Abstract"])
os.rename(InputFilePath, OutputFilePath)  

结论

        与传统的程序设计不同,编写AI 程序先要将事情搞明白,然后讲明白。有点类似于给秘书交代工作。需要有解决问题的思路。为文档写一个简介,看上去很简单的问题。实际上也有许多因素需要考虑。使用大模型整理下载的内容是十分有用的工具。

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

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

相关文章

ubuntu系统+N卡 | docker compose+ollama+dify(dify和ollama在同一容器)

1、安装NVIDIA驱动 2、安装docker,docker compose 3、安装NVIDIA Container Toolkit Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit(仅 GPU 场景需要) # Configure the production repository: curl -fsSL https://…

实习手记:基于大模型的搜索引擎开发实践

初入团队:从理论到实践的跨越五月份开始,我怀着忐忑又期待的心情以线上的方式加入了公司AI研发中心的搜索引擎优化小组。作为一名数据科学与大数据技术专业的学生,这是我第一次参与工业级AI项目的开发,团队的任务是构建一个基于大…

用Python实现神经网络(二)

#Overfitting是机器学习的主要问题。下面我们来看一下过拟合现像:import numpy as npimport matplotlib.pyplot as pltimport matplotlib as mplimport tensorflow as tffrom scipy.optimize import curve_fit# Generic matplotlib parameters for plots and figure…

数据结构入门 (二):挣脱连续空间的束缚 —— 单向链表详解

TOC(目录) 引言:整齐的代价 在上一篇文章中,我们一起探索了数据结构大家族的第一位成员——顺序表。我们了解到,顺序表作为一种线性结构,其最大的特点在于逻辑顺序与物理顺序的一致性,即元素之间不仅存在逻辑上的前后关…

AI-视频一致性与多帧控制在AIGC中的技术挑战与突破!

全文目录:开篇语前言1. 视频中人物一致性建模的难点与现有解决方案**人物一致性建模的挑战****现有解决方案****案例代码:基于姿态估计的多帧一致性保持**2. 光照/纹理/姿态跨帧保持方法剖析**跨帧光照与纹理一致性****跨帧姿态一致性**3. 帧间插值与关键…

基于Qwen2.5-3B-Instruct的LoRA微调与推理实战指南

前言 大语言模型(LLM)的微调是当前AI领域的热门话题,而参数高效微调方法(如LoRA)因其低成本和高效率备受关注。本文将手把手教你如何使用Qwen2.5-3B-Instruct模型进行LoRA微调,并构建完整的推理流程。 一、环境准备 1.1 硬件要求 • GPU: 至少16GB显存(如…

电脑插上u盘不显示怎么回事

对于经常使用电脑的用户来说,U盘是一种再熟悉不过的存储工具。不管是拷贝资料、备份文件,还是制作启动盘,U盘都发挥着重要作用。然而,有时候你可能会遇到这样的情况:“U盘插上电脑,灯亮了,但电脑…

2025年6月GESP(C++二级): 幂和数

2025年6月GESP(C++二级): 幂和数 题目描述 对于正整数 n n n,如果 n n n 可以表为两个

Windows、macOS、liunx下使用qemu搭建riscv64/linux

背景 在Windows、macOS和Linux环境下使用QEMU搭建RISC-V 64位Linux系统,网络上存在大量过时、不完整或错误的教程。且部分AI生成的内容“幻觉”现象严重,导致关键步骤错误且难以进行。为确保可靠性,本教程基于最新实测验证,涵盖三…

简单使用MCP

1、说明# 测试环境服务器 CPU数量:2核 内存:4GB 磁盘:50GB# 补充 如果不想使用Docker进行操作,只需要跳过Docker相关命令操作 即:使用Ollama运行模型,使用Python来创建MCP2、安装Docker# 安装Docker https:…

电脑装机软件一键安装管理器

软件使用 现在的装机软件很多,主要几种类型就是办公、看图、影音、下载等,如果每次装机之后,手动一个一个去安装,费时费力还容易安装到全家桶。 就有人整理了网络上常用的一系列装机软件纯净和谐版本,并打包到一起&a…

深度学习入门-深度学习简介

深度学习是加深了层的深度神经网络。只需通过叠加层,就可以创建深度网络。1、 加深网络将深度学习中的重要技术(构成神经网络的各种层、学习时的有效技巧、对图像特别有效的CNN、参数的最优化方法等)汇总起来,创建一个深度网络&am…

Linux 下安装DM8数据库详细教程

Linux 下安装DM8数据库详细教程 一、环境准备 1.操作系统要求 DM 数据库支持多种操作系统,如 Windows、Linux 等。对于 Linux 系统,确保内核版本符合要求,例如 CentOS 7 或更高版本。同时,要保证系统有足够的磁盘空间(建议至少 10GB 以上)和内存(至少 1GB 以上)。 对…

搭建基于Gitee文档笔记自动发布

搭建基于Gitee文档笔记自动发布由于现在gitee不支持代理静态页面,并且github.io需要VPN,实际使用的话gitee更为方便。一、为服务器和个人PC添加免密push和pull 参考链接:https://help.gitee.com/base/account/SSH%E5%85%AC%E9%92%A5%E8%AE%BE…

【Lua】闭包可能会导致的变量问题

先思考下面这个问题:local function counter()local count 0return function()count count 1return countend endlocal a counter() local b counter()print(a()) --> ? print(a()) --> ? print(b()) --> ? print(a()) --> ?输出结果&#xff…

可观测性、OpenTracing、OpenCensus、OpenTelemetry、Jaeger

监控与观测 随着软件应用从单片架构向分布式微服务体系转变,应用监控(Monitoring)和观测(Observability)的需求也随之提升。两者存在相同的定义,目的都是为了发现应用程序中的问题。但还是有差别: 监控:目的是为了捕获已知的问题…

Linux下使用原始socket收发数据包

在Linux系统中,使用非原始的socket,可以收发TCP或者UDP等网络层数据包。如果要处理网络层以下的数据包,比如ICMP、ARP等,或者更底层,比如链路层数据包,就得使用原始socket了。 创建socket 创建socket要使用…

暑期自学嵌入式——Day05补充(C语言阶段)

接续上文:暑期自学嵌入式——Day05(C语言阶段)-CSDN博客 主页点关注不迷路哟。你的点赞、收藏,一键三连,是我持续更新的动力哟!!! 主页: 一位搞嵌入式的 genius-CSDN博…

.NET Core EFCore零基础快速入门简单使用

一、什么是 Entity Framework (EF) Core Entity Framework (EF) Core 是轻量化、可扩展和跨平台版的对象关系映射程序 (O/RM)数据访问技术,。 它将开发人员从编写大量 SQL 语句中解放出来。 二、EF的相关程序包 Microsoft.EntityFrameworkCore 核心程序包&#x…

AAC音频格式

目录 AAC音频格式介绍 主要特点 技术优势 常见文件扩展名 应用领域 AAC与PCM的区别与优势对比 基本概念差异 主要技术区别 各自优势 PCM的优势 AAC的优势 应用场景选择 AAC音频数据格式解析 1. AAC 文件格式 (1) ADIF (Audio Data Interchange Format) (2) ADT…