基于ChatGPT的视频智能摘要实战

共 5197字,需浏览 11分钟

 ·

2023-06-03 00:12



d3c230b74dd634ece89fb3e7e6eafd37.webp


向AI转型的程序员都关注了这个号👇👇👇








随着在 YouTube 上提交的大量新视频,很容易感到挑战并努力跟上我想看的一切。我可以与我每天将视频添加到“稍后观看”列表中的经历联系起来,只是为了让列表变得越来越长,实际上并没有稍后再看。现在,像 ChatGPT 或 LLaMA 这样的大型语言模型为这个长期问题提供了一个潜在的解决方案。


通过将数小时的视频内容转换为几行准确的摘要文本,视频摘要器可以快速为我们提供视频的要点,这样我们就不必花费大量时间来完整观看它。在我创建这个网络应用程序之后,我最常使用的场景是参考它的摘要来决定某个视频是否值得观看,尤其是那些辅导、脱口秀或演示视频。





你可以通过多种方式使用强大的语言模型来完成此视频摘要。


一种选择是使用或设计 ChatGPT 插件,它可以将令人难以置信的 AI 连接到实时 YouTube 网站。但是,只有少数商业开发人员可以访问 ChatGPT 插件,因此这对包括我在内的所有人来说可能不是最可行的途径。


另一种选择是下载视频的抄本(字幕)并将其附加到提示中,然后要求语言模型通过发送提示来总结抄本文本。然而,这种方法有一个很大的缺点——你不能总结一个包含超过 4096 个标记的视频,这对于一个普通的谈话节目来说通常是 7 分钟左右。


一个更有前途的选择是使用上下文学习技术对转录本进行向量化,并使用向量向语言模型提示“摘要”查询。这种方法可以生成准确的答案,指示转录文本的摘要,并且不限制视频长度。


如果你有兴趣开发自己的上下文学习应用程序,我之前关于构建聊天机器人以学习和聊天文档的文章提供了一个很好的起点。通过一些细微的修改,我们可以应用相同的方法来创建我们自己的视频摘要器。在本文中,我将逐步指导你完成开发过程,以便你了解并复制自己的视频摘要器。





1、功能框图


在这个Video Summarizer应用程序中,我们以llama-index为基础,开发了一个Streamlit web应用程序,为用户提供视频URL的输入以及屏幕截图、文字记录和摘要内容的显示。使用 llamaIndex 工具包,我们不必担心 OpenAI 中的 API 调用,因为对嵌入使用的复杂性或提示大小限制的担忧很容易被其内部数据结构和 LLM 任务管理所覆盖。



ee33bbf833f7e3976ce0359df904e514.webp





你有没有想过为什么我在让 LLM 生成摘要时设计了几个查询而不是一个用于转录文本处理的查询?答案在于情境学习过程。当文档被送入 LLM 时,它会根据其大小分成块或节点。然后将这些块转换为嵌入并存储为向量。


当提示用户查询时,模型将搜索向量存储以找到最相关的块并根据这些特定块生成答案。例如,如果你在大型文档(如 20 分钟的视频转录本)上查询“文章摘要”,模型可能只会生成最后 5 分钟的摘要,因为最后一块与上下文最相关 的“总结”。


为了说明这个概念,请看下面的图表:



222bc3a8ceef288c3ec920ff9738b50f.webp





通过设计多个查询,我们可以促使 LLM 生成更全面的摘要,涵盖整个文档。我将在本文后面更深入地组织多个查询。


从第2章到第5章,我将重点介绍本项目中使用到的所有模块的基础知识和典型用法介绍。如果你愿意在没有这些技术背景的情况下立即开始编写整个 Video Summarizer 应用程序,建议你转到第 6 章。





2、Youtube 视频转录文本


总结 YouTube 视频的第一步是下载转录文本。有一个名为 youtube-transcript-api 的开源 Python 库可以完美满足我们的要求。


使用如下命令安装模块后,



82619e7649ed888f16a51b53062c4ace.webp


当视频提供英语以外的其他语言时,可以将它们添加到参数语言中,该参数语言作为包含不同语言的列表。


该库还提供“Formatter”方法来生成具有定义格式的转录数据。在这种情况下,我们只需要 JSON 格式即可进行进一步的步骤。


通过运行上面的代码,你会看到像这样的一个像样的转录文本:



a41db5793adc0a3bdf191fb7d94e8014.webp


4、LlamaIndex


LlamaIndex 是一个 Python 库,充当用户私有数据和大型语言模型 (LLM) 之间的接口。它有几个对开发人员有用的功能,包括连接到各种数据源、处理提示限制、创建语言数据索引、将提示插入数据、将文本拆分为更小的块以及提供查询索引的接口的能力 . 借助 LlamaIndex,开发人员无需实施数据转换即可将现有数据用于 LLM,管理 LLM 与数据的交互方式,并提高 LLM 的性能。


