如何使用BERT大規模生成元描述

[ad_1]

如何使用BERT大規模生成元描述

在過去的幾個月中,Google宣布了兩個已在Google搜索中投入生產並且也是開源的系統。任何人都可以看到他們的工作方式。

甚至在一年前,您都不認為Google搜索的Google開放源代碼部分是可行的。

不出所料,沒有很多最終指南可以幫助您優化BERT的網站。你不能

BERT可以幫助Google更好地理解某些查詢的意圖,並且與每個公告的頁面內容無關。

如果您讀過我的 深度學習 文章中,您不僅應該對BERT的工作原理有實際的了解,而且應該如何將其用於SEO目的–特別是對於 自動意圖分類

讓我們擴展它並涵蓋另一個用例:最新的文本摘要。

我們可以使用自動文本摘要來生成元描述,然後將其填充到沒有文字描述的頁面上。

為了說明這種強大的技術,我將自動下載並總結我的 上一篇 和往常一樣,我將分享Python代碼段,您可以遵循這些代碼段並適應您自己的網站或客戶的。

這是我們的行動計劃:

  • 討論自動文本摘要。
  • 了解如何找到可用於匯總的最新(SOTA)代碼。
  • 下載文本摘要代碼並準備環境。
  • 下載 我的最後一篇文章 並僅抓取頁面上的主要內容。
  • 使用抽象文本摘要來生成文本摘要。
  • 回顧一下PreSumm背後的概念。
  • 討論一些限制。
  • 最後,我將分享資源以了解更多信息和社區項目。

文本匯總以生成元描述

當我們擁有內容豐富的頁面時,我們可以利用自動文本摘要來大規模生成元描述。

根據輸出,有兩種主要的文本匯總方法:

  • 摘錄:我們將文本分為句子,然後根據它們作為整篇文章的摘要的有效程度對其進行排名。摘要將始終包含在文本中找到的句子。

  • 抽象性:我們生成可能新穎的句子,以捕捉文本的本質。

在實踐中,通常最好嘗試兩種方法,然後選擇能為您的網站帶來最佳效果的方法。

如何找到用於文本摘要的最新技術(SOTA)代碼

我最喜歡的查找尖端代碼和論文的地方是 帶代碼的文件

如果您瀏覽 最先進的部分,您可以找到許多類別中效果最好的研究。

如果我們將搜索範圍縮小到 文字摘要,我們可以找到本文: 使用預編碼器進行文本匯總,它利用了BERT。

從那裡,我們可以方便地找到指向 研究論文,最重要的是 實施研究。

如何使用BERT生成規模的元描述「 width =」 2384「 height =」 1290「 Size =」(最大寬度:2384px)100vw,2384px「 data-srcset =」 https://cdn.searchenginejournal.com/ wp-content / uploads / 2019/10 / global_rank-5db7cb0e3806e.png 2384w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/10/global_rank-5db7cb0e3806e-480x260.png 480w,https:// cdn.searchenginejournal.com/wp-content/uploads/2019/10/global_rank-5db7cb0e3806e-680x368.png 680w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/10/global_rank-5db7cb0e3806e-768x416 .png 768w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/10/global_rank-5db7cb0e3806e-1024x554.png 1024w,https://cdn.searchenginejournal.com/wp-content/uploads/2019 /10/global_rank-5db7cb0e3806e-1600x866.png 1600w「 data-src =」 https://cdn.searchenginejournal.com/wp-content/uploads/2019/10/global_rank-5db7cb0e3806e.png

如果出現優秀論文,經常檢查全球排名也是個好主意。

下載PreSum並設置環境

在Google Colab中創建一個筆記本,以執行後續步驟。

在研究人員的存儲庫中找到原始代碼後,很難使用這些代碼來生成摘要。

只需閱讀這篇文章,您就可以感受到痛苦 Github問題。 ?

我們將使用 分叉版本 回購和我簡化的一些簡化步驟 這個筆記本

首先,克隆存儲庫。

!git克隆https://github.com/mingchen62/PreSumm.git

然後安裝依賴項。

!pip install torch == 1.1.0 pytorch_transformers tensorboardX多進程pyrouge

