2015-04-24 209 views
0

我目前正在NLP/IR中執行一個java項目,並且對此很新。 該項目由一個包含大約1000個文檔的集合組成,其中每個文檔包含大約100個單詞,其結構爲包含具有術語頻率的單詞。我想根據文檔(來自集合)找到類似的文檔。比較文檔 - 文檔相似性

使用TF-IDF,爲查詢(給定文檔)和集合中的每個其他文檔計算tf-idf,然後將這些值作爲具有餘弦相似度的矢量進行比較。這可以讓他們的相似性有所洞察嗎?或者因爲大的查詢(文檔)而不合理? 還有其他相似性措施可以更好嗎?

感謝您的幫助

回答

1

基於TF-IDF相似,通常使用餘弦來比較矢量代表的查詢條件,一組表示文檔的TF-IDF值向量,是一種常見的方法來計算「相似性」。

請注意,「相似性」是一個非常通用的術語。在IR領域,您通常會說「相關性」。文本可以在很多層面上相似:使用相同的語言,使用相同的字符,使用相同的詞語,談論同一個人,使用類似複雜的語法結構等等 - 因此,有很多措施。在網絡上搜索文本相似性可以找到許多出版物,但也可以找到實施不同措施的開源框架和庫。

今天,「語義相似性」比傳統的基於關鍵詞的紅外模型吸引更多的興趣。如果這是您感興趣的領域,您可以查看2012年至2015年的SemEval共享任務的結果。

+0

感謝您的回答!我瞭解你提到的不同「類型」的相似性。如果我願意與TF-IDF一起使用餘弦相似方法。我只是將其中一個文檔用作其餘集合的查詢(除了同一個文檔)?或者它有其他方法嗎? – user3930642

+0

查詢通常較短,而文檔通常較長。在比較文件時,您可能想要比較它們的TF-IDF載體。但是,當您將完整文檔作爲查詢提交給IR系統時,它可能會將其視爲一包字(TF = 1,IDF = 1,用於包中的所有單詞) - 所以您可能不應該那樣做。 – rec

1

如果你想要使用TF-IDF比較兩個文件,你可以這樣做。由於您提到每個文檔包含100個單詞,因此最差的情況下可能會有1000 * 100個獨特單詞。所以,即時假設你的向量建立在所有獨特的單詞上(因爲所有文檔都應該用相同的維度表示)。如果沒有。的獨特單詞太高,你可以嘗試使用一些降維技術來減小尺寸(如PCA)。但是你想要做的是正確的,你總是可以比較這樣的文檔來找到文檔之間的相似性。

如果您希望在語義上更加相似,您應該使用LDA(主題建模)類型技術來查看。