簡體   English   中英

是否可以使用 Google BERT 計算兩個文本文檔之間的相似度?

[英]Is it possible to use Google BERT to calculate similarity between two textual documents?

是否可以使用 Google BERT 計算兩個文本文檔之間的相似度? 據我了解,BERT 的輸入應該是有限大小的句子。 一些作品使用 BERT 來計算句子的相似度,例如:

https://github.com/AndriyMulyar/semantic-text-similarity

https://github.com/beekbin/bert-cosine-sim

是否有 BERT 的實現來將其用於大型文檔而不是句子作為輸入(具有數千個單詞的文檔)?

BERT 沒有經過訓練以確定一個句子是否跟在另一個句子之后。 這只是GLUE 任務之一,還有更多任務 所有 GLUE 任務(和強力膠)都被 ALBERT 淘汰了。

BERT(和 Albert)是自然語言理解領域的絕對最先進的技術。 Doc2Vec 並沒有接近。 BERT 不是詞袋方法。 它是一個基於 Transformer 的雙向注意力編碼器,它是 Google Brain 論文Attention is All you Need的化身。 另請參閱 Transformer 模型的此可視化細分

這是一種看待自然語言的全新方式,它不使用 RNN 或 LSTM 或 tf-idf 或任何這些東西。 我們不再將單詞或文檔轉換為向量。 手套:使用 LSTM進行單詞表示的全局向量很舊。 Doc2Vec 是舊的。

BERT 非常強大——就像通過圖靈測試一樣強大。 看一眼

看看剛剛出來的superGLUE 滾動到底部,看看這些任務有多瘋狂。 這就是 NLP 的所在。

好的,既然我們已經放棄了 tf-idf 是最先進的想法 - 您想獲取文檔並查看它們的相似性嗎? 我會在 Databricks 上分兩層使用 ALBERT:

  1. 執行提取或抽象摘要: https : //pypi.org/project/bert-extractive-summarizer/ (注意這些文本文檔有多大 - 並將您的文檔縮減為摘要。

  2. 在單獨的步驟中,獲取每個摘要並執行第 3 頁GLUE 中的 STS-B 任務

現在,我們在這里談論絕對最前沿的技術(Albert 在最近幾個月才出現)。 你需要非常熟練才能通過這個,但它可以做到,我相信你!!

BERT 是一個句子表示模型。 它被訓練來預測句子中的單詞並決定兩個句子是否在文檔中緊隨其后,即嚴格在句子級別。 此外,BERT 需要關於輸入長度的二次內存,這在文檔中是不可行的。

平均詞嵌入以獲得句子表示是很常見的做法。 你可以用 BERT 嘗試同樣的事情,並在文檔中的句子上平均來自 BERT 的 [CLS] 向量。

有一些文檔級嵌入。 例如doc2vec是一個常用的選項。

據我所知,在文檔級別,基於頻率的向量,例如tf-idf (在scikit-learn 中有很好的實現)仍然接近最先進的技術,所以我會毫不猶豫地使用它。 或者至少值得嘗試看看它與嵌入的比較。

要添加到@jindřich 的答案中,BERT 旨在查找句子中遺漏的單詞並預測下一個句子。 基於詞嵌入的 doc2vec 仍然是衡量文檔之間相似度的好方法。 如果您想更深入地了解為什么每個最佳模型都不能成為用例的最佳選擇,請閱讀這篇文章,其中清楚地解釋了為什么不是每個最先進的模型都適合某項任務。

呀。 您只需獨立完成每個部分。 對於總結,您幾乎不需要做太多事情。 只需查看 pypi 的匯總,您就會有幾個包。 甚至不需要訓練。 現在對於句子到句子的相似性,有一個相當復雜的方法來獲取損失,但它在 GLUE 網站上有詳細說明。 它被認為是挑戰的一部分(滿足指標)。 確定距離(sts)並非易事,我認為他們稱之為“連貫性”,但我不確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM