基于ChatGPT的視頻智能摘要實戰(zhàn)

向AI轉(zhuǎn)型的程序員都關注了這個號??????
隨著在 YouTube 上提交的大量新視頻,很容易感到挑戰(zhàn)并努力跟上我想看的一切。我可以與我每天將視頻添加到“稍后觀看”列表中的經(jīng)歷聯(lián)系起來,只是為了讓列表變得越來越長,實際上并沒有稍后再看。現(xiàn)在,像 ChatGPT 或 LLaMA 這樣的大型語言模型為這個長期問題提供了一個潛在的解決方案。
通過將數(shù)小時的視頻內(nèi)容轉(zhuǎn)換為幾行準確的摘要文本,視頻摘要器可以快速為我們提供視頻的要點,這樣我們就不必花費大量時間來完整觀看它。在我創(chuàng)建這個網(wǎng)絡應用程序之后,我最常使用的場景是參考它的摘要來決定某個視頻是否值得觀看,尤其是那些輔導、脫口秀或演示視頻。
你可以通過多種方式使用強大的語言模型來完成此視頻摘要。
一種選擇是使用或設計 ChatGPT 插件,它可以將令人難以置信的 AI 連接到實時 YouTube 網(wǎng)站。但是,只有少數(shù)商業(yè)開發(fā)人員可以訪問 ChatGPT 插件,因此這對包括我在內(nèi)的所有人來說可能不是最可行的途徑。
另一種選擇是下載視頻的抄本(字幕)并將其附加到提示中,然后要求語言模型通過發(fā)送提示來總結抄本文本。然而,這種方法有一個很大的缺點——你不能總結一個包含超過 4096 個標記的視頻,這對于一個普通的談話節(jié)目來說通常是 7 分鐘左右。
一個更有前途的選擇是使用上下文學習技術對轉(zhuǎn)錄本進行向量化,并使用向量向語言模型提示“摘要”查詢。這種方法可以生成準確的答案,指示轉(zhuǎn)錄文本的摘要,并且不限制視頻長度。
如果你有興趣開發(fā)自己的上下文學習應用程序,我之前關于構建聊天機器人以學習和聊天文檔的文章提供了一個很好的起點。通過一些細微的修改,我們可以應用相同的方法來創(chuàng)建我們自己的視頻摘要器。在本文中,我將逐步指導你完成開發(fā)過程,以便你了解并復制自己的視頻摘要器。
1、功能框圖
在這個Video Summarizer應用程序中,我們以llama-index為基礎,開發(fā)了一個Streamlit web應用程序,為用戶提供視頻URL的輸入以及屏幕截圖、文字記錄和摘要內(nèi)容的顯示。使用 llamaIndex 工具包,我們不必擔心 OpenAI 中的 API 調(diào)用,因為對嵌入使用的復雜性或提示大小限制的擔憂很容易被其內(nèi)部數(shù)據(jù)結構和 LLM 任務管理所覆蓋。

你有沒有想過為什么我在讓 LLM 生成摘要時設計了幾個查詢而不是一個用于轉(zhuǎn)錄文本處理的查詢?答案在于情境學習過程。當文檔被送入 LLM 時,它會根據(jù)其大小分成塊或節(jié)點。然后將這些塊轉(zhuǎn)換為嵌入并存儲為向量。
當提示用戶查詢時,模型將搜索向量存儲以找到最相關的塊并根據(jù)這些特定塊生成答案。例如,如果你在大型文檔(如 20 分鐘的視頻轉(zhuǎn)錄本)上查詢“文章摘要”,模型可能只會生成最后 5 分鐘的摘要,因為最后一塊與上下文最相關 的“總結”。
為了說明這個概念,請看下面的圖表:

通過設計多個查詢,我們可以促使 LLM 生成更全面的摘要,涵蓋整個文檔。我將在本文后面更深入地組織多個查詢。
從第2章到第5章,我將重點介紹本項目中使用到的所有模塊的基礎知識和典型用法介紹。如果你愿意在沒有這些技術背景的情況下立即開始編寫整個 Video Summarizer 應用程序,建議你轉(zhuǎn)到第 6 章。
2、Youtube 視頻轉(zhuǎn)錄文本
總結 YouTube 視頻的第一步是下載轉(zhuǎn)錄文本。有一個名為 youtube-transcript-api 的開源 Python 庫可以完美滿足我們的要求。
使用如下命令安裝模塊后,

當視頻提供英語以外的其他語言時,可以將它們添加到參數(shù)語言中,該參數(shù)語言作為包含不同語言的列表。
該庫還提供“Formatter”方法來生成具有定義格式的轉(zhuǎn)錄數(shù)據(jù)。在這種情況下,我們只需要 JSON 格式即可進行進一步的步驟。
通過運行上面的代碼,你會看到像這樣的一個像樣的轉(zhuǎn)錄文本:

4、LlamaIndex
LlamaIndex 是一個 Python 庫,充當用戶私有數(shù)據(jù)和大型語言模型 (LLM) 之間的接口。它有幾個對開發(fā)人員有用的功能,包括連接到各種數(shù)據(jù)源、處理提示限制、創(chuàng)建語言數(shù)據(jù)索引、將提示插入數(shù)據(jù)、將文本拆分為更小的塊以及提供查詢索引的接口的能力 . 借助 LlamaIndex,開發(fā)人員無需實施數(shù)據(jù)轉(zhuǎn)換即可將現(xiàn)有數(shù)據(jù)用于 LLM,管理 LLM 與數(shù)據(jù)的交互方式,并提高 LLM 的性能。
可以在此處查看完整的LlamaIndex文檔。
以下是使用 LlamaIndex 的一般步驟:
安裝包:

SimpleDirectoryReader 是 LlamaIndex 工具集中的文件加載器之一。它支持在用戶提供的文件夾下加載多個文件,在本例中,它是子文件夾“./data/”。這個神奇的加載器功能可以支持解析各種文件類型,如.pdf、.jpg、.png、.docx等,讓您不必自己將文件轉(zhuǎn)換為文本。在我們的應用程序中,我們只加載一個文本文件 (.json) 來包含視頻轉(zhuǎn)錄數(shù)據(jù)
Step2 — 構建索引

5、Web開發(fā)
與我文章中之前的項目一樣,我們將繼續(xù)使用方便的 Streamlit 工具集來構建 Video Summarizer 應用程序。
Streamlit 是一個開源的 Python 庫,有助于創(chuàng)建交互式 Web 應用程序。它的主要目的是供數(shù)據(jù)科學家和機器學習工程師用來與他人分享他們的工作。借助 Streamlit,開發(fā)人員可以使用最少的代碼創(chuàng)建應用程序,并且可以使用單個命令輕松地將它們部署到 Web。
它提供了多種可用于創(chuàng)建交互式應用程序的小部件。這些小部件包括按鈕、文本框、滑塊和圖表??梢詮钠涔俜轿臋n中找到所有小部件的用法。
Web 應用程序的典型 Streamlit 代碼可以像下面這樣簡單:










將代碼保存到 Python 文件“demo.py”,創(chuàng)建一個 ./data/ 文件夾,然后運行命令:
!python -m streamlit run demo.py
Video Summarizer 現(xiàn)已準備就緒,能夠簡單而有效地執(zhí)行其任務。
注意——請從一段短視頻開始測試,因為長視頻會花費你大量的 OpenAI API 使用費。在繼續(xù)之前,還請檢查視頻是否啟用文本轉(zhuǎn)錄。
機器學習算法AI大數(shù)據(jù)技術
?搜索公眾號添加:? datanlp
長按圖片,識別二維碼
閱讀過本文的人還看了以下文章:
基于40萬表格數(shù)據(jù)集TableBank,用MaskRCNN做表格檢測
《深度學習入門:基于Python的理論與實現(xiàn)》高清中文PDF+源碼
python就業(yè)班學習視頻,從入門到實戰(zhàn)項目
2019最新《PyTorch自然語言處理》英、中文版PDF+源碼
《21個項目玩轉(zhuǎn)深度學習:基于TensorFlow的實踐詳解》完整版PDF+附書代碼
PyTorch深度學習快速實戰(zhàn)入門《pytorch-handbook》
【下載】豆瓣評分8.1,《機器學習實戰(zhàn):基于Scikit-Learn和TensorFlow》
《Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》PDF+完整源碼
汽車行業(yè)完整知識圖譜項目實戰(zhàn)視頻(全23課)
李沐大神開源《動手學深度學習》,加州伯克利深度學習(2019春)教材
筆記、代碼清晰易懂!李航《統(tǒng)計學習方法》最新資源全套!
《神經(jīng)網(wǎng)絡與深度學習》最新2018版中英PDF+源碼
重要開源!CNN-RNN-CTC 實現(xiàn)手寫漢字識別
【Keras】完整實現(xiàn)‘交通標志’分類、‘票據(jù)’分類兩個項目,讓你掌握深度學習圖像分類
VGG16遷移學習,實現(xiàn)醫(yī)學圖像識別分類工程項目
特征工程(二) :文本數(shù)據(jù)的展開、過濾和分塊
如何利用全新的決策樹集成級聯(lián)結構gcForest做特征工程并打分?
Machine Learning Yearning 中文翻譯稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
python+flask搭建CNN在線識別手寫中文網(wǎng)站
中科院Kaggle全球文本匹配競賽華人第1名團隊-深度學習與特征工程
不斷更新資源
深度學習、機器學習、數(shù)據(jù)分析、python
?搜索公眾號添加:? datayx??
