[ad_1]
搜索引擎的運作方式發生了重大變化,應該質疑我們對SEO的傳統看法:
- 研究關鍵詞。
- 寫內容。
- 建立鏈接。
如今,即使關鍵字不存在,搜索引擎也能夠匹配頁面。他們在直接回答問題方面也越來越好。
與此同時,搜索者越來越習慣使用自然語言查詢。我甚至發現越來越多的證據表明新網站在沒有建立鏈接的情況下排名競爭性條款。
Google最近的研究甚至質疑了一個基本的內容營銷框架: 買方的旅程。
其 結論 是我們不應該再考慮遊客從意識到決策的線性路徑。我們應該 適應獨特的道路 由每個潛在客戶採取。
考慮到所有這些重大變化,我們如何適應?
當然,使用機器學習!
自動化一切:機器學習可以幫助您以手動無法實現的方式理解和預測意圖。
在本文中,您將學習如何做到這一點。
這是一個非常重要的話題,我將離開我強烈的編碼會議 過去的文章。我會詳細介紹Python代碼,使其適用於整個SEO社區。
以下是我們的行動計劃:
- 我們將學習如何使用深度學習對文本進行分類,而無需編寫代碼。
- 我們將通過建立BBC新聞文章培訓的分類模型來實踐。
- 我們將根據Google趨勢中的新聞標題測試該模型。
- 我們將構建一個類似的模型,但我們將在不同的數據集上訓練它,並根據其意圖分組問題。
- 我們將使用Google Data Studio從Google Search Console中提取潛在問題。
- 我們將使用該模型對從Data Studio導出的問題進行分類。
- 我們將根據他們的意圖對問題進行分組,並提取可用於確定內容開發工作優先順序的可操作見解。
- 我們將討論使這成為可能的基本概念:單詞向量,嵌入和編碼器/解碼器。
- 我們將構建一個複雜的模型,不僅可以解析意圖,還可以解析您為Siri和Alexa提供的特定操作。
- 最後,我將分享一些資源以了解更多信息。
優步路德維希
使用深度學習完成上面描述的計劃通常需要編寫高級Python代碼。
幸運的是,優步發布了一個名為的超級有價值的工具 路德維希 這樣就可以非常輕鬆地構建和使用預測模型。
我們將從內部運行路德維希 Google Colaboratory 為了使用他們的免費GPU運行時。
在不使用GPU的情況下培訓深度學習模型可能是等待幾分鐘到等待時間之間的區別。
自動文本分類
為了構建預測模型,我們需要相關的標記數據和模型定義。
讓我們直接從一個簡單的文本分類模型練習 路德維希的例子。
我們將使用按類別組織的BBC文章的標籤數據集。這個 文章 應該讓你了解我們不必做的編碼水平,因為我們正在使用路德維希。
設置路德維希
Google Colab附帶張量流1.12。讓我們確保使用Ludwig所期望的正確版本,並確保它支持GPU運行時。
在Runtime菜單項下,選擇Python 3和GPU。
!pip install tensorflow-gpu == 1.13.1!pip install ludwig
準備數據集進行培訓
下載BBC標記的數據集。
!gsutil cp gs://dataset-uploader/bbc/bbc-text.csv。
讓我們創建一個模型定義。我們將使用第一個 例子。
運行Ludwig來構建和評估模型
!ludwig experiment –data_csv bbc-text.csv –model_definition_file model_definition.yaml
當您查看Ludwig的輸出時,您會發現它可以幫助您避免執行您需要的任務 手動執行。例如,它會自動將數據集拆分為培訓,開發和測試數據集。
訓練集:1556
驗證集:215
測試集:454
我們的訓練步驟在12個時期後停止。這個 Quora回答 提供了對時期,批次和迭代的很好的解釋。
我們的測試精度僅為0.70,與參考文章中手動實現的0.96相比相形見絀。
儘管如此,這是非常有希望的,因為我們不需要任何深入的學習專業知識,只需要一小部分工作。我將就如何在資源部分改進模型提供一些指導。
可視化培訓過程
讓我們用新數據測試模型
我們用這個吧 JavaScript代碼段 刮掉Google趨勢文章標題以提供給模型。
在使用文章標題創建熊貓數據框後,我們可以繼續從訓練模型中獲取預測。
以下是全球頂級類別的預測結果。
我從技術和業務部門中刪除了頭條新聞,雖然技術部門預測不是特別好,但業務部門顯示出更多的承諾。
我會說司法部追求谷歌肯定不是娛樂。不是谷歌肯定!
自動問題分類
我們將使用完全相同的過程和模型,但是在a 不同的數據集 這將使我們能夠做更強大的事情:學會根據他們的意圖對問題進行分類。
登錄到Kaggle並下載數據集後,您可以使用該代碼將其載入到Colab中的數據框。
這個令人敬畏的數據集根據預期答案的類型將問題分組,使用更廣泛和更具體的兩個類別。
我通過添加新的輸出類別更新了模型定義,因此我們現在有兩個預測。
培訓過程是一樣的。我只更改了源數據集。
!ludwig experiment –data_csv Question_Classification_Dataset.csv –model_definition_file model_definition.yaml
當我們審查培訓輸出時,我們看到每個類別都是單獨培訓的,並分別進行評估和組合。
訓練在第14紀元停止,我們得到的綜合測試精度為0.66。雖然我們付出了少量努力,但並不是很好,但也不是很糟糕。
讓我們使用Google Search Console數據測試模型
我整理了一個Google Data Studio 報告 您可以克隆以從Google Search Console中提取長搜索查詢。根據我的經驗,這些通常都是問題。
我用一個小技巧創建了一個新欄位來計算單詞。我刪除單詞並計算空格。然後我創建了一個過濾器來排除少於6個單詞的短語。隨意更新以反映您的客戶站點的數據。
通過在VIEW模式下單擊報告右上角的三個點來導出搜索控制台數據。使用我在上面分享的相同代碼將其上傳到Google Colab。
我們可以使用此代碼獲得預測
這就是他們的樣子。
在我的數據集中,我們對從Google Search Console提取的2656個查詢的意圖進行了分類。考慮到努力,相當驚人。
通過調整模型定義和增加訓練數據的數量和質量,有很大的空間來提高準確性。這是您通常在深度學習項目中花費大部分時間的地方。
切實可行的見解
由於我們還從搜索控制台中提取點擊次數和搜索展示次數數據,因此我們可以根據預測的類別對數千個關鍵字進行分組,同時總結其展示次數和點擊次數。
我們希望查找搜索展示次數較多但點擊次數較少的問題組。這將有助於確定內容開發工作的優先順序。
test_df.join(predictions)((「Query」,「Category0_predictions」,「Clicks」,「Impressions」))。groupby(「Category0_predictions」)。sum()
例如,我們可以看到很多實體的搜索需求(32795),但點擊次數很少(518)。
我會將第二個更細粒度的類別的分組點擊次數和展示次數作為讀者的練習。
理解自然語言處理
我將使用一個非常簡單的類比來解釋當您使用深度學習時自然語言處理(NLP)的工作原理。
在我的 TechSEO提升談話 去年,我通過上面的插圖解釋了深度學習的工作原理。
將原始數據(上述示例中的圖像)編碼到潛在空間中,然後將潛在空間表示解碼為預期變換,其也是原始數據。
在解釋路德維希如何運作時,優步使用了類似的圖表。
為了訓練模型來對文本或問題進行分類,我們首先需要將單詞編碼為向量,更具體地說是單詞嵌入。
這些是所有SEO都必須理解的非常重要的概念,所以讓我們用一個類比來說明這一點:物理地址和GPS系統。
知道某事物的名稱和知道某事物之間有很大的不同。 pic.twitter.com/Z6v6Arwy5x
– 理查德費曼(@ProfFeynman) 2019年5月18日
在物理世界中通過名稱查找業務,並通過其地址或GPS坐標查找業務之間存在很大差異。
按名稱查找商家相當於通過內容中的關鍵字匹配搜索和頁面。
谷歌在紐約的實際地址是 第八大道111號。在西班牙語中,它是111 octava avenida。在日本111番街。如果你在附近,你可以用塊數和轉數來表示它。你明白了。
換句話說,它是同一個地方,但當被問及方向時,不同的人會根據他們的特定背景以不同的方式引用這個地方。
當人們以許多不同的方式提到同一件事時,同樣的事情就會發生。計算機需要一種通用的方式來引用與上下文無關的事物。
單詞向量代表單詞作為數字。您通常會獲取源文本中的所有唯一單詞,並構建一個字典,其中每個單詞都有一個數字。
例如,這相當於將第八大道中的所有商業名稱轉換為街道號碼,在第八大道上是第114號。
這個初始步驟很好,能夠唯一地識別單詞或街道地址,但不足以輕鬆地計算全局地址之間的距離並提供方向。我們還需要使用絕對坐標編碼接近度信息。
說到GPS坐標所做的物理地址。谷歌在紐約市的地址有GPS坐標40°44'29「N 74°0'11」W,而Pad Thai Noodle Lounge有40°44'27「N 74°0'5」W,非常接近。
類似地,當談到單詞時,這就是嵌入字的作用。嵌入本質上是絕對坐標,但具有數百個維度。
想像一下,在一個假想的空間中,將詞嵌入作為GPS坐標,其中相似的詞靠近在一起,不同的詞相隔很遠。
由於單詞嵌入和GPS坐標只是簡單的向量,它們只是具有多個維度的數字,因此它們可以像常規數字(標量)一樣進行操作。
同樣,您可以通過減去它們來計算兩個數字之間的差異,也可以使用數學運算計算兩個向量之間的差異(它們的距離)。最常見的是:
讓我們把它帶回家,看看單詞向量和嵌入在實踐中是如何實際看起來的,以及它們如何使得比較相似單詞變得容易。
這是「酒店」一詞的矢量表示。
這就是這種矢量方法可以很容易地比較相似的單詞。
因此,總之,當我們向Ludwig提供訓練文本時,Ludwig將這些單詞編碼為矢量/嵌入,以便於計算它們的距離/相似度。
實際上,嵌入是預先計算並存儲在查找表中,這有助於加快培訓過程。
超越意圖分類
現在,讓我們做一些更有野心的事情。讓我們構建一個模型,它可以解析文本並提取操作以及完成操作所需的任何信息。
例如:「預定晚上7點到倫敦的航班」,不應該只是了解預定航班的意圖,而是出發時間和出發城市。
Ludwig在自然語言理解部分下包含了這種模型的一個例子。
我們打算用 這個標記的數據集 這是旅遊業特有的。登錄Kaggle並下載後,您可以將其上傳到Colab,如前面的示例所示。
它是一個zip文件,因此您需要解壓縮它。
!解壓縮atis-dataset-clean.zip
這是模型定義。
我們像往常一樣運行Ludwig訓練模型。
!ludwig experiment –data_csv atis.train.csv –model_definition_file model_definition.yaml
在我的運行中,它在第20紀元之後停止並且達到了0.74的組合測試精度。
以下是從測試數據集中獲取預測的代碼。
最後,這是預測的樣子。
資源以了解更多信息
如果您不是技術人員,這可能是您學習深度學習及其可能性的最佳課程: AI For Everyone。
如果您有技術背景,我推薦這個專業: Andrew Ng的深度學習。我也完成了一個 Udacity 去年,但我發現NLP的報道在Coursera中更為深入。
第三個模塊, 構建機器學習項目,它的方法非常有價值和獨特。本課程中的材料將提供您減少模型預測中的錯誤所需的一些關鍵知識。
我寫這篇文章的靈感來自於出色的工作 關鍵字分類 通過 丹布魯克斯 來自Aira SEO團隊。
圖片來源
所有截圖均由作者拍攝,2019年6月