2009-12-15 30 views
13

Có ai gặp chức năng simhash được triển khai trong Java không?Thực hiện SimHash trong Java?

Tôi đã tìm kiếm, nhưng không thể tìm thấy gì.

+2

+1. Đã không nghe nói về điều này trước đây. Chuỗi thú vị. – z5h

+0

Có, chúng có thể khá hữu ích - không giống như băm bình thường, cố gắng tạo ra một không gian băm nhỏ được tạo ra cho một chuỗi các chuỗi tương tự (tức là tạo ra các băm khác nhau). . – Joel

+0

Liên kết đó cho biết "băm từng tính năng sử dụng thuật toán băm 32 bit bình thường"; tôi nghi ngờ rằng trong Java, sử dụng [String's hashCode] của String (http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#hashCode%28%29) sẽ không phải là một động thái tốt cho rằng, vì đối với chuỗi hai ký tự, nó sẽ chuyển thành 's [0] * 31 + s [1]', chỉ là số 20 bit và sẽ có rất nhiều số 0 ở phần trên của 20 bit đó nếu hai ký tự là ASCII. Một lựa chọn tốt hơn có thể là một cái gì đó như '(((dài) s [0]) + 1) * (((dài) ((~ s [0]) & 0xffff)) + 1) -1'. –

Trả lời

-2

Theo số this page, bạn nên hỏi nhà phát triển BibSonomy.

+0

Nó chỉ là có một đề cập đến một lớp học trên trang đó được gọi là SimHash.java, hoặc hiện rằng lớp học thực sự thực hiện thuật toán simhash như được định nghĩa trong liên kết trong câu hỏi? – Joel

3

btw. Có vẻ như Google có patented thuật toán. Nếu bạn ở Mỹ, cạnh tranh thành công với Google và không có danh mục đầu tư của chính cha mẹ, thì đừng nói với họ rằng bạn đang sử dụng nó.

An thực hiện trong C

http://dsrg.mff.cuni.cz/~holub/sw/shash/


[Removed không còn phù hợp BibSonomy văn]

+0

Vâng, nó được cấp bằng sáng chế bởi G. – Joel

+1

dựa trên nghiên cứu từ khi tôi viết bài đăng đó có vô số biến thể trên bản phác thảo/simhash không cụ thể là việc thực hiện charikar. nếu bạn nhìn vào các tài liệu tham khảo trong bài báo thực tế, bạn có thể truy tìm chúng. –

1

đây bạn có thể tìm thấy mã nguồn java đầy đủ. Nó rất đơn giản. Bản trình diễn cũng được cung cấp. http://aneurone.blogspot.com/2012/09/simhash.html

+2

Liên kết đơn lẻ là [được coi là câu trả lời kém] (http://stackoverflow.com/faq#deletion) vì nó vô nghĩa bởi chính nó và tài nguyên đích không được đảm bảo sẽ còn sống trong tương lai. Hãy cố gắng bao gồm ít nhất tóm tắt thông tin bạn đang liên kết đến (như tôi đã làm). – j0k

Các vấn đề liên quan