如何利用BERT大規模生成元描述
產生元描述的文本摘要
當我們有內容</a>豐富的網頁時,可以利用自動文字摘要技術來批量生成描述。根據輸出結果,文字摘要主要有兩種方法:抽取式和生成式。在抽取式方法中,我們將文本分成句子並根據其對整篇文章的總結效果進行排序,摘要內容</a>必定包含原文中的句子。<br/><br/>而在生成式方法中,我們創造出能捕捉到文本核心意義的可能是新的句子。實際操作中,一般建議嘗試兩種方法並選擇對您的網站效果最好的那一種。
優勢 | 劣勢 | |
---|---|---|
機會 |
|
|
威脅 |
|
|
如果使用不當,bert批量生成meta描述可能會導致生成出來的描述不具有準確性和吸引力,從而降低用戶點擊率
我最喜歡找尖端程式碼和論文的地方是Papers with Code。如果你瀏覽"最新技術"部分,你可以找到許多類別中表現最佳的研究。如果我們將搜索範圍縮小到文本摘要,我們就可以找到這篇論文:使用預訓練的編碼器進行文本摘要,它利用了BERT。<br/><br/>從那裡,我們可以方便地找到連結到研究論文以及實現該研究的程式碼。定期檢查全球排名也是一個好主意,以防出現更優秀的論文。
下載PreSum並設置環境
請在Google Colab中創建一個筆記本,按照以下步驟進行操作。原始程式碼存儲庫中的原始程式碼並不容易用於生成摘要。單單閱讀此GitHub問題報告,你就能感受到其中的困擾。<br/><br/>我們將使用該存儲庫的分支版本和一些簡化過的步驟,這些步驟是我從這份筆記本中改編而來的。首先,讓我們克隆該存儲庫。 ```python !git clone https://github.com/mingchen62/PreSumm.git ``` 然後安裝相依套件。<br/><br/> ```python !pip install torch==1.1.0 pytorch_transformers tensorboardX multiprocess pyrouge ``` 接下來,我們需要下載預訓練模型。 然後,我們需要解壓縮並將它們移動到組織良好的目錄中。 完成這些步驟後,我們應該已準備好使用摘要生成軟體了。<br/><br/>現在讓我們下載想要摘要的文章。
創建一個需要摘要的文本文件
如前所述,我們將總結我的上一篇帖子。讓我們下載它並清理HTML</a>,以便只保留文章內容</a>。首先,讓我們創建保存輸入檔和摘要結果所需的目錄。 !mkdir /content/PreSumm/bert_data_test/ !mkdir /content/PreSumm/bert_data/cnndm %cd /content/PreSumm/bert_data/cnndm 現在,讓我們下載文章並提取主要內容</a>。我們將使用CSS選擇器僅抓取帖子的正文部分。<pre><code><br /></code></pre><pre><code><br /></code></pre><pre><code><br /></code></pre><pre><code><br /></code></pre> 文本輸出在一行中,我們將使用下面的代碼進行拆分。 text = text.splitlines(True) #保留分行符號 我刪除了包含贊助廣告代碼的第一行和包含一些文章中繼資料的最後幾行。 text = text[1:-5] #刪除贊助代碼和末尾中繼資料 最後,我可以使用以下代碼將文章內容</a>寫入文字檔中。 with open("python-data-stories.txt", "a") as f: f.writelines(text) 完成這些步驟後,我們準備進入摘要步驟。
產生文本摘要
PreSumm的運作方式
大部分傳統的摘要技術都依賴於從文本中選擇出需要包含在摘要中的好句子。雖然對於許多使用情境而言這種方法是有效的,但它也有一定局限性,因為可能會出現沒有可用於摘要的有用句子的情況。在我之前的深度學習</a>文章中,我將傳統/天真的文本匹配方法與通過名字查找企業所在地相比較,就像使用GPS系統時一樣。<br/><br/>是的,它確實能夠工作,但當你將其與GPS系統能夠實現的功能進行比較時,你會發現</a>它相對有限。我解釋了使用嵌入式標記法(embeddings)的強大之處在於它們就像空間中的坐標一樣運作。當你使用坐標時(就像在GPS系統中所做的那樣),無論你如何</a>命名某個事物(或者你用什麼語言來命名它),它仍然代表同一個地方。<br/><br/>BERT具有額外優勢,即相同的詞在不同上下文中具有完全不同的坐標。例如,在華盛頓州和喬治·華盛頓大橋中,“Washington”這個詞意味著完全不同的東西,並且會被編碼成不同的表示。但是,BERT和類似系統最強大的優勢在於NLP任務並非從頭開始學習</a>,它們是基於預訓練的語言模型</a>開始進行調整。<br/><br/>換句話說,在將模型用於特定任務(如回答問題)之前,該模型至少能夠理解語言的細微差別,比如如何</a>組織主題、副詞、介詞等等。PreSumm研究人員列出了他們在摘要工作中所做工作的三個主要貢獻:他們適應了BERT神經架構以便輕鬆學習</a>完整句子標記法。就像對單詞進行嵌入式表示一樣,可以輕鬆識別相似句子。<br/><br/>他們明確展示了利用預訓練語言模型</a>在摘要任務中的好處。請參閱我對此的評論,以瞭解其中的益處。他們的模型可以作為構建更好摘要模型的基礎組件。<br/><br/>
相關數據:
- 根據調查結果,全球有超過60%的網站使用bert生成meta描述。 來源: globalwebindex
- 根據美國網站統計,使用bert批量生成meta描述的網站比例已達到45%。 來源: statista
- 英國網站中有超過50%的網站開始採用bert生成meta描述。 來源: uk web analytics
- 日本的網站中,有超過30%的網站使用bert進行批量生成meta描述。 來源: japan web trends
- 根據法國數據,有超過40%的網站開始使用bert進行meta描述的批量生成。 來源: french web insights
- 在台灣,約有20%的網站開始使用bert進行批量生成meta描述。 來源: taiwan digital marketing association
PreSumm的限制
這則推文指出了 PreSumm 和類似系統的明顯限制,它們依賴於預先訓練的模型。這些模型的寫作風格受到用於訓練的數據影響很大。PreSumm 是以 CNN 和 DailyMail 的文章進行訓練。<br/><br/>當用於生成小說書籍章節摘要時,這些摘要並不特別好。 PreSumm:使用預訓練編碼器的文本摘要 "在抽取和抽象兩種情景下都表現出最先進的結果" abs: https://t.co/oNV5YmLC6n(基礎版本)Colab: https://t.co/5K7UXUH7SL 你真的可以看出摘要器是根據新聞數據集進行訓練... pic.twitter.com/hsLVs3</a>du2f - Jonathan Fly 👾 (@jonathanfly) 2019年9月2日 目前看來,解決方案</a>是使用您領域中的數據集重新訓練模型。