As i just know, simhash and minhash are available on this task. But all those algorithms have to traverse the whole text database which will be quite aweful. Is there any optimization or other algorithm that can accelebrate the task? All I come up with is slicing the text database into several parts and getting pairwise similarity parallelly. My text database has about 1 billion records.
How to detect the similar text on big data?
1.2k Views Asked by Leo Zhao At
1
There are 1 best solutions below
Related Questions in TEXT
- Delete the extra space after special character in all the lines of text file
- Apply gaussian filter on text
- text show and hide with button php/js
- Get text from a section of a pdf page with IcePdf
- load word file (.docx) in richtextbox
- Display a specific line in a text file - android/java
- how to change text direction to the right slide of switch in android?
- C language - Read specific data from text file
- Read text file from specific position and store in two arrays
- How to animate text
- Detect repetition in text string / copied text
- Use MATLAB's webread to login to website and extract text
- LWJGL Drawing colored text to the screen issue
- Hide part of text temporarily, show after user clicks certain element
- Reading text file in java using scanner
Related Questions in SIMILARITY
- R Pairwise comparison of matrix columns ignoring empty values
- MinHashing vs SimHashing
- Check the similarity between two words with NLTK with Python
- PostgreSQL multiple pg_trgm similarity score sub-query
- How to group sets by similarity in contained elements
- nltk similarity performance issue?
- Track multiple values from a method
- Lucene scoring, precision about vector space model
- SQLite combine values of similar records into one
- trying to understand LSH through the sample python code
- Techniques for Similarity matching to find similar customers with non-textual attributes
- SQL Server Record Linkage After String Matching
- Compute mean squared, absolute deviation and custom similarity measure - Python/NumPy
- Measure similarity between 2 vectors
- How word2vec output vectors are used to compute the similarities?
Related Questions in MINHASH
- MinHashing vs SimHashing
- How to calculate similarity of two texts with Jaccard similarity of two bag via MinHash?
- Mahout minhash org.apache.hadoop.io.LongWritable cannot be cast to org.apache.hadoop.io.Text
- Relationship between (1) hash function, (2) length of signature and (3) jaccard similarity?
- LSH implementation for finding clusters
- Is the number of rows always 1 in each band in the Spark implementation of MinHashLSH
- One-hot encoding minHashed genomes
- Faster implementation of LSH (AND-OR)
- Clarification needed about min/sim hashing + LSH
- Should we consider two sets to be similar if their rows contain the same hashes but in different order?
- Why does my query using a MinHash analyzer fail to retrieve duplicates?
- Generate sparse vector for all the column values in spark dataframe
- Transform a dataframe for the minHashLSH in spark
- Minhashing on Strings with K-length
- Set distance as similarity metric for MinHashing algorithm
Related Questions in SIMHASH
- MinHashing vs SimHashing
- calculate pairwise simhash "distances"
- SimHash function details
- Hash function that maps similar inputs to similar outputs?
- SimHash implementation in Java?
- Clarification needed about min/sim hashing + LSH
- MongoDB support search Bitwise XOR and Bit Count?
- Make a Sim Hash (Locality Sensitive Hashing) Algorithm more accurate?
- Choosing between SimHash and MinHash for a production system
- Similarity Hash function(simhash)
- How to detect the similar text on big data?
- how to allot index number using SimhashIndex() to a document dataset?
- Pandas: matrix calculation on values
- How to compare the similarity of documents with Simhash algorithm?
- Check which string is approximately contained in the other string at scale
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
You must traverse the entire database once (1 billion records).
The benefit of minhash and simhash is that you don't have to individually compare every possible pair to see if they are similar (roughly 500 quadrillion possible pairs).
Splitting the database into multiple parts is not going to help; you will simply miss some similarities. Splitting is only sensible if the records fall naturally into groups that you know cannot have any similarities between them (for instance, if you have two very distinct types of record that are never similar to each other, you can treat them separately for similarity detection).
Both simhash and minhash can benefit from distributed computing. Generating hashes can be distributed as much as you like. Storage of hashes can be split with map/reduce if you like, though for simhash you probably won't need this as it's compact enough to fit in a fairly standard machine's main memory.
Simhash can only find similarity pairs that are very closely similar, and it often needs a fair bit of tuning to work really well. If you want to find looser similarities, use one of the minhash variants, which are more forgiving. I recommend checking out superminhash, in conjunction with LSH. Superminhash is fast generating hashes, but possibly more importantly it achieves better precision, so fewer hashes need to be stored. LSH groups the hashes into bands so that you don't compare individual hashes; you compare an entire band at a time. Both these techniques mean fewer queries are needed to find individual shared hashes (or bands, in the latter case), and LSH in particular means fewer results will need to be processed for each individual query. This should give you substantial speedup.