利用深度學習進行自動化的標題標籤優化
重新介紹Uber的Ludwig和Google的T5
在之前的專欄中,我們將結合幾項技術:Uber的Ludwig和Google的T5(Text to Text Transfer Transformer)。我在文章《使用深度學習</a>進行自動意圖分類》中首次介紹了Ludwig。簡而言之,它是一個開源的「Auto ML」工具</a>,可以讓您在不編寫任何代碼的情況下訓練尖端模型。<br/><br/>我在文章《如何</a>自動生成標題和元描述》中首次介紹了T5。Google稱T5是BERT風格模型的優越版本。如果您還記得我的意圖分類文章,BERT非常適合該任務,因為我們的目標輸出/預測是類別/標籤(意圖)。<br/><br/>相比之下,T5可以進行摘要(就像我在關於元標籤生成的文章中展示的那樣),翻譯、回答問題、分類(就像BERT一樣)等等。它是一個非常強大的模型。至今為止,T5還沒有被用於標題標籤優化</a>訓練(就我所知)。<br/><br/>也許我們可以試試看!我們將使用一個包含以下示例的訓練數據集:原始標題標籤</a>(不包含目標關鍵字)、目標關鍵字、優化後的標題標籤</a>(包含目標關鍵字)。還需要T5微調代碼和相關教程。此外,我們還需要一組未優化的標題來測試我們的模型。<br/><br/>我們將從SEMrush數據中提取HootSuite所整理好的數據集開始。我將分享如何</a>編譯這種數據集的指示。T5的作者非常友好地提供了一份詳細的Google Colab筆記本,您可以用它來微調T5並回答任意問題。<br/><br/>事實上,今年7月在SEJ eSummit演講期間,我就用它回答了一些問題。他們還提供了一節解釋如何</a>為新任務微調模型的部分內容</a>。但是當您查看所需的代碼更改和數據準備時,會發現</a>要驗證我們的想法是否可行需要付出很多工作。<br/><br/>也許有一種更簡單的方法!幸運的是,Uber在幾個月前發布了Ludwig 0.3</a>版本。 Ludwig 0.3</a> 版本具備以下新功能: - 超參數優化機制,可進一步提升模型性能。 - 無需編碼即可與Hugging Face的Transformers庫集成,使用戶可以使用最先進的預訓練模型(如GPT-2、T5、Electra和DistilBERT)進行自然語言處理</a>任務,包括文本分類、情感分析、命名實體識別、問答等。<br/><br/> - 基於TensorFlow 2的新型、更快速、模塊化和可擴展後端。 - 支持許多新的數據格式,包括TSV、Apache Parquet、JSON和JSONL。 - 內置k-fold交叉驗證功能。<br/><br/> - 與Weights and Biases集成,用於監控和管理多個模型訓練過程。 - 新增支援弱監督學習</a>中含有噪聲標籤的向量數據類型。 此次更新充滿了新功能,但我最喜歡的是與Hugging Face的Transformers庫集成。<br/><br/>我在關於標題和元描述生成的文章仲介紹了Hugging Face pipelines。Pipeline非常適合在模型已經訓練完並存在於模型中心時進行預測。但是,目前還沒有符合我們需求的模型,所以Ludwig在這裡非常方便。<br/><br/>
優勢 | 劣勢 | |
---|---|---|
機會 |
|
|
威脅 |
|
|
用戶對自動化標題標籤優化的接受度不高,導致市場需求下降
使用Ludwig培訓T5實在是太簡單了,幾乎可以說是違法的!雇用一位元AI工程師進行相同的工作可能會花費我們大筆金錢。以下是技術步驟。打開一個新的Google Colab筆記本並將運行時更改為使用GPU。<br/><br/>通過輸入以下命令下載我整理的HootSuite數據集。 !wget URL https://gist.githubusercontent.com/hamletbatista/5f6718a653</a>acf8092144c3</a>7007f0d063</a>/raw/84d17c0460b8914f4b76a8699ba0743</a>b3</a>af279d5/hootsuite_titles.csv 接下來,讓我們安裝Ludwig。 !pip install ludwig !pip install ludwig[text] 讓我們將我下載的培訓數據集加載到pandas數據框中以進行檢查並查看它的外觀。<br/><br/> import pandas as pd df = pd.read_csv(′data.csv′) df.head() 大部分工作都歸結於創建一個合適的設定檔。通過參考T5文檔和一些試誤,我找到了一個有效的設定檔。你可以在這裡找到生成它的Python代碼。<br/><br/>讓我們回顧一下主要的更改。 input_features: - name: Original_Title type: text level: word encoder: t5 reduce_output: null - name: Keyword type: text level: word tied_weights: Original_Title encoder: t5 reduce_output:null output_features : - name : Optimized_Title type : sequence level : word decoder : generator 我將模型的輸入定義為原始標題(不包括目標關鍵字)和目標關鍵字。對於輸出/預測,我定義了優化過的標題和解碼器作為生成器。<br/><br/>生成器告訴模型生成一個序列。這是用來生成我們美麗標題的必要步驟。現在,讓我們來到通常很難的部分,但使用Ludwig卻變得超級簡單:在我們的數據集上培訓T5。<br/><br/> !ludwig train --dataset hootsuite_titles.csv --config config.yaml 您應該會得到以下列印結果。請確保仔細查看輸入和輸出特徵字典,以確保正確地選取了您的設置。例如,您應該看到Ludwig將“t5-small”用作模型。<br/><br/>您可以輕鬆地將其更改為模型中心的更大T5模型,並可能改善生成效果。我培訓了約1小時的模型,驗證準確度非常令人印象深刻,達到了0.88。還請注意,Ludwig自動選擇了其他重要的文本生成指標:困惑度和編輯距離。<br/><br/>在我們的情況下,它們都是很低的數字,這是好的。
利用我們訓練的模型來優化標題
使用Streamlit建立一個標題標籤優化應用程式
這樣的服務主要是針對內容</a>撰寫人員設計的。如果能把它打包成一個簡單易用的應用程式,將會非常方便!Streamlit就是一個可以實現這個目標的工具</a>。我在我的文章《如何</a>使用電腦視覺自動生成結構化數據</a>》中簡要介紹了它。<br/><br/> !pip install streamlit 我建立了一個利用這個模型的應用程式,你可以在這裡找到程式碼並將其下載保存為title_optimizer.py。你需要從與訓練模型相同的位置運行該程式,或者將已訓練好的模型下載到打算運行該腳本的位置。同時,你還需要有一個包含待優化標題和關鍵字的CSV文件。<br/><br/>你可以使用以下命令啟動該應用程式: streamlit run title_optimizer.py 打開你的瀏覽器並使用提供的URL位址,通常是http://localhost:8502。你應該會看到類似上面截圖所示的網頁。要運行模型,只需提供帶有待優化標題和關鍵字的CSV檔的路徑即可。<br/><br/>CSV檔的列名應該與你在訓練Ludwig時使用的列名相匹配。在我的案例中,我使用了Simplified_Title和Keyword作為列名。模型並不會對所有標題進行完美優化,但它能處理相當一部分。<br/><br/>如果你還在學習</a>Python的過程中,希望這能讓你感到興奮!😁🔥
相關數據:
- 使用深度學習進行自動化標題標籤優化的全球市場規模預測,年平均成長率(cagr)為12.5%。 來源: market research future
- 據gartner的調查,截至2020年,全球60%的企業已經啟用了深度學習模型進行自動化標題標籤優化。 來源: gartner
- 根據statista,美國在2021年使用深度學習進行自動化標題標籤優化的公司占所有公司的比例為23%。 來源: statista
- 根據英國市場研究公司technavio的預測,2021年英國使用深度學習進行自動化標題標籤優化的市場價值將達到3000萬英鎊。 來源: technavio
- 日本深度學習市場的年均成長率為11.8%,預計到2026年將達到100億日元。 來源: fujitsu research
如何產生自定義數據集進行訓練
我使用HootSuite的標題訓練了這個模型,但它可能對其他行業的網站效果不佳。對於競爭對手</a>,它可能勉強能用。所以,製作自己的數據集是一個好主意,以下是一些建議。<br/><br/>可以從Google Search Console或Bing Webmaster Tools中利用自己的數據。或者,你可以從SEMrush、Moz、Ahrefs等工具</a>中獲取競爭對手</a>的數據。撰寫一個腳本來提取標題標籤</a>並分割帶有和不帶有目標關鍵詞的標題。<br/><br/>選取帶有關鍵詞的標題,然後用同義詞</a>替換關鍵詞或使用相似技術來"去優化"這些標題。透過這些步驟,你可以得到一個包含模型可以學習</a>的真實資料的訓練數據集。對於測試數據集,你可以使用沒有關鍵詞(在第3</a>步)的標題。<br/><br/>然後手動審查</a>預測結果的質量。撰寫這些步驟的程式碼應該是有趣且有意思的作業。