可以在此处查看完整的LlamaIndex文档。





以下是使用 LlamaIndex 的一般步骤:


安装包:



4bd3535175cdb3075dfe26e8fb5d3375.webp


SimpleDirectoryReader 是 LlamaIndex 工具集中的文件加载器之一。它支持在用户提供的文件夹下加载多个文件,在本例中,它是子文件夹“./data/”。这个神奇的加载器功能可以支持解析各种文件类型,如.pdf、.jpg、.png、.docx等,让您不必自己将文件转换为文本。在我们的应用程序中,我们只加载一个文本文件 (.json) 来包含视频转录数据


Step2 — 构建索引



749540d5bb837a009b55340c8f7909a2.webp





5、Web开发


与我文章中之前的项目一样,我们将继续使用方便的 Streamlit 工具集来构建 Video Summarizer 应用程序。


Streamlit 是一个开源的 Python 库,有助于创建交互式 Web 应用程序。它的主要目的是供数据科学家和机器学习工程师用来与他人分享他们的工作。借助 Streamlit,开发人员可以使用最少的代码创建应用程序,并且可以使用单个命令轻松地将它们部署到 Web。


它提供了多种可用于创建交互式应用程序的小部件。这些小部件包括按钮、文本框、滑块和图表。可以从其官方文档中找到所有小部件的用法。





Web 应用程序的典型 Streamlit 代码可以像下面这样简单:



332ac613b4ae4b663fd6ca5952d6fedf.webp



0f4ab99e97ecbb146654f9ba70cae451.webp



24af547a969148e240c1be561b20ed7c.webp






003309027cf33480587a771fd52650be.webp






f61558d79b688000d1273051a0c3838c.webp



a17fd75f31a817227d7430b63cbb7514.webp



3d61e5efc422ee0106c57ea5f9c5a69c.webp



79f9955124a3d1502eb6d0742a0e5085.webp



0b7061c30cec09d8e6f11af8c1e1af9e.webp



5c274446662c181a81899cae1d1c0ba4.webp


将代码保存到 Python 文件“demo.py”,创建一个 ./data/ 文件夹,然后运行命令:


!python -m streamlit run demo.py


Video Summarizer 现已准备就绪,能够简单而有效地执行其任务。


注意——请从一段短视频开始测试,因为长视频会花费你大量的 OpenAI API 使用费。在继续之前,还请检查视频是否启用文本转录。



机器学习算法AI大数据技术





 搜索公众号添加: 

datanlp








长按图片,识别二维码










阅读过本文的人还看了以下文章:







TensorFlow 2.0深度学习案例实战







基于40万表格数据集TableBank,用MaskRCNN做表格检测







《基于深度学习的自然语言处理》中/英PDF







Deep Learning 中文版初版-周志华团队







【全套视频课】最全的目标检测算法系列讲解,通俗易懂!







《美团机器学习实践》_美团算法团队.pdf







《深度学习入门:基于Python的理论与实现》高清中文PDF+源码






《深度学习:基于Keras的Python实践》PDF和代码






特征提取与图像处理(第二版).pdf






python就业班学习视频,从入门到实战项目






2019最新《PyTorch自然语言处理》英、中文版PDF+源码






《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码






《深度学习之pytorch》pdf+附书源码






PyTorch深度学习快速实战入门《pytorch-handbook》






【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》






《Python数据分析与挖掘实战》PDF+完整源码






汽车行业完整知识图谱项目实战视频(全23课)






李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材






笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!






《神经网络与深度学习》最新2018版中英PDF+源码






将机器学习模型部署为REST API






FashionAI服装属性标签图像识别Top1-5方案分享






重要开源!CNN-RNN-CTC 实现手写汉字识别






yolo3 检测出图像中的不规则汉字






同样是机器学习算法工程师,你的面试为什么过不了?






前海征信大数据算法:风险概率预测






【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类






VGG16迁移学习,实现医学图像识别分类工程项目






特征工程(一)






特征工程(二) :文本数据的展开、过滤和分块






特征工程(三):特征缩放,从词袋到 TF-IDF






特征工程(四): 类别特征






特征工程(五): PCA 降维






特征工程(六): 非线性特征提取和模型堆叠






特征工程(七):图像特征提取和深度学习






如何利用全新的决策树集成级联结构gcForest做特征工程并打分?






Machine Learning Yearning 中文翻译稿






蚂蚁金服2018秋招-算法工程师(共四面)通过






全球AI挑战-场景分类的比赛源码(多模型融合)






斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)






python+flask搭建CNN在线识别手写中文网站






中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程









不断更新资源




深度学习、机器学习、数据分析、python





 搜索公众号添加: 

datayx  







浏览 59
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报