接下來,我們需要下載預訓練的模型。

然後,我們需要解壓縮並將它們移動到組織的目錄中。

完成此步驟後,我們應該已準備好摘要軟體。

讓我們下載我們接下來要總結的文章。

創建一個文本文件進行匯總

正如我提到的,我們將總結我的上一篇文章。讓我們下載它並清理HTML,以便只剩下文章內容。

首先,讓我們創建保存輸入文件所需的目錄以及摘要的結果。

!mkdir / content / PreSumm / bert_data_test /
!mkdir / content / PreSumm / bert_data / cnndm

%cd / content / PreSumm / bert_data / cnndm

現在,讓我們下載文章並提取主要內容。我們將使用 CSS選擇器 僅刮擦帖子的正文。

如何使用BERT生成規模的元描述「 width =」 2464「 height =」 1280「 Size =」(最大寬度:2464px)100vw,2464px「 data-srcset =」 https://cdn.searchenginejournal.com/ wp-content / uploads / 2019/10 / body-selector-5db7d229c686b.png 2464w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/10/body-selector-5db7d229c686b-480x249.png 480w, https://cdn.searchenginejournal.com/wp-content/uploads/2019/10/body-selector-5db7d229c686b-680x353.png 680w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/10 /body-selector-5db7d229c686b-768x399.png 768w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/10/body-selector-5db7d229c686b-1024x532.png 1024w,https://cdn.searchenginejournal .com / wp-content / uploads / 2019/10 / body-selector-5db7d229c686b-1600x831.png 1600w「 data-src =」 https://cdn.searchenginejournal.com/wp-content/uploads/2019/10/body -selector-5db7d229c686b.png

文本輸出在一行中,我們將用下一個代碼將其拆分。text = text.splitlines(True)#保持換行

我刪除了包含贊助廣告代碼的第一行和包含某些文章元數據的後幾行。

text = text(1:-5)#刪除贊助商代碼並結束元數據

最後,我可以使用此代碼將文章內容寫到一個文本文件中。

>使用open(「 python-data-stories.txt」,「 a」)作為f:

  f.writelines(文字)

在此之後,我們準備進行摘要步驟。

生成文本摘要

我們將生成一個抽象摘要,但是在生成摘要之前,我們需要修改文件 summary.py

為了使事情簡單,我創建了一個 補丁文件 您可以使用以下代碼下載所做的更改。

!wget https://gist.githubusercontent.com/hamletbatista/f2741a3a74e4c5cc46ce9547b489ec36/raw/ccab9cc3376901b2f6b0ba0c4bbd03fa48c1b159/summarizer.patch

您可以在此處查看將要進行的更改。紅線將被刪除,綠線將被添加。

我從上面鏈接的筆記本中借用了這些更改,這些更改使我們能夠傳遞文件進行摘要並查看結果。

您可以使用此應用更改。

!patch <summaryer.patch

我們有最後的準備步驟。接下來的代碼下載摘要器所需的一些標記器。

導入NLTK
nltk.download('punkt')

最後,讓我們用以下代碼生成摘要。

#CNN_DM抽象

%cd / content / PreSumm / src

!python summaryr.py-任務abs-模式測試-test_from /content/PreSumm/models/CNN_DailyMail_Abstractive/model_step_148000.pt -batch_size 32 -test_batch_size 500 -bert_data_path ../bert_data/cnndm -log_file ../logs/val_abs_bert_rond_cn -sep_optim true -use_interval true -visible_gpus -1 -max_pos 512 -max_src_nsents 100 -max_length 200 -alpha 0.95 -min_length 50 -result_path ../results/abs_bert_cnndm_sample

這是部分輸出的樣子。

現在,讓我們回顧一下結果。

這應該顯示。

這是候選人摘要。

!ls -l / content / PreSumm /結果

這應該顯示。

這是候選人摘要。

!head /content/PreSumm/results/abs_bert_cnndm_sample.148000.candidate

(UNK)(UNK)(UNK):大量的情感故事和強大的故事隱藏在大量的數據中,等待被發現她說,這項活動非常有效,贏得了許多獎項,包括戛納國際創意節大獎(UNK):我們將從subreddit數據漂亮的地方重建流行的數據可視化

