2017-03-07 61 views
3

我有一個文檔集合,每個文檔都隨着時間的推移而迅速增長。任務是在任何固定的時間找到類似的文件。我有兩個可能的方法:文檔相似性:向量嵌入與Tf-Idf性能?

  1. 載體包埋(word2vec,手套或fasttext),平均超過字矢量的文檔中,並且使用餘弦相似性。

  2. 袋字:tf-idf或其變體,如BM25。

其中之一會產生明顯更好的結果嗎?有人對文檔相似性進行了tf-idf與平均word2vec的定量比較嗎?

是否有另一種方法,允許在添加更多文本時動態優化文檔的矢量?

回答

2

您必須嘗試一下:答案可能因您的語料庫和應用程序特定的'相似性'知覺而異。有效性可能會因典型文檔長度而異,所以如果「隨着時間快速增長」也意味着「長時間增長」,這可能會大大影響隨着時間的推移發生的變化(需要對較長文檔進行調整)。

還要注意'Paragraph Vectors' - 其中一個向量像一個單詞向量一起訓練以表示一個文本範圍 - 可能會勝過簡單的單詞平均向量,作爲相似性/分類的輸入任務。 (許多引用'Doc2Vec'的具體意思是'段落矢量',儘管術語'Doc2Vec'有時也用於將文檔轉換爲單個矢量的任何其他方式,如簡單平均的單詞矢量。)

您可能還想看看「Word Mover's Distance」(WMD),這是兩個使用單詞向量的文本之間的相似度度量,但不是通過任何簡單的平均值。 (但是,計算起來可能很昂貴,尤其是對於較長的文檔。)對於分類,最近有一個名爲「Supervised Word Mover's Distance」的改進,它重新調整/轉換單詞向量,使它們對已知類別更敏感。如果有足夠的評估/調整數據來確定哪些文檔應該比其他文檔更接近,則可能會將類似技術應用於通用相似性任務。

0

您也可以考慮嘗試Jaccard相似度,它使用基本集合代數來確定兩個文檔中的語言重疊(儘管它與BOW方法有些類似)。一個很好的介紹可以找到here

6
  1. doc2vec or word2vec?

根據文章,doc2vec或paragraph2vec的性能對於短文檔而言很差。 [學習非常短文本的語義相似度,2015,IEEE]

  1. 短文檔...?

如果要比較短文檔之間的相似性,可能需要通過word2vec矢量化文檔。

  1. 如何構造?

例如,您可以使用tf-idf構造具有加權平均向量的文檔向量。

  • 相似性度量
  • 此外,我建議使用TS-β而不是餘弦或歐幾里得爲相似性。

    請參閱以下文章或下面的github中的摘要。

    https://github.com/taki0112/Vector_Similarity

    「測量相似度在文檔和文檔聚類的混合幾何方法」謝謝