正如我剛纔所知,simhash和minhash可用於此任務。但是所有這些算法都必須遍歷整個文本數據庫,這將非常可靠。 有沒有可以加速任務的優化或其他算法? 我所想到的就是將文本數據庫分成幾個部分,並將兩兩相似性並行。我的文本數據庫有大約10億條記錄。如何檢測大數據上的相似文字?
0
A
回答
1
您必須遍歷整個數據庫一次(10億條記錄)。
minhash和simhash的好處是,您不必單獨比較每個可能的對,看看它們是否相似(大概500個可能的配對)。
將數據庫拆分爲多個部分不會有幫助;你會簡單地錯過一些相似之處。如果記錄自然落入組中,您知道它們之間不存在任何相似性(例如,如果您有兩種非常不同的記錄類型,它們彼此從不相似,則可以分別對待它們以進行相似性檢測) 。
simhash和minhash都可以受益於分佈式計算。生成散列可以儘可能多地分發。如果你願意的話,散列的存儲可以用map/reduce拆分,但對於simhash你可能不需要它,因爲它足夠緊湊以適應標準機器的主內存。
Simhash只能找到非常相似的相似性對,而且它經常需要一點點調整才能很好地工作。如果你想找到更寬鬆的相似之處,可以使用一個更寬容的minhash變體。我建議與LSH一起檢查superminhash。 Superminhash是快速生成哈希,但可能更重要的是它實現了更好的精度,因此需要存儲更少的哈希值。 LSH將哈希分組爲條帶,以便您不會比較單個哈希值;你一次比較整個樂隊。這兩種技術意味着需要更少的查詢來查找單獨的共享哈希(或後者情況下的波段),特別是LSH意味着需要爲每個單獨的查詢處理更少的結果。這應該會讓你大幅加速。
相關問題
- 1. 如何檢測數據的「相似性」
- 2. 在大型數據集中檢測重複/相似的文本?
- 3. 大數據集上的餘弦相似
- 4. 如何使用phasher檢測數據庫中的相似圖像?
- 5. 檢測字符串中的相似性
- 6. Java程序檢查相似的數字
- 7. 如何檢測兩個字符串/字中的百分比相似度PHP
- 8. 用於測試數據的相似文本塊
- 9. Python Pandas比較2大型文本數據框的相似性
- 10. 檢查文本數據之間的相似度
- 11. excel如何檢測數字
- 12. 檢測字符串的相似性(緩慢)
- 13. 檢查不同大小圖像上的相似度
- 14. 圖片相似度檢測與TensorFlow
- 15. 檢測郵寄地址相似度
- 16. 檢測與Facebook相似JavaScript API + iFrame
- 17. 如何在上傳之前檢測視頻的文件大小?
- 18. 如何檢測用戶上傳的文件是否大於post_max_size?
- 19. git如何檢測類似的文件,因爲它的重命名檢測?
- 20. 如何讀取具有相似數字的文件名?
- 21. RewriteRule檢測大於9的數字
- 22. 檢測兩個視頻文件中的相似度
- 23. 如何檢測兩個句子是否相似?
- 24. 如何使用.Net或SQL Server檢測相似性
- 25. 如何檢測兩幅圖像是否相似?
- 26. 在C++中檢查文件的存在,大小和相似性
- 27. 如何檢測Java字節碼中的數組大小(FindBugs)
- 28. 如何有效識別大型數據集中的相似但不相同的字符串?
- 29. 檢測數據框中高度相似但不一定精確重複的行
- 30. 如何檢查字符串的相似性
我使用mongodb來存儲文本。有沒有關於mongodb的東西可以幫助減少遍歷整個數據庫的負載,例如預先存儲文本的哈希碼,這些哈希碼在我的試用之後幫助不大。 –
您必須遍歷數據庫至少一次以執行任何有用的操作。 –
@Juan Lopes,謝謝,我已經將程序遷移到了分佈式計算的火花上,並且運行良好。 –