一些令牌,例如(UNK)和 需要解釋。 (UNK)代表BERT辭彙表中的一個單詞。您可以忽略這些。 是一個句子分隔符。

PreSumm如何工作

如何使用BERT生成規模的元描述「 width =」 2228「 height =」 1140「 Size =」(最大寬度:2228px)100vw,2228px「 data-srcset =」 https://cdn.searchenginejournal.com/ wp-content / uploads / 2019/10 / bertsum-5db7dda408295.png 2228w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/10/bertsum-5db7dda408295-480x246.png 480w,https:// cdn.searchenginejournal.com/wp-content/uploads/2019/10/bertsum-5db7dda408295-680x348.png 680w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/10/bertsum-5db7dda408295-768x393 .png 768w,https://cdn.searchenginejournal.com/wp-content/uploads/2019/10/bertsum-5db7dda408295-1024x524.png 1024w,https://cdn.searchenginejournal.com/wp-content/uploads/2019 /10/bertsum-5db7dda408295-1600x819.png 1600w「 data-src =」 https://cdn.searchenginejournal.com/wp-content/uploads/2019/10/bertsum-5db7dda408295.png

大多數傳統的提取性文本摘要化技術都依賴於複製被確定很好地包含在摘要中的文本部分。

這種方法雖然對許多用例有效,但是卻很局限,因為可能沒有句子可用於總結文本。

在之前的深度學習文章中,我比較了傳統/幼稚的文本匹配方法和在街道上按名稱查找業務的方法。

是的,它可以工作,但是將其與GPS系統允許的功能進行比較時,它是相當有限的。

我解釋了使用嵌入的能力取決於它們在空間中像坐標一樣運作的事實。當您使用坐標時(就像在GPS系統中一樣),無論如何命名事物(或使用哪種語言命名),它都仍然在同一地方。

BERT的另一個優勢是,根據上下文,同一單詞的坐標可以完全不同。例如,華盛頓州和喬治華盛頓大橋中的「華盛頓」一詞含義完全不同,編碼方式也有所不同。

但是,BERT和類似系統的最強大優勢是NLP任務不是從頭開始學習的,而是從預先訓練的語言模型開始的。

換句話說,在對諸如回答問題之類的特定任務進行微調之前,該模型至少了解該語言的細微差別,例如如何組織主題,副詞,介詞等。

PreSumm研究人員在總結中列出了他們工作中的三個主要貢獻:

  • 他們採用了BERT神經結構,以輕鬆學習完整的句子表示。考慮句子的詞嵌入,以便您可以輕鬆識別相似的詞。
  • 它們顯示出將預訓練的語言模型用於摘要任務的明顯好處。請參閱我的評論,為什麼這是有益的
  • 他們的模型可以用作構建更好的匯總模型的基礎。

匯總前的局限性

該推文強調了PreSumm和依賴預訓練模型的類似系統的明顯局限性之一。他們的寫作風格很大程度上受用於訓練他們的數據的影響。

PreSumm受過CNN和DailyMail文章的培訓。當用於生成小說小說章節的摘要時,摘要不是特別好。

目前,解決方案似乎是使用您所在域中的數據集重新訓練模型。

了解更多信息和社區項目的資源

這是一個 偉大的底漆 關於經典文本摘要。

幾個月前,我在DeepCrawl上介紹了文本摘要 網路研討會。那時,PreSumm的研究人員發布了他們的工作的早期版本,僅專註於提取性文本摘要。他們稱它為 BERTSum

我也有大多數相同的想法,但是很有趣的是,他們以多快的速度改進了工作以涵蓋抽象方法和提取方法。加上在這兩個類別中都達到了最先進的性能。

驚人的進步。

在談論進展時,Python SEO社區繼續讓每個人每個月都在努力並發布的新項目吸引我。

這是一些著名的例子。請隨時克隆他們的存儲庫,看看您可以改進或適應您的需求,然後將您的改進反饋回去!

圖片積分

作者截取的所有屏幕截圖,2019年10月
後期圖片: 使用預編碼器進行文本匯總

相